From 040b60c38c1d42999bddb7e0a312e7a17393dde0 Mon Sep 17 00:00:00 2001 From: Calen Pennington <cale@edx.org> Date: Mon, 5 Nov 2018 22:38:31 -0500 Subject: [PATCH] Stop swallowing UnicodeEncodeErrors in courseware rendering --- lms/djangoapps/courseware/courses.py | 2 +- lms/djangoapps/courseware/views/index.py | 4 ++-- lms/djangoapps/courseware/views/views.py | 8 +++----- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/lms/djangoapps/courseware/courses.py b/lms/djangoapps/courseware/courses.py index caccff13132..73edd42badb 100644 --- a/lms/djangoapps/courseware/courses.py +++ b/lms/djangoapps/courseware/courses.py @@ -77,7 +77,7 @@ def get_course_by_id(course_key, depth=0): if course: return course else: - raise Http404("Course not found: {}.".format(unicode(course_key))) + raise Http404(u"Course not found: {}.".format(unicode(course_key))) def get_course_with_access(user, action, course_key, depth=0, check_if_enrolled=False, check_survey_complete=True): diff --git a/lms/djangoapps/courseware/views/index.py b/lms/djangoapps/courseware/views/index.py index a9768fc1af5..a8af5b970b2 100644 --- a/lms/djangoapps/courseware/views/index.py +++ b/lms/djangoapps/courseware/views/index.py @@ -151,7 +151,7 @@ class CoursewareIndex(View): return self.render(request) except Exception as exception: # pylint: disable=broad-except - return CourseTabView.handle_exceptions(request, self.course, exception) + return CourseTabView.handle_exceptions(request, self.course_key, self.course, exception) def _setup_masquerade_for_effective_user(self): """ @@ -315,7 +315,7 @@ class CoursewareIndex(View): if not child: # User may be trying to access a child that isn't live yet if not self._is_masquerading_as_student(): - raise Http404('No {block_type} found with name {url_name}'.format( + raise Http404(u'No {block_type} found with name {url_name}'.format( block_type=block_type, url_name=url_name, )) diff --git a/lms/djangoapps/courseware/views/views.py b/lms/djangoapps/courseware/views/views.py index 18a5b220ac9..599efdc1537 100644 --- a/lms/djangoapps/courseware/views/views.py +++ b/lms/djangoapps/courseware/views/views.py @@ -509,7 +509,7 @@ class CourseTabView(EdxFragmentView): set_custom_metrics_for_course_key(course_key) return super(CourseTabView, self).get(request, course=course, page_context=page_context, **kwargs) except Exception as exception: # pylint: disable=broad-except - return CourseTabView.handle_exceptions(request, course, exception) + return CourseTabView.handle_exceptions(request, course_key, course, exception) @staticmethod def url_to_enroll(course_key): @@ -560,14 +560,12 @@ class CourseTabView(EdxFragmentView): ) @staticmethod - def handle_exceptions(request, course, exception): + def handle_exceptions(request, course_key, course, exception): """ Handle exceptions raised when rendering a view. """ if isinstance(exception, Redirect) or isinstance(exception, Http404): raise - if isinstance(exception, UnicodeEncodeError): - raise Http404("URL contains Unicode characters") if settings.DEBUG: raise user = request.user @@ -576,7 +574,7 @@ class CourseTabView(EdxFragmentView): request.path, getattr(user, 'real_user', user), user, - None if course is None else text_type(course.id), + text_type(course_key), ) try: return render_to_response( -- GitLab