diff --git a/cms/djangoapps/contentstore/views/import_export.py b/cms/djangoapps/contentstore/views/import_export.py index d519a608fe..aa48d8baff 100644 --- a/cms/djangoapps/contentstore/views/import_export.py +++ b/cms/djangoapps/contentstore/views/import_export.py @@ -163,7 +163,7 @@ def _write_chunk(request, courselike_key): if size < int(content_range['start']): _save_request_status(request, courselike_string, -1) log.warning( - "Reported range %s does not match size downloaded so far %s", + u"Reported range %s does not match size downloaded so far %s", content_range['start'], size ) diff --git a/cms/djangoapps/contentstore/views/tests/test_videos.py b/cms/djangoapps/contentstore/views/tests/test_videos.py index 9f97147021..d4f91dc461 100644 --- a/cms/djangoapps/contentstore/views/tests/test_videos.py +++ b/cms/djangoapps/contentstore/views/tests/test_videos.py @@ -982,7 +982,10 @@ class VideoImageTestCase(VideoUploadTestBase, CourseTestCase): 'width': settings.VIDEO_IMAGE_MIN_WIDTH, 'height': settings.VIDEO_IMAGE_MIN_HEIGHT - 10 }, - 'Recommended image resolution is {image_file_max_width}x{image_file_max_height}. The minimum resolution is {image_file_min_width}x{image_file_min_height}.'.format( + ( + u'Recommended image resolution is {image_file_max_width}x{image_file_max_height}. ' + u'The minimum resolution is {image_file_min_width}x{image_file_min_height}.' + ).format( image_file_max_width=settings.VIDEO_IMAGE_MAX_WIDTH, image_file_max_height=settings.VIDEO_IMAGE_MAX_HEIGHT, image_file_min_width=settings.VIDEO_IMAGE_MIN_WIDTH, @@ -994,7 +997,10 @@ class VideoImageTestCase(VideoUploadTestBase, CourseTestCase): 'width': 1200, # not 16:9, but width/height check first. 'height': 100 }, - 'Recommended image resolution is {image_file_max_width}x{image_file_max_height}. The minimum resolution is {image_file_min_width}x{image_file_min_height}.'.format( + ( + u'Recommended image resolution is {image_file_max_width}x{image_file_max_height}. ' + u'The minimum resolution is {image_file_min_width}x{image_file_min_height}.' + ).format( image_file_max_width=settings.VIDEO_IMAGE_MAX_WIDTH, image_file_max_height=settings.VIDEO_IMAGE_MAX_HEIGHT, image_file_min_width=settings.VIDEO_IMAGE_MIN_WIDTH, diff --git a/cms/envs/devstack.py b/cms/envs/devstack.py index 6bc302c61e..938e2c72d8 100644 --- a/cms/envs/devstack.py +++ b/cms/envs/devstack.py @@ -139,6 +139,8 @@ REQUIRE_DEBUG = DEBUG ########################### OAUTH2 ################################# OAUTH_OIDC_ISSUER = 'http://127.0.0.1:8000/oauth2' +# pylint: disable=unicode-format-string + JWT_AUTH.update({ 'JWT_SECRET_KEY': 'lms-secret', 'JWT_ISSUER': 'http://127.0.0.1:8000/oauth2', @@ -166,6 +168,8 @@ JWT_AUTH.update({ ), }) +# pylint: enable=unicode-format-string + IDA_LOGOUT_URI_LIST = [ 'http://localhost:18130/logout/', # ecommerce 'http://localhost:18150/logout/', # credentials diff --git a/common/test/acceptance/pages/studio/video/video.py b/common/test/acceptance/pages/studio/video/video.py index a61deb7a1d..686df4f088 100644 --- a/common/test/acceptance/pages/studio/video/video.py +++ b/common/test/acceptance/pages/studio/video/video.py @@ -439,7 +439,7 @@ class VideoComponentPage(VideoPage): self.q(css='#{}'.format(field_id)).fill(field_value) elif field_type == 'select': - self.q(css='select[name="{0}"] option[value="{1}"]'.format(field_name, field_value)).first.click() + self.q(css=u'select[name="{0}"] option[value="{1}"]'.format(field_name, field_value)).first.click() def verify_field_value(self, field_name, field_value): """ diff --git a/common/test/acceptance/tests/lms/test_lms_edxnotes.py b/common/test/acceptance/tests/lms/test_lms_edxnotes.py index 8a92a91145..4bc5ac8c2e 100644 --- a/common/test/acceptance/tests/lms/test_lms_edxnotes.py +++ b/common/test/acceptance/tests/lms/test_lms_edxnotes.py @@ -51,7 +51,7 @@ class EdxNotesTestMixin(UniqueCourseTest): XBlockFixtureDesc( "html", "Test HTML 1", - data=""" + data=u"""
Annotate this!
Annotate this
""".format(self.selector) diff --git a/common/test/acceptance/tests/lms/test_progress_page.py b/common/test/acceptance/tests/lms/test_progress_page.py index 128e30c272..ffcdcb0202 100644 --- a/common/test/acceptance/tests/lms/test_progress_page.py +++ b/common/test/acceptance/tests/lms/test_progress_page.py @@ -321,10 +321,10 @@ class SubsectionGradingPolicyTest(SubsectionGradingPolicyBase): def test_subsection_grading_policy_on_progress_page(self): with self._logged_in_session(): - self._check_scores_and_page_text([(0, 1), (0, 1)], (0, 2), "Homework 1 - Test Subsection 1 - 0% (0/2)") + self._check_scores_and_page_text([(0, 1), (0, 1)], (0, 2), u"Homework 1 - Test Subsection 1 - 0% (0/2)") self.courseware_page.visit() self._answer_problem_correctly() - self._check_scores_and_page_text([(1, 1), (0, 1)], (1, 2), "Homework 1 - Test Subsection 1 - 50% (1/2)") + self._check_scores_and_page_text([(1, 1), (0, 1)], (1, 2), u"Homework 1 - Test Subsection 1 - 50% (1/2)") self._set_policy_for_subsection("Not Graded") @@ -337,7 +337,7 @@ class SubsectionGradingPolicyTest(SubsectionGradingPolicyBase): self._set_policy_for_subsection("Homework") with self._logged_in_session(): - self._check_scores_and_page_text([(1, 1), (0, 1)], (1, 2), "Homework 1 - Test Subsection 1 - 50% (1/2)") + self._check_scores_and_page_text([(1, 1), (0, 1)], (1, 2), u"Homework 1 - Test Subsection 1 - 50% (1/2)") class SubsectionGradingPolicyA11yTest(SubsectionGradingPolicyBase): diff --git a/lms/djangoapps/branding/api.py b/lms/djangoapps/branding/api.py index a04a81b788..cd81a92cff 100644 --- a/lms/djangoapps/branding/api.py +++ b/lms/djangoapps/branding/api.py @@ -209,8 +209,10 @@ def _footer_navigation_links(language=settings.LANGUAGE_CODE): platform_name = configuration_helpers.get_value('platform_name', settings.PLATFORM_NAME) links = [ ("about", (marketing_link("ABOUT"), _("About"))), - ("enterprise", (marketing_link("ENTERPRISE"), - _("{platform_name} for Business").format(platform_name=platform_name))), + ("enterprise", ( + marketing_link("ENTERPRISE"), + _(u"{platform_name} for Business").format(platform_name=platform_name) + )), ("blog", (marketing_link("BLOG"), _("Blog"))), ("help-center", (settings.SUPPORT_SITE_LINK, _("Help Center"))), ("contact", (reverse("support:contact_us"), _("Contact"))), @@ -272,8 +274,10 @@ def _footer_business_links(language=settings.LANGUAGE_CODE): platform_name = configuration_helpers.get_value('platform_name', settings.PLATFORM_NAME) links = [ ("about", (marketing_link("ABOUT"), _("About"))), - ("enterprise", (marketing_link("ENTERPRISE"), - _("{platform_name} for Business").format(platform_name=platform_name))), + ("enterprise", ( + marketing_link("ENTERPRISE"), + _(u"{platform_name} for Business").format(platform_name=platform_name) + )), ] if language == settings.LANGUAGE_CODE: diff --git a/lms/djangoapps/bulk_email/tasks.py b/lms/djangoapps/bulk_email/tasks.py index 46fbdf1d43..08beb958d0 100644 --- a/lms/djangoapps/bulk_email/tasks.py +++ b/lms/djangoapps/bulk_email/tasks.py @@ -517,7 +517,7 @@ def _send_course_email(entry_id, email_id, to_list, global_email_context, subtas total_recipients_failed += 1 log.info( u"BulkEmail ==> Email address %s contains non-ascii characters. Skipping sending " - "email to %s, EmailId: %s ", + u"email to %s, EmailId: %s ", email, current_recipient['profile__name'], email_id diff --git a/lms/djangoapps/certificates/api.py b/lms/djangoapps/certificates/api.py index e934be2816..5f5b915fb7 100644 --- a/lms/djangoapps/certificates/api.py +++ b/lms/djangoapps/certificates/api.py @@ -446,8 +446,8 @@ def _certificate_download_url(user_id, course_id): except GeneratedCertificate.DoesNotExist: log.critical( u'Unable to lookup certificate\n' - 'user id: %d\n' - 'course: %s', user_id, unicode(course_id) + u'user id: %d\n' + u'course: %s', user_id, unicode(course_id) ) return '' @@ -509,8 +509,8 @@ def get_certificate_template(course_key, mode, language): ) template = get_language_specific_template_or_default(language, org_mode_and_key_templates, course_key) if template: - log.info("Template retrieved for course based on the course_key:{course_key}, mode:{mode} " - "and org_id:{org_id}".format(course_key=course_key, mode=mode, org_id=org_id)) + log.info(u"Template retrieved for course based on the course_key:{course_key}, mode:{mode} " + u"and org_id:{org_id}".format(course_key=course_key, mode=mode, org_id=org_id)) # since no template matched that course_key, only consider templates with empty course_key empty_course_key_templates = active_templates.filter(course_key=CourseKeyField.Empty) @@ -521,8 +521,8 @@ def get_certificate_template(course_key, mode, language): ) template = get_language_specific_template_or_default(language, org_and_mode_templates, course_key) if template: - log.info("Template retrieved for course:{course_key} based on the mode:{mode} " - "and org_id:{org_id}".format(course_key=course_key, mode=mode, org_id=org_id)) + log.info(u"Template retrieved for course:{course_key} based on the mode:{mode} " + u"and org_id:{org_id}".format(course_key=course_key, mode=mode, org_id=org_id)) if not template and org_id: # get template by only org org_templates = empty_course_key_templates.filter( organization_id=org_id, @@ -530,7 +530,7 @@ def get_certificate_template(course_key, mode, language): ) template = get_language_specific_template_or_default(language, org_templates, course_key) if template: - log.info("Template retrieved for course:{course_key} and org_id:{org_id}". + log.info(u"Template retrieved for course:{course_key} and org_id:{org_id}". format(course_key=course_key, org_id=org_id)) if not template and mode: # get template by only mode mode_templates = empty_course_key_templates.filter( @@ -539,8 +539,8 @@ def get_certificate_template(course_key, mode, language): ) template = get_language_specific_template_or_default(language, mode_templates, course_key) if template: - log.info("Template retrieved for course:{course_key} based on the mode:{mode} " - "and org_id:{org_id}".format(course_key=course_key, mode=mode, org_id=org_id)) + log.info(u"Template retrieved for course:{course_key} based on the mode:{mode} " + u"and org_id:{org_id}".format(course_key=course_key, mode=mode, org_id=org_id)) return template if template else None @@ -551,16 +551,21 @@ def get_language_specific_template_or_default(language, templates, course_key): Returns default templates If no language matches, or language passed is None """ two_letter_language = _get_two_letter_language_code(language) - log.info("Retrieved two letter language is {two_letter_language} for the language:{language} and " - "course:{course_key}".format(two_letter_language=two_letter_language, language=language, - course_key=course_key)) + log.info( + u"Retrieved two letter language is {two_letter_language} for the language:{language} and " + u"course:{course_key}".format( + two_letter_language=two_letter_language, + language=language, + course_key=course_key + ) + ) language_or_default_templates = list(templates.filter(Q(language=two_letter_language) | Q(language=None) | Q(language=''))) language_specific_template = get_language_specific_template(two_letter_language, language_or_default_templates, course_key) if language_specific_template: - log.info("Returning languages: {language} specific template for course:{course_key}". + log.info(u"Returning languages: {language} specific template for course:{course_key}". format(course_key=course_key, language=language)) return language_specific_template else: @@ -577,11 +582,11 @@ def get_language_specific_template(language, templates, course_key): """ for template in templates: if template.language == language: - log.info("{language} language specific template found for course:{course_key}". + log.info(u"{language} language specific template found for course:{course_key}". format(language=language, course_key=course_key)) return template - log.info("{language} language specific template not found for course:{course_key}". + log.info(u"{language} language specific template not found for course:{course_key}". format(language=language, course_key=course_key)) return None diff --git a/lms/djangoapps/certificates/tests/test_webview_views.py b/lms/djangoapps/certificates/tests/test_webview_views.py index d41c23961e..81caddbb62 100644 --- a/lms/djangoapps/certificates/tests/test_webview_views.py +++ b/lms/djangoapps/certificates/tests/test_webview_views.py @@ -97,7 +97,7 @@ class CommonCertificatesTestCase(ModuleStoreTestCase): self.user.profile.save() self.client.login(username=self.user.username, password='foo') self.request = RequestFactory().request() - self.linkedin_url = 'http://www.linkedin.com/profile/add?{params}' + self.linkedin_url = u'http://www.linkedin.com/profile/add?{params}' self.cert = GeneratedCertificateFactory.create( user=self.user, @@ -129,7 +129,7 @@ class CommonCertificatesTestCase(ModuleStoreTestCase): 'name': 'Signatory_Name ' + str(i), 'title': 'Signatory_Title ' + str(i), 'organization': 'Signatory_Organization ' + str(i), - 'signature_image_path': '/static/certificates/images/demo-sig{}.png'.format(i), + 'signature_image_path': u'/static/certificates/images/demo-sig{}.png'.format(i), 'id': i } for i in xrange(signatory_count) @@ -141,7 +141,7 @@ class CommonCertificatesTestCase(ModuleStoreTestCase): 'name': 'Name ' + str(i), 'description': 'Description ' + str(i), 'course_title': 'course_title_' + str(i), - 'org_logo_path': '/t4x/orgX/testX/asset/org-logo-{}.png'.format(i), + 'org_logo_path': u'/t4x/orgX/testX/asset/org-logo-{}.png'.format(i), 'signatories': signatories, 'version': 1, 'is_active': is_active @@ -190,7 +190,7 @@ class CommonCertificatesTestCase(ModuleStoreTestCase): lang: ${LANGUAGE_CODE} - course name: """ + template_name + """ + course name: """ + template_name + u""" mode: ${course_mode} ${accomplishment_copy_course_description} ${twitter_url} @@ -266,10 +266,10 @@ class CertificatesViewsTests(CommonCertificatesTestCase, CacheIsolationTestCase) self.assertEqual(response.status_code, 200) params = OrderedDict([ ('_ed', '0_0dPSPyS070e0HsE9HNz_13_d11_',), - ('pfCertificationName', '{platform_name} Honor Code Certificate for {course_name}'.format( - platform_name=settings.PLATFORM_NAME.encode('utf-8'), + ('pfCertificationName', u'{platform_name} Honor Code Certificate for {course_name}'.format( + platform_name=settings.PLATFORM_NAME, course_name=self.course.display_name, - ),), + ).encode('utf-8'),), ('pfCertificationUrl', self.request.build_absolute_uri(test_url),), ]) self.assertIn( @@ -289,10 +289,10 @@ class CertificatesViewsTests(CommonCertificatesTestCase, CacheIsolationTestCase) # the linkedIn share URL with appropriate parameters should be present params = OrderedDict([ ('_ed', settings.MICROSITE_CONFIGURATION['test_site']['LINKEDIN_COMPANY_ID'],), - ('pfCertificationName', '{platform_name} Honor Code Certificate for {course_name}'.format( + ('pfCertificationName', u'{platform_name} Honor Code Certificate for {course_name}'.format( platform_name=settings.MICROSITE_CONFIGURATION['test_site']['platform_name'], course_name=self.course.display_name, - ),), + ).encode('utf-8'),), ('pfCertificationUrl', 'http://' + settings.MICROSITE_TEST_HOSTNAME + test_url,), ]) self.assertIn( diff --git a/lms/djangoapps/certificates/views/webview.py b/lms/djangoapps/certificates/views/webview.py index a41753c875..ed3b49c3cb 100644 --- a/lms/djangoapps/certificates/views/webview.py +++ b/lms/djangoapps/certificates/views/webview.py @@ -553,7 +553,7 @@ def render_html_view(request, user_id, course_id): custom_template = None custom_template_language = None if settings.FEATURES.get('CUSTOM_CERTIFICATE_TEMPLATES_ENABLED', False): - log.info("Custom certificate for course {course_id}".format(course_id=course_id)) + log.info(u"Custom certificate for course %s", course_id) custom_template, custom_template_language = _get_custom_template_and_language( course.id, user_certificate.mode, @@ -566,8 +566,11 @@ def render_html_view(request, user_id, course_id): user_language = translation.get_language() certificate_language = custom_template_language if custom_template else user_language - log.info("certificate language is: {language} for the course:{course_key}".format(language=certificate_language, - course_key=course_key)) + log.info( + u"certificate language is: %s for the course: %s", + certificate_language, + course_key + ) # Generate the certificate context in the correct language, then render the template. with translation.override(certificate_language): @@ -643,8 +646,11 @@ def _get_catalog_data_for_course(course_key): except ValueError: log.exception('Error occurred while parsing course run details') catalog_data['content_language'] = course_run_data.get('content_language') - log.info("catalog data received for course:{course_key} is : {catalog_data}".format(course_key=course_key, - catalog_data=catalog_data)) + log.info( + u"catalog data received for course: %s is : %s", + course_key, + catalog_data, + ) return catalog_data @@ -654,9 +660,12 @@ def _get_custom_template_and_language(course_id, course_mode, course_language): combination, along with the language that should be used to render that template. """ closest_released_language = get_closest_released_language(course_language) if course_language else None - log.info("closest released language for {course_id} is {closest_released_language} and course language was:" - " {course_language}".format(course_id=course_id, closest_released_language=closest_released_language, - course_language=course_language)) + log.info( + u"closest released language for %s is %s and course language was: %s", + course_id, + closest_released_language, + course_language + ) template = get_certificate_template(course_id, course_mode, closest_released_language) if template and template.language: diff --git a/lms/djangoapps/courseware/tests/test_video_mongo.py b/lms/djangoapps/courseware/tests/test_video_mongo.py index 728d1e7da5..29662dfe7c 100644 --- a/lms/djangoapps/courseware/tests/test_video_mongo.py +++ b/lms/djangoapps/courseware/tests/test_video_mongo.py @@ -814,7 +814,7 @@ class TestGetHtmlMethod(BaseTestXmodule): mocked_get_video.side_effect = side_effect - SOURCE_XML = """ + source_xml = u"""