From 197c06a1e47f3e128bd58131483dc0b9ef210b5c Mon Sep 17 00:00:00 2001 From: Uman Shahzad Date: Fri, 25 Aug 2017 19:19:44 +0500 Subject: [PATCH] Bump edx-enterprise to 0.41.0. This incorporates a migration that copies data from certain models to another. --- common/djangoapps/enrollment/tests/test_views.py | 7 +++++++ common/djangoapps/enrollment/views.py | 13 ++++++++++--- requirements/edx/base.txt | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/common/djangoapps/enrollment/tests/test_views.py b/common/djangoapps/enrollment/tests/test_views.py index c7b08a7253..750e6cf1f4 100644 --- a/common/djangoapps/enrollment/tests/test_views.py +++ b/common/djangoapps/enrollment/tests/test_views.py @@ -966,9 +966,15 @@ class EnrollmentTest(EnrollmentTestMixin, ModuleStoreTestCase, APITestCase, Ente self.assertTrue(is_active) self.assertEqual(course_mode, updated_mode) + @override_settings(ENTERPRISE_SERVICE_WORKER_USERNAME='enterprise_worker') @override_settings(ENABLE_ENTERPRISE_INTEGRATION=True) def test_enterprise_course_enrollment_invalid_consent(self): """Verify that the enterprise_course_consent must be a boolean. """ + UserFactory.create( + username='enterprise_worker', + email=self.EMAIL, + password=self.PASSWORD, + ) CourseModeFactory.create( course_id=self.course.id, mode_slug=CourseMode.DEFAULT_MODE_SLUG, @@ -1056,6 +1062,7 @@ class EnrollmentTest(EnrollmentTestMixin, ModuleStoreTestCase, APITestCase, Ente 'course_id': unicode(self.course.id), 'ec_uuid': 'this-is-a-real-uuid' } + self.mock_enterprise_course_enrollment_post_api() self.mock_consent_missing(**consent_kwargs) self.mock_consent_post(**consent_kwargs) self.assert_enrollment_status( diff --git a/common/djangoapps/enrollment/views.py b/common/djangoapps/enrollment/views.py index 9be58ff766..db73175d18 100644 --- a/common/djangoapps/enrollment/views.py +++ b/common/djangoapps/enrollment/views.py @@ -597,15 +597,22 @@ class EnrollmentListView(APIView, ApiKeyPermissionMixIn): enterprise_course_consent = request.data.get('enterprise_course_consent') explicit_linked_enterprise = request.data.get('linked_enterprise_customer') - if has_api_key_permissions and enterprise_enabled(): + if (enterprise_course_consent or explicit_linked_enterprise) and has_api_key_permissions and enterprise_enabled(): + enterprise_api_client = EnterpriseApiClient() + consent_client = ConsentApiClient() # We received an explicitly-linked EnterpriseCustomer for the enrollment if explicit_linked_enterprise is not None: + try: + enterprise_api_client.post_enterprise_course_enrollment(username, unicode(course_id), True) + except EnterpriseApiException as error: + log.exception("An unexpected error occurred while creating the new EnterpriseCourseEnrollment " + "for user [%s] in course run [%s]", username, course_id) + raise CourseEnrollmentError(error.message) kwargs = { 'username': username, 'course_id': unicode(course_id), 'enterprise_customer_uuid': explicit_linked_enterprise, } - consent_client = ConsentApiClient() consent_client.provide_consent(**kwargs) # We received an implicit "consent granted" parameter from ecommerce @@ -623,7 +630,7 @@ class EnrollmentListView(APIView, ApiKeyPermissionMixIn): } ) try: - EnterpriseApiClient().post_enterprise_course_enrollment( + enterprise_api_client.post_enterprise_course_enrollment( username, unicode(course_id), enterprise_course_consent diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 493c998927..67787cfe9f 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -48,7 +48,7 @@ edx-lint==0.4.3 astroid==1.3.8 edx-django-oauth2-provider==1.1.4 edx-django-sites-extensions==2.3.0 -edx-enterprise==0.40.7 +edx-enterprise==0.41.0 edx-oauth2-provider==1.2.0 edx-opaque-keys==0.4.0 edx-organizations==0.4.6