diff --git a/lms/djangoapps/commerce/utils.py b/lms/djangoapps/commerce/utils.py index cac8e06767..0325104110 100644 --- a/lms/djangoapps/commerce/utils.py +++ b/lms/djangoapps/commerce/utils.py @@ -133,8 +133,7 @@ class EcommerceService(object): """ Returns the URL for the user to upgrade, or None if not applicable. """ - enrollment = CourseEnrollment.get_enrollment(user, course_key) - verified_mode = enrollment.verified_mode if enrollment else None + verified_mode = CourseMode.verified_mode_for_course(course_key) if verified_mode: if self.is_enabled(user): return self.get_checkout_page_url(verified_mode.sku) diff --git a/lms/djangoapps/courseware/date_summary.py b/lms/djangoapps/courseware/date_summary.py index 20ca88ac85..60850439bb 100644 --- a/lms/djangoapps/courseware/date_summary.py +++ b/lms/djangoapps/courseware/date_summary.py @@ -402,20 +402,7 @@ def verified_upgrade_deadline_link(user, course=None, course_id=None): """ if course is not None: course_id = course.id - - ecommerce_service = EcommerceService() - if ecommerce_service.is_enabled(user): - course_mode = CourseMode.verified_mode_for_course(course_id) - if course_mode is not None: - return ecommerce_service.get_checkout_page_url(course_mode.sku) - else: - raise CourseModeNotFoundException('Cannot generate a verified upgrade link without a valid verified mode' - ' for course {}'.format(unicode(course_id))) - return reverse('verify_student_upgrade_and_verify', args=(course_id,)) - - -class CourseModeNotFoundException(Exception): - pass + return EcommerceService().upgrade_url(user, course_id) def verified_upgrade_link_is_valid(enrollment=None): diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py index 13a6c0ed08..69541604cf 100644 --- a/lms/djangoapps/courseware/tests/test_views.py +++ b/lms/djangoapps/courseware/tests/test_views.py @@ -1706,6 +1706,10 @@ class ProgressPageTests(ProgressPageBaseTests): CourseDurationLimitConfig.objects.create(enabled=False) user = UserFactory.create() self.assertTrue(self.client.login(username=user.username, password='test')) + CourseModeFactory.create( + course_id=self.course.id, + mode_slug=course_mode + ) CourseEnrollmentFactory(user=user, course_id=self.course.id, mode=course_mode) response = self._get_progress_page() diff --git a/lms/djangoapps/experiments/utils.py b/lms/djangoapps/experiments/utils.py index 696f34554c..40a9e7e9ef 100644 --- a/lms/djangoapps/experiments/utils.py +++ b/lms/djangoapps/experiments/utils.py @@ -14,6 +14,10 @@ def check_and_get_upgrade_link_and_date(user, enrollment=None, course=None): """ For an authenticated user, return a link to allow them to upgrade in the specified course. + + Returns the upgrade link and upgrade deadline for a user in a given course given + that the user is within the window to upgrade defined by our dynamic pacing feature; + otherwise, returns None for both the link and date. """ if enrollment is None and course is None: raise ValueError("Must specify either an enrollment or a course") @@ -68,6 +72,7 @@ def get_experiment_user_metadata_context(course, user): except CourseEnrollment.DoesNotExist: pass # Not enrolled, used the default None values + # upgrade_link and upgrade_date should be None if user has passed their dynamic pacing deadline. upgrade_link, upgrade_date = check_and_get_upgrade_link_and_date(user, enrollment, course) has_staff_access = has_staff_access_to_preview_mode(user, course.id) forum_roles = []