From ec8f9f8f862b0cdede35ae614cc41e14d1f98e2c Mon Sep 17 00:00:00 2001 From: Matthew Piatetsky Date: Thu, 17 Oct 2019 16:57:20 -0400 Subject: [PATCH] disable discount when upgrade deadline has passed --- openedx/features/discounts/applicability.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/openedx/features/discounts/applicability.py b/openedx/features/discounts/applicability.py index 7d151da091..6807c01a25 100644 --- a/openedx/features/discounts/applicability.py +++ b/openedx/features/discounts/applicability.py @@ -73,8 +73,18 @@ def get_discount_expiration_date(user, course): content_availability_date = enrollment.created except CourseEnrollment.schedule.RelatedObjectDoesNotExist: content_availability_date = max(enrollment.created, course.start) + discount_expiration_date = content_availability_date + timedelta(weeks=1) - return content_availability_date + timedelta(weeks=1) + # If the course has an upgrade deadline and discount time limit would put the discount expiration date + # after the deadline, then change the expiration date to be the upgrade deadline + verified_mode = CourseMode.verified_mode_for_course(course=course, include_expired=True) + if not verified_mode: + return None + upgrade_deadline = verified_mode.expiration_datetime + if upgrade_deadline and discount_expiration_date > upgrade_deadline: + discount_expiration_date = upgrade_deadline + + return discount_expiration_date def can_receive_discount(user, course, discount_expiration_date=None):