Merge pull request #19471 from edx/cstenson/upgrade_link_refactor
Refactor verified_upgrade_link_is_valid to directly call Ecom service
This commit is contained in:
@@ -133,8 +133,7 @@ class EcommerceService(object):
|
|||||||
"""
|
"""
|
||||||
Returns the URL for the user to upgrade, or None if not applicable.
|
Returns the URL for the user to upgrade, or None if not applicable.
|
||||||
"""
|
"""
|
||||||
enrollment = CourseEnrollment.get_enrollment(user, course_key)
|
verified_mode = CourseMode.verified_mode_for_course(course_key)
|
||||||
verified_mode = enrollment.verified_mode if enrollment else None
|
|
||||||
if verified_mode:
|
if verified_mode:
|
||||||
if self.is_enabled(user):
|
if self.is_enabled(user):
|
||||||
return self.get_checkout_page_url(verified_mode.sku)
|
return self.get_checkout_page_url(verified_mode.sku)
|
||||||
|
|||||||
@@ -402,20 +402,7 @@ def verified_upgrade_deadline_link(user, course=None, course_id=None):
|
|||||||
"""
|
"""
|
||||||
if course is not None:
|
if course is not None:
|
||||||
course_id = course.id
|
course_id = course.id
|
||||||
|
return EcommerceService().upgrade_url(user, 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
|
|
||||||
|
|
||||||
|
|
||||||
def verified_upgrade_link_is_valid(enrollment=None):
|
def verified_upgrade_link_is_valid(enrollment=None):
|
||||||
|
|||||||
@@ -1706,6 +1706,10 @@ class ProgressPageTests(ProgressPageBaseTests):
|
|||||||
CourseDurationLimitConfig.objects.create(enabled=False)
|
CourseDurationLimitConfig.objects.create(enabled=False)
|
||||||
user = UserFactory.create()
|
user = UserFactory.create()
|
||||||
self.assertTrue(self.client.login(username=user.username, password='test'))
|
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)
|
CourseEnrollmentFactory(user=user, course_id=self.course.id, mode=course_mode)
|
||||||
|
|
||||||
response = self._get_progress_page()
|
response = self._get_progress_page()
|
||||||
|
|||||||
@@ -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
|
For an authenticated user, return a link to allow them to upgrade
|
||||||
in the specified course.
|
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:
|
if enrollment is None and course is None:
|
||||||
raise ValueError("Must specify either an enrollment or a course")
|
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:
|
except CourseEnrollment.DoesNotExist:
|
||||||
pass # Not enrolled, used the default None values
|
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)
|
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)
|
has_staff_access = has_staff_access_to_preview_mode(user, course.id)
|
||||||
forum_roles = []
|
forum_roles = []
|
||||||
|
|||||||
Reference in New Issue
Block a user