Feedback.

This commit is contained in:
hasnain.naveed
2020-04-13 13:47:56 +05:00
parent 4cff92b0ad
commit 0d85a4ef14
3 changed files with 19 additions and 20 deletions

View File

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

View File

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

View File

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