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:
Cali
2019-01-07 13:55:40 -05:00
committed by GitHub
4 changed files with 11 additions and 16 deletions

View File

@@ -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)

View File

@@ -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):

View File

@@ -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()

View File

@@ -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 = []