Feedback.
This commit is contained in:
@@ -89,9 +89,9 @@ def _enrollment_mode_display(enrollment_mode, verification_status, course_id):
|
||||
return display_mode
|
||||
|
||||
|
||||
def get_course_final_price(user, sku, min_price):
|
||||
def get_course_final_price(user, sku, course_price):
|
||||
"""
|
||||
Return the course's discounted price for a user if user is entitled other None.
|
||||
Return the course's discounted price for a user if user is eligible for any otherwise return course original price.
|
||||
"""
|
||||
price_details = {}
|
||||
try:
|
||||
@@ -101,5 +101,4 @@ def get_course_final_price(user, sku, min_price):
|
||||
)
|
||||
except (SlumberBaseException, ConnectionError, Timeout) as exc: # pylint: disable=unused-variable
|
||||
pass
|
||||
price = price_details.get('total_incl_tax', min_price)
|
||||
return price if price != min_price else None
|
||||
return price_details.get('total_incl_tax', course_price)
|
||||
|
||||
@@ -199,7 +199,7 @@ class CourseModeViewTest(CatalogIntegrationMixin, UrlResetMixin, ModuleStoreTest
|
||||
self.assertNotContains(response, "Credit")
|
||||
|
||||
@httpretty.activate
|
||||
@patch('course_modes.views.is_enterprise_learner')
|
||||
@patch('course_modes.views.enterprise_customer_for_request')
|
||||
@patch('course_modes.views.get_course_final_price')
|
||||
@ddt.data(
|
||||
(1.0, True),
|
||||
@@ -211,12 +211,10 @@ class CourseModeViewTest(CatalogIntegrationMixin, UrlResetMixin, ModuleStoreTest
|
||||
def test_display_after_discounted_price(
|
||||
self,
|
||||
discounted_price,
|
||||
is_enterprise_learner,
|
||||
is_enterprise_enabled,
|
||||
mock_get_course_final_price,
|
||||
mock_is_enterprise_learner
|
||||
mock_enterprise_customer_for_request
|
||||
):
|
||||
# Create the course modes
|
||||
CourseModeFactory.create(mode_slug='audit', course_id=self.course.id)
|
||||
verified_mode = CourseModeFactory.create(mode_slug='verified', course_id=self.course.id, sku='dummy')
|
||||
CourseEnrollmentFactory(
|
||||
is_active=True,
|
||||
@@ -224,14 +222,14 @@ class CourseModeViewTest(CatalogIntegrationMixin, UrlResetMixin, ModuleStoreTest
|
||||
user=self.user
|
||||
)
|
||||
|
||||
mock_is_enterprise_learner.return_value = is_enterprise_learner
|
||||
mock_enterprise_customer_for_request.return_value = is_enterprise_enabled
|
||||
mock_get_course_final_price.return_value = discounted_price
|
||||
url = reverse('course_modes_choose', args=[six.text_type(self.course.id)])
|
||||
url = reverse('course_modes_choose', args=[self.course.id])
|
||||
response = self.client.get(url)
|
||||
|
||||
price = discounted_price if is_enterprise_learner else verified_mode.min_price
|
||||
# response will have after discounted price.
|
||||
self.assertContains(response, price)
|
||||
if is_enterprise_enabled:
|
||||
self.assertContains(response, discounted_price)
|
||||
self.assertContains(response, verified_mode.min_price)
|
||||
|
||||
@httpretty.activate
|
||||
@ddt.data(True, False)
|
||||
|
||||
@@ -35,7 +35,7 @@ from openedx.core.djangoapps.embargo import api as embargo_api
|
||||
from openedx.core.djangoapps.enrollments.permissions import ENROLL_IN_COURSE
|
||||
from openedx.features.content_type_gating.models import ContentTypeGatingConfig
|
||||
from openedx.features.course_duration_limits.models import CourseDurationLimitConfig
|
||||
from openedx.features.enterprise_support.utils import is_enterprise_learner
|
||||
from openedx.features.enterprise_support.api import enterprise_customer_for_request
|
||||
from student.models import CourseEnrollment
|
||||
from util.db import outer_atomic
|
||||
from xmodule.modulestore.django import modulestore
|
||||
@@ -203,17 +203,19 @@ class ChooseModeView(View):
|
||||
for x in verified_mode.suggested_prices.split(",")
|
||||
if x.strip()
|
||||
]
|
||||
price_after_discount = None
|
||||
price_before_discount = verified_mode.min_price
|
||||
if is_enterprise_learner(request.user) and verified_mode.sku:
|
||||
price_after_discount = get_course_final_price(request.user, verified_mode.sku, price_before_discount)
|
||||
course_price = price_before_discount
|
||||
enterprise_customer = enterprise_customer_for_request(request)
|
||||
if enterprise_customer and verified_mode.sku:
|
||||
course_price = get_course_final_price(request.user, verified_mode.sku, price_before_discount)
|
||||
|
||||
context["currency"] = verified_mode.currency.upper()
|
||||
context["currency_symbol"] = get_currency_symbol(verified_mode.currency.upper())
|
||||
context["min_price"] = price_after_discount if price_after_discount is not None else price_before_discount
|
||||
context["min_price"] = course_price
|
||||
context["verified_name"] = verified_mode.name
|
||||
context["verified_description"] = verified_mode.description
|
||||
if price_after_discount is not None:
|
||||
# if course_price is equal to price_before_discount then user doesn't entitle to any discount.
|
||||
if course_price != price_before_discount:
|
||||
context["price_before_discount"] = price_before_discount
|
||||
|
||||
if verified_mode.sku:
|
||||
|
||||
Reference in New Issue
Block a user