')
@@ -319,7 +322,7 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin,
mock_course_overview.return_value = CourseOverviewFactory.create(start=self.TOMORROW, id=course_key)
mock_course_runs.return_value = [
{
- 'key': six.text_type(course_key),
+ 'key': str(course_key),
'enrollment_end': str(self.TOMORROW),
'pacing_type': 'instructor_paced',
'type': 'verified',
@@ -327,7 +330,7 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin,
}
]
mock_pseudo_session.return_value = {
- 'key': six.text_type(course_key),
+ 'key': str(course_key),
'type': 'verified'
}
response = self.client.get(self.path)
@@ -404,7 +407,7 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin,
start=self.TOMORROW, end=self.THREE_YEARS_FROM_NOW, self_paced=True, enrollment_end=self.THREE_YEARS_AGO
)
mock_course_overview.return_value = mocked_course_overview
- course_enrollment = CourseEnrollmentFactory(user=self.user, course_id=six.text_type(mocked_course_overview.id))
+ course_enrollment = CourseEnrollmentFactory(user=self.user, course_id=str(mocked_course_overview.id))
mock_course_runs.return_value = [
{
'key': str(mocked_course_overview.id),
@@ -468,7 +471,7 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin,
start=self.TOMORROW, self_paced=True, enrollment_end=self.TOMORROW
)
mock_course_overview.return_value = mocked_course_overview
- course_enrollment = CourseEnrollmentFactory(user=self.user, course_id=six.text_type(mocked_course_overview.id))
+ course_enrollment = CourseEnrollmentFactory(user=self.user, course_id=str(mocked_course_overview.id))
mock_course_runs.return_value = [
{
'key': str(mocked_course_overview.id),
@@ -480,7 +483,7 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin,
]
entitlement = CourseEntitlementFactory(user=self.user, enrollment_course_run=course_enrollment)
program = ProgramFactory()
- program['courses'][0]['course_runs'] = [{'key': six.text_type(mocked_course_overview.id)}]
+ program['courses'][0]['course_runs'] = [{'key': str(mocked_course_overview.id)}]
program['courses'][0]['uuid'] = entitlement.course_uuid
mock_get_programs.return_value = [program]
response = self.client.get(self.path)
@@ -503,7 +506,7 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin,
start=self.TOMORROW, self_paced=True, enrollment_end=self.TOMORROW
)
mock_course_overview.return_value = mocked_course_overview
- course_enrollment = CourseEnrollmentFactory(user=self.user, course_id=six.text_type(mocked_course_overview.id), created=self.THREE_YEARS_AGO) # lint-amnesty, pylint: disable=line-too-long
+ course_enrollment = CourseEnrollmentFactory(user=self.user, course_id=str(mocked_course_overview.id), created=self.THREE_YEARS_AGO) # lint-amnesty, pylint: disable=line-too-long
mock_course_runs.return_value = [
{
'key': str(mocked_course_overview.id),
@@ -515,7 +518,7 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin,
]
entitlement = CourseEntitlementFactory(user=self.user, enrollment_course_run=course_enrollment, created=self.THREE_YEARS_AGO) # lint-amnesty, pylint: disable=line-too-long
program = ProgramFactory()
- program['courses'][0]['course_runs'] = [{'key': six.text_type(mocked_course_overview.id)}]
+ program['courses'][0]['course_runs'] = [{'key': str(mocked_course_overview.id)}]
program['courses'][0]['uuid'] = entitlement.course_uuid
mock_get_programs.return_value = [program]
response = self.client.get(self.path)
@@ -536,7 +539,7 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin,
course_enrollment = CourseEnrollmentFactory(user=self.user, course_id=course_overview.id)
entitlement = CourseEntitlementFactory(user=self.user, enrollment_course_run=course_enrollment)
course_runs = [{
- 'key': six.text_type(course_overview.id),
+ 'key': str(course_overview.id),
'uuid': entitlement.course_uuid
}]
mock_get_course_runs.return_value = course_runs
@@ -722,7 +725,7 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin,
ItemFactory.create(
category='video',
parent_location=course.location,
- display_name='Video {0}'.format(six.text_type(number))
+ display_name='Video {}'.format(str(number))
).location
for number in range(5)
]
@@ -823,7 +826,7 @@ class StudentDashboardTests(SharedModuleStoreTestCase, MilestonesTestCaseMixin,
ItemFactory.create(
category='video',
parent_location=course.location,
- display_name='Video {0}'.format(six.text_type(number))
+ display_name='Video {}'.format(str(number))
).location
for number in range(5)
]
diff --git a/common/djangoapps/student/tests/tests.py b/common/djangoapps/student/tests/tests.py
index ecee011dde..f207c96cb2 100644
--- a/common/djangoapps/student/tests/tests.py
+++ b/common/djangoapps/student/tests/tests.py
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
"""
Miscellaneous tests for the student app.
"""
@@ -7,6 +6,7 @@ Miscellaneous tests for the student app.
import logging
import unittest
from datetime import datetime, timedelta
+from unittest.mock import Mock, patch
from urllib.parse import quote
import ddt
@@ -18,13 +18,26 @@ from django.test import TestCase, override_settings
from django.test.client import Client
from django.urls import reverse
from markupsafe import escape
-from mock import Mock, patch
from opaque_keys.edx.keys import CourseKey
from opaque_keys.edx.locations import CourseLocator
from pyquery import PyQuery as pq
from common.djangoapps.course_modes.models import CourseMode
from common.djangoapps.course_modes.tests.factories import CourseModeFactory
+from common.djangoapps.student.helpers import _cert_info, process_survey_link
+from common.djangoapps.student.models import (
+ AnonymousUserId,
+ CourseEnrollment,
+ LinkedInAddToProfileConfiguration,
+ UserAttribute,
+ anonymous_id_for_user,
+ unique_id_for_user,
+ user_by_anonymous_id
+)
+from common.djangoapps.student.tests.factories import CourseEnrollmentFactory, UserFactory
+from common.djangoapps.student.views import complete_course_mode_info
+from common.djangoapps.util.model_utils import USER_SETTINGS_CHANGED_EVENT_NAME
+from common.djangoapps.util.testing import EventTestMixin
from lms.djangoapps.certificates.models import CertificateStatuses
from lms.djangoapps.certificates.tests.factories import GeneratedCertificateFactory
from lms.djangoapps.verify_student.tests import TestVerificationBase
@@ -34,20 +47,6 @@ from openedx.core.djangoapps.content.course_overviews.tests.factories import Cou
from openedx.core.djangoapps.programs.tests.mixins import ProgramsApiConfigMixin
from openedx.core.djangoapps.site_configuration.tests.mixins import SiteMixin
from openedx.core.djangolib.testing.utils import CacheIsolationTestCase, skip_unless_lms
-from common.djangoapps.student.helpers import _cert_info, process_survey_link
-from common.djangoapps.student.models import (
- CourseEnrollment,
- LinkedInAddToProfileConfiguration,
- UserAttribute,
- AnonymousUserId,
- anonymous_id_for_user,
- unique_id_for_user,
- user_by_anonymous_id
-)
-from common.djangoapps.student.tests.factories import CourseEnrollmentFactory, UserFactory
-from common.djangoapps.student.views import complete_course_mode_info
-from common.djangoapps.util.model_utils import USER_SETTINGS_CHANGED_EVENT_NAME
-from common.djangoapps.util.testing import EventTestMixin
from xmodule.modulestore.tests.django_utils import ModuleStoreEnum, ModuleStoreTestCase, SharedModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory, check_mongo_calls
@@ -67,7 +66,7 @@ class CourseEndingTest(ModuleStoreTestCase):
assert process_survey_link(link1, user) == link1
link2 = "http://www.mysurvey.com?unique={UNIQUE_ID}"
- link2_expected = "http://www.mysurvey.com?unique={UNIQUE_ID}".format(UNIQUE_ID=user_id)
+ link2_expected = f"http://www.mysurvey.com?unique={user_id}"
assert process_survey_link(link2, user) == link2_expected
@patch.dict('django.conf.settings.FEATURES', {'CERTIFICATES_HTML_VIEW': False})
@@ -217,7 +216,7 @@ class DashboardTest(ModuleStoreTestCase, TestVerificationBase):
ENABLED_SIGNALS = ['course_published']
def setUp(self):
- super(DashboardTest, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
+ super().setUp()
self.course = CourseFactory.create()
self.user = UserFactory.create(username="jack", email="jack@fake.edx.org", password='test')
self.client = Client()
@@ -240,7 +239,7 @@ class DashboardTest(ModuleStoreTestCase, TestVerificationBase):
if mode in ['professional', 'no-id-professional']:
self.assertContains(response, 'class="course professional"')
else:
- self.assertContains(response, 'class="course {0}"'.format(mode))
+ self.assertContains(response, f'class="course {mode}"')
self.assertContains(response, value)
@patch.dict("django.conf.settings.FEATURES", {'ENABLE_VERIFIED_CERTIFICATES': True})
@@ -277,7 +276,7 @@ class DashboardTest(ModuleStoreTestCase, TestVerificationBase):
# Audit mode does not have a banner. Assert no banner element.
assert pq(response.content)('.sts-enrollment').length == 0
else:
- self.assertNotContains(response, "class=\"course {0}\"".format(mode))
+ self.assertNotContains(response, f"class=\"course {mode}\"")
self.assertNotContains(response, value)
@patch.dict("django.conf.settings.FEATURES", {'ENABLE_VERIFIED_CERTIFICATES': False})
@@ -325,7 +324,7 @@ class DashboardTest(ModuleStoreTestCase, TestVerificationBase):
self.course.start = datetime.now(pytz.UTC) - timedelta(days=2)
self.course.end = datetime.now(pytz.UTC) - timedelta(days=1)
- self.course.display_name = u"Omega"
+ self.course.display_name = "Omega"
self.course = self.update_course(self.course, self.user.id)
download_url = 'www.edx.org'
@@ -485,7 +484,7 @@ class DashboardTestsWithSiteOverrides(SiteMixin, ModuleStoreTestCase):
"""
def setUp(self):
- super(DashboardTestsWithSiteOverrides, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
+ super().setUp()
self.org = 'fakeX'
self.course = CourseFactory.create(org=self.org)
self.user = UserFactory.create(username='jack', email='jack@fake.edx.org', password='test')
@@ -541,7 +540,7 @@ class UserSettingsEventTestMixin(EventTestMixin):
Mixin for verifying that user setting events were emitted during a test.
"""
def setUp(self): # lint-amnesty, pylint: disable=arguments-differ
- super(UserSettingsEventTestMixin, self).setUp('common.djangoapps.util.model_utils.tracker') # lint-amnesty, pylint: disable=super-with-arguments
+ super().setUp('common.djangoapps.util.model_utils.tracker')
def assert_user_setting_event_emitted(self, **kwargs):
"""
@@ -568,7 +567,7 @@ class UserSettingsEventTestMixin(EventTestMixin):
class EnrollmentEventTestMixin(EventTestMixin):
""" Mixin with assertions for validating enrollment events. """
def setUp(self): # lint-amnesty, pylint: disable=arguments-differ
- super(EnrollmentEventTestMixin, self).setUp('common.djangoapps.student.models.tracker') # lint-amnesty, pylint: disable=super-with-arguments
+ super().setUp('common.djangoapps.student.models.tracker')
def assert_enrollment_mode_change_event_was_emitted(self, user, course_key, mode):
"""Ensures an enrollment mode change event was emitted"""
@@ -794,7 +793,7 @@ class ChangeEnrollmentViewTest(ModuleStoreTestCase):
"""Tests the student.views.change_enrollment view"""
def setUp(self):
- super(ChangeEnrollmentViewTest, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
+ super().setUp()
self.course = CourseFactory.create()
self.user = UserFactory.create(password='secret')
self.client.login(username=self.user.username, password='secret')
@@ -836,7 +835,7 @@ class ChangeEnrollmentViewTest(ModuleStoreTestCase):
Tests that a student that is a currently enrolled verified student cannot
accidentally change their enrollment mode
"""
- CourseEnrollment.enroll(self.user, self.course.id, mode=u'verified')
+ CourseEnrollment.enroll(self.user, self.course.id, mode='verified')
assert CourseEnrollment.is_enrolled(self.user, self.course.id)
# now try to enroll the student in the default mode:
response = self._enroll_through_view(self.course)
@@ -845,14 +844,14 @@ class ChangeEnrollmentViewTest(ModuleStoreTestCase):
self.user, self.course.id
)
assert is_active
- assert enrollment_mode == u'verified'
+ assert enrollment_mode == 'verified'
def test_change_to_default_if_verified_not_active(self):
"""
Tests that one can renroll for a course if one has already unenrolled
"""
# enroll student
- CourseEnrollment.enroll(self.user, self.course.id, mode=u'verified')
+ CourseEnrollment.enroll(self.user, self.course.id, mode='verified')
# now unenroll student:
CourseEnrollment.unenroll(self.user, self.course.id)
# check that they are verified but inactive
@@ -860,7 +859,7 @@ class ChangeEnrollmentViewTest(ModuleStoreTestCase):
self.user, self.course.id
)
assert not is_active
- assert enrollment_mode == u'verified'
+ assert enrollment_mode == 'verified'
# now enroll them through the view:
response = self._enroll_through_view(self.course)
assert response.status_code == 200
@@ -876,7 +875,7 @@ class AnonymousLookupTable(ModuleStoreTestCase):
Tests for anonymous_id_functions
"""
def setUp(self):
- super(AnonymousLookupTable, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
+ super().setUp()
self.course = CourseFactory.create()
self.user = UserFactory.create()
CourseModeFactory.create(
@@ -916,7 +915,7 @@ class AnonymousLookupTable(ModuleStoreTestCase):
assert anonymous_id == anonymous_id_for_user(self.user, self.course.id)
def test_roundtrip_with_unicode_course_id(self):
- course2 = CourseFactory.create(display_name=u"Omega Course Ω")
+ course2 = CourseFactory.create(display_name="Omega Course Ω")
CourseEnrollment.enroll(self.user, course2.id)
anonymous_id = anonymous_id_for_user(self.user, course2.id)
real_user = user_by_anonymous_id(anonymous_id)
@@ -958,14 +957,14 @@ class RelatedProgramsTests(ProgramsApiConfigMixin, SharedModuleStoreTestCase):
@classmethod
def setUpClass(cls):
- super(RelatedProgramsTests, cls).setUpClass()
+ super().setUpClass()
cls.user = UserFactory()
cls.course = CourseFactory()
cls.enrollment = CourseEnrollmentFactory(user=cls.user, course_id=cls.course.id) # pylint: disable=no-member
def setUp(self):
- super(RelatedProgramsTests, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
+ super().setUp()
self.url = reverse('dashboard')
@@ -987,7 +986,7 @@ class RelatedProgramsTests(ProgramsApiConfigMixin, SharedModuleStoreTestCase):
def expected_link_text(self, program):
"""Construct expected dashboard link text."""
- return u'{title} {type}'.format(title=program['title'], type=program['type'])
+ return '{title} {type}'.format(title=program['title'], type=program['type'])
def test_related_programs_listed(self, mock_get_programs):
"""Verify that related programs are listed when available."""
@@ -1019,7 +1018,7 @@ class RelatedProgramsTests(ProgramsApiConfigMixin, SharedModuleStoreTestCase):
def test_program_title_unicode(self, mock_get_programs):
"""Verify that the dashboard can deal with programs whose titles contain Unicode."""
- self.programs[0]['title'] = u'Bases matemáticas para estudiar ingeniería'
+ self.programs[0]['title'] = 'Bases matemáticas para estudiar ingeniería'
mock_get_programs.return_value = self.programs
response = self.client.get(self.url)
@@ -1030,7 +1029,7 @@ class UserAttributeTests(TestCase):
"""Tests for the UserAttribute model."""
def setUp(self):
- super(UserAttributeTests, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
+ super().setUp()
self.user = UserFactory()
self.name = 'test'
self.value = 'test-value'
diff --git a/common/djangoapps/student/urls.py b/common/djangoapps/student/urls.py
index 3b42642013..aafac7b1dd 100644
--- a/common/djangoapps/student/urls.py
+++ b/common/djangoapps/student/urls.py
@@ -19,7 +19,7 @@ urlpatterns = [
url(r'^change_email_settings$', views.change_email_settings, name='change_email_settings'),
- url(r'^course_run/{}/refund_status$'.format(settings.COURSE_ID_PATTERN),
+ url(fr'^course_run/{settings.COURSE_ID_PATTERN}/refund_status$',
views.course_run_refund_status,
name="course_run_refund_status"),
diff --git a/common/djangoapps/student/views/dashboard.py b/common/djangoapps/student/views/dashboard.py
index ba01a6dab2..64a01fffbe 100644
--- a/common/djangoapps/student/views/dashboard.py
+++ b/common/djangoapps/student/views/dashboard.py
@@ -62,7 +62,7 @@ from xmodule.modulestore.django import modulestore
log = logging.getLogger("edx.student")
-experiments_namespace = LegacyWaffleFlagNamespace(name=u'student.experiments')
+experiments_namespace = LegacyWaffleFlagNamespace(name='student.experiments')
def get_org_black_and_whitelist_for_site():
@@ -402,10 +402,10 @@ def _credit_statuses(user, course_enrollments):
statuses = {}
for eligibility in credit_api.get_eligibilities_for_user(user.username):
- course_key = CourseKey.from_string(text_type(eligibility["course_key"]))
+ course_key = CourseKey.from_string(str(eligibility["course_key"]))
providers_names = get_credit_provider_attribute_values(course_key, 'display_name')
status = {
- "course_key": text_type(course_key),
+ "course_key": str(course_key),
"eligible": True,
"deadline": eligibility["deadline"],
"purchased": course_key in credit_enrollments,
@@ -425,10 +425,10 @@ def _credit_statuses(user, course_enrollments):
if provider_id is None:
status["error"] = True
log.error(
- u"Could not find credit provider associated with credit enrollment "
- u"for user %s in course %s. The user will not be able to see their "
- u"credit request status on the student dashboard. This attribute should "
- u"have been set when the user purchased credit in the course.",
+ "Could not find credit provider associated with credit enrollment "
+ "for user %s in course %s. The user will not be able to see their "
+ "credit request status on the student dashboard. This attribute should "
+ "have been set when the user purchased credit in the course.",
user.id, course_key
)
else:
@@ -440,8 +440,8 @@ def _credit_statuses(user, course_enrollments):
if not status["provider_name"] and not status["provider_status_url"]:
status["error"] = True
log.error(
- u"Could not find credit provider info for [%s] in [%s]. The user will not "
- u"be able to see their credit request status on the student dashboard.",
+ "Could not find credit provider info for [%s] in [%s]. The user will not "
+ "be able to see their credit request status on the student dashboard.",
provider_id, provider_info_by_id
)
@@ -548,7 +548,7 @@ def student_dashboard(request): # lint-amnesty, pylint: disable=too-many-statem
mode.slug: mode
for mode in modes
}
- for course_id, modes in iteritems(unexpired_course_modes)
+ for course_id, modes in unexpired_course_modes.items()
}
# Check to see if the student has recently enrolled in a course.
@@ -638,7 +638,7 @@ def student_dashboard(request): # lint-amnesty, pylint: disable=too-many-statem
inverted_programs = meter.invert_programs()
urls, programs_data = {}, {}
- bundles_on_dashboard_flag = LegacyWaffleFlag(experiments_namespace, u'bundles_on_dashboard', __name__)
+ bundles_on_dashboard_flag = LegacyWaffleFlag(experiments_namespace, 'bundles_on_dashboard', __name__)
# TODO: Delete this code and the relevant HTML code after testing LEARNER-3072 is complete
if bundles_on_dashboard_flag.is_enabled() and inverted_programs and list(inverted_programs.items()):
diff --git a/common/djangoapps/student/views/management.py b/common/djangoapps/student/views/management.py
index 1f873df1f7..bbca629e83 100644
--- a/common/djangoapps/student/views/management.py
+++ b/common/djangoapps/student/views/management.py
@@ -104,7 +104,7 @@ def csrf_token(context):
token = context.get('csrf_token', '')
if token == 'NOTPROVIDED':
return ''
- return (HTML(u'
').format(Text(token)))
@@ -241,7 +241,7 @@ def course_run_refund_status(request, course_id):
return JsonResponse({'course_refundable_status': ''}, status=406)
refundable_status = course_enrollment.refundable()
- logging.info("Course refund status for course {0} is {1}".format(course_id, refundable_status))
+ logging.info(f"Course refund status for course {course_id} is {refundable_status}")
return JsonResponse({'course_refundable_status': refundable_status}, status=200)
@@ -308,7 +308,7 @@ def change_enrollment(request, check_access=True):
course_id = CourseKey.from_string(request.POST.get("course_id"))
except InvalidKeyError:
log.warning(
- u"User %s tried to %s with invalid course id: %s",
+ "User %s tried to %s with invalid course id: %s",
user.username,
action,
request.POST.get("course_id"),
@@ -317,14 +317,14 @@ def change_enrollment(request, check_access=True):
# Allow us to monitor performance of this transaction on a per-course basis since we often roll-out features
# on a per-course basis.
- monitoring_utils.set_custom_attribute('course_id', text_type(course_id))
+ monitoring_utils.set_custom_attribute('course_id', str(course_id))
if action == "enroll":
# Make sure the course exists
# We don't do this check on unenroll, or a bad course id can't be unenrolled from
if not modulestore().has_course(course_id):
log.warning(
- u"User %s tried to enroll in non-existent course %s",
+ "User %s tried to enroll in non-existent course %s",
user.username,
course_id
)
@@ -348,7 +348,7 @@ def change_enrollment(request, check_access=True):
return HttpResponse(redirect_url)
if CourseEntitlement.check_for_existing_entitlement_and_enroll(user=user, course_run_key=course_id):
- return HttpResponse(reverse('courseware', args=[six.text_type(course_id)]))
+ return HttpResponse(reverse('courseware', args=[str(course_id)]))
# Check that auto enrollment is allowed for this course
# (= the course is NOT behind a paywall)
@@ -372,7 +372,7 @@ def change_enrollment(request, check_access=True):
# funnels users directly into the verification / payment flow)
if CourseMode.has_verified_mode(available_modes) or CourseMode.has_professional_mode(available_modes):
return HttpResponse(
- reverse("course_modes_choose", kwargs={'course_id': text_type(course_id)})
+ reverse("course_modes_choose", kwargs={'course_id': str(course_id)})
)
# Otherwise, there is only one mode available (the default)
@@ -454,11 +454,11 @@ def disable_account_ajax(request):
if account_action == 'disable':
user_account.account_status = UserStanding.ACCOUNT_DISABLED
context['message'] = _("Successfully disabled {}'s account").format(username)
- log.info(u"%s disabled %s's account", request.user, username)
+ log.info("%s disabled %s's account", request.user, username)
elif account_action == 'reenable':
user_account.account_status = UserStanding.ACCOUNT_ENABLED
context['message'] = _("Successfully reenabled {}'s account").format(username)
- log.info(u"%s reenabled %s's account", request.user, username)
+ log.info("%s reenabled %s's account", request.user, username)
else:
context['message'] = _("Unexpected account status")
return JsonResponse(context, status=400)
@@ -479,7 +479,7 @@ def user_signup_handler(sender, **kwargs): # pylint: disable=unused-argument
if site:
user_signup_source = UserSignupSource(user=kwargs['instance'], site=site)
user_signup_source.save()
- log.info(u'user {} originated from a white labeled "Microsite"'.format(kwargs['instance'].id))
+ log.info('user {} originated from a white labeled "Microsite"'.format(kwargs['instance'].id))
@ensure_csrf_cookie
@@ -488,7 +488,7 @@ def activate_account(request, key):
When link in activation e-mail is clicked
"""
# If request is in Studio call the appropriate view
- if theming_helpers.get_project_root_name().lower() == u'cms':
+ if theming_helpers.get_project_root_name().lower() == 'cms':
monitoring_utils.set_custom_attribute('student_activate_account', 'cms')
return activate_account_studio(request, key)
@@ -558,7 +558,7 @@ def activate_account(request, key):
)
if should_redirect_to_authn_microfrontend() and not request.user.is_authenticated:
- url_path = '/login?account_activation_status={}'.format(activation_message_type)
+ url_path = f'/login?account_activation_status={activation_message_type}'
return redirect(settings.AUTHN_MICROFRONTEND_URL + url_path)
return redirect('dashboard')
@@ -692,7 +692,7 @@ def do_email_change_request(user, new_email, activation_key=None, secondary_emai
ace.send(msg)
except Exception:
from_address = configuration_helpers.get_value('email_from_address', settings.DEFAULT_FROM_EMAIL)
- log.error(u'Unable to send email activation link to user from "%s"', from_address, exc_info=True)
+ log.error('Unable to send email activation link to user from "%s"', from_address, exc_info=True)
raise ValueError(_('Unable to send email activation link. Please try again later.')) # lint-amnesty, pylint: disable=raise-missing-from
if not secondary_email_change_request:
@@ -838,7 +838,7 @@ def change_email_settings(request):
if optout_object:
optout_object.delete()
log.info(
- u"User %s (%s) opted in to receive emails from course %s",
+ "User %s (%s) opted in to receive emails from course %s",
user.username,
user.email,
course_id,
@@ -852,7 +852,7 @@ def change_email_settings(request):
else:
Optout.objects.get_or_create(user=user, course_id=course_key)
log.info(
- u"User %s (%s) opted out of receiving emails from course %s",
+ "User %s (%s) opted out of receiving emails from course %s",
user.username,
user.email,
course_id,