From bbdcf6de7a9aaaa7b4c46e20d7f7880392145c2d Mon Sep 17 00:00:00 2001 From: zubair-arbi Date: Wed, 27 Jun 2018 17:15:39 +0500 Subject: [PATCH] ENT-1052 discount by enterprise catalog --- lms/djangoapps/commerce/tests/test_utils.py | 32 +++++++++++++++++++++ lms/djangoapps/commerce/utils.py | 9 ++++-- lms/djangoapps/verify_student/views.py | 5 +++- requirements/edx/base.txt | 2 +- requirements/edx/development.txt | 2 +- requirements/edx/testing.txt | 2 +- 6 files changed, 46 insertions(+), 6 deletions(-) diff --git a/lms/djangoapps/commerce/tests/test_utils.py b/lms/djangoapps/commerce/tests/test_utils.py index 0c0ddaf8ed..f052890010 100644 --- a/lms/djangoapps/commerce/tests/test_utils.py +++ b/lms/djangoapps/commerce/tests/test_utils.py @@ -145,6 +145,38 @@ class EcommerceServiceTests(TestCase): ) self.assertEqual(url, expected_url) + @override_settings(ECOMMERCE_PUBLIC_URL_ROOT='http://ecommerce_url') + @ddt.data( + { + 'skus': ['TESTSKU'], + 'enterprise_catalog_uuid': None + }, + { + 'skus': ['TESTSKU'], + 'enterprise_catalog_uuid': '6eca3efb-f3a0-4c08-806f-c6e6b65d61cb' + }, + ) + @ddt.unpack + def test_get_checkout_page_url_with_enterprise_catalog_uuid(self, skus, enterprise_catalog_uuid): + """ Verify the checkout page URL is properly constructed and returned. """ + url = EcommerceService().get_checkout_page_url( + *skus, + enterprise_customer_catalog_uuid=enterprise_catalog_uuid + ) + config = CommerceConfiguration.current() + + query = {'sku': skus} + if enterprise_catalog_uuid: + query.update({'enterprise_customer_catalog_uuid': enterprise_catalog_uuid}) + + expected_url = '{root}{basket_url}?{skus}'.format( + basket_url=config.basket_checkout_page, + root=settings.ECOMMERCE_PUBLIC_URL_ROOT, + skus=urlencode(query, doseq=True), + ) + + self.assertEqual(url, expected_url) + @unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms') class RefundUtilMethodTests(ModuleStoreTestCase): diff --git a/lms/djangoapps/commerce/utils.py b/lms/djangoapps/commerce/utils.py index 0589bd78c3..22074269de 100644 --- a/lms/djangoapps/commerce/utils.py +++ b/lms/djangoapps/commerce/utils.py @@ -111,9 +111,14 @@ class EcommerceService(object): http://localhost:8002/basket/add/?sku=5H3HG5&sku=57FHHD&bundle=3bdf1dd1-49be-4a15-9145-38901f578c5a """ program_uuid = kwargs.get('program_uuid') - url = '{checkout_page_path}?{skus}'.format( + enterprise_catalog_uuid = kwargs.get('enterprise_customer_catalog_uuid') + query_params = {'sku': skus} + if enterprise_catalog_uuid: + query_params.update({'enterprise_customer_catalog_uuid': enterprise_catalog_uuid}) + + url = '{checkout_page_path}?{query_params}'.format( checkout_page_path=self.get_absolute_ecommerce_url(self.config.basket_checkout_page), - skus=urlencode({'sku': skus}, doseq=True), + query_params=urlencode(query_params, doseq=True), ) if program_uuid: url = '{url}&bundle={program_uuid}'.format( diff --git a/lms/djangoapps/verify_student/views.py b/lms/djangoapps/verify_student/views.py index 7d2a63e420..1490aa1740 100644 --- a/lms/djangoapps/verify_student/views.py +++ b/lms/djangoapps/verify_student/views.py @@ -518,7 +518,10 @@ class PayAndVerifyView(View): # is enabled redirect him to the ecommerce checkout page. ecommerce_service = EcommerceService() if ecommerce_service.is_enabled(user): - url = ecommerce_service.get_checkout_page_url(sku) + url = ecommerce_service.get_checkout_page_url( + sku, + enterprise_customer_catalog_uuid=self.request.GET.get('enterprise_customer_catalog_uuid') + ) # Redirect if necessary, otherwise implicitly return None if url is not None: diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 820aa36915..aafcec569a 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -116,7 +116,7 @@ edx-django-oauth2-provider==1.2.5 edx-django-release-util==0.3.1 edx-django-sites-extensions==2.3.1 edx-drf-extensions==1.5.2 -edx-enterprise==0.70.1 +edx-enterprise==0.70.3 edx-i18n-tools==0.4.5 edx-milestones==0.1.13 edx-oauth2-provider==1.2.2 diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt index d173ec26bd..799e64bb8a 100644 --- a/requirements/edx/development.txt +++ b/requirements/edx/development.txt @@ -136,7 +136,7 @@ edx-django-oauth2-provider==1.2.5 edx-django-release-util==0.3.1 edx-django-sites-extensions==2.3.1 edx-drf-extensions==1.5.2 -edx-enterprise==0.70.1 +edx-enterprise==0.70.3 edx-i18n-tools==0.4.5 edx-lint==0.5.5 edx-milestones==0.1.13 diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt index afcc19a1a8..2c6f8402a6 100644 --- a/requirements/edx/testing.txt +++ b/requirements/edx/testing.txt @@ -131,7 +131,7 @@ edx-django-oauth2-provider==1.2.5 edx-django-release-util==0.3.1 edx-django-sites-extensions==2.3.1 edx-drf-extensions==1.5.2 -edx-enterprise==0.70.1 +edx-enterprise==0.70.3 edx-i18n-tools==0.4.5 edx-lint==0.5.5 edx-milestones==0.1.13