diff --git a/lms/djangoapps/course_goals/handlers.py b/lms/djangoapps/course_goals/handlers.py index 8fd8ddd204..ef4afb8c9f 100644 --- a/lms/djangoapps/course_goals/handlers.py +++ b/lms/djangoapps/course_goals/handlers.py @@ -6,6 +6,7 @@ from __future__ import absolute_import from django.db import models from django.dispatch import receiver +import six from course_modes.models import CourseMode from student.models import CourseEnrollment @@ -20,7 +21,7 @@ def update_course_goal_on_enroll_change(sender, instance, **kwargs): # pylint: 1) Set the course goal to 'certify' when the user enrolls as a verified user. 2) Remove the course goal when the user's enrollment is no longer active. """ - course_id = str(instance.course_id).decode('utf8', 'ignore') + course_id = six.text_type(instance.course_id) if not instance.is_active: remove_course_goal(instance.user, course_id) elif instance.mode == CourseMode.VERIFIED: diff --git a/openedx/core/lib/course_tabs.py b/openedx/core/lib/course_tabs.py index 21642bb48d..02b08434de 100644 --- a/openedx/core/lib/course_tabs.py +++ b/openedx/core/lib/course_tabs.py @@ -4,6 +4,8 @@ Tabs for courseware. from __future__ import absolute_import from openedx.core.lib.plugins import PluginManager +from functools import cmp_to_key + # Stevedore extension point namespaces COURSE_TAB_NAMESPACE = 'openedx.course_tab' @@ -41,5 +43,5 @@ class CourseTabPluginManager(PluginManager): else: return 1 tab_types = list(cls.get_available_plugins().values()) - tab_types.sort(cmp=compare_tabs) + tab_types.sort(key=cmp_to_key(compare_tabs)) return tab_types