From e7f6957e05fb5c72ce788185ac7b8a93eadee0c8 Mon Sep 17 00:00:00 2001 From: Kshitij Sobti Date: Thu, 7 Mar 2019 02:51:42 +0530 Subject: [PATCH 1/3] Remove usage of CourseAggregatedMetaData since it is no longer in use. --- edx_solutions_api_integration/courses/tests.py | 8 -------- edx_solutions_api_integration/courses/views.py | 8 -------- edx_solutions_api_integration/test_utils.py | 9 --------- edx_solutions_api_integration/urls.py | 1 - edx_solutions_api_integration/users/views.py | 4 ---- 5 files changed, 30 deletions(-) diff --git a/edx_solutions_api_integration/courses/tests.py b/edx_solutions_api_integration/courses/tests.py index 9ac5aaf3..5859771e 100644 --- a/edx_solutions_api_integration/courses/tests.py +++ b/edx_solutions_api_integration/courses/tests.py @@ -53,8 +53,6 @@ ) from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory -from course_metadata.models import CourseAggregatedMetaData - from edx_solutions_api_integration.courseware_access import get_course_descriptor, get_course_key from edx_solutions_api_integration.test_utils import ( APIClientMixin, CourseGradingMixin, SignalDisconnectTestMixin, @@ -1594,9 +1592,6 @@ def test_courses_users_list_get_attributes(self, store): user_completions, course_total_assesments = 50, 100 CourseEnrollmentFactory.create(user=user, course_id=course.id) - CourseAggregatedMetaData.objects.update_or_create( - id=course.id, defaults={'total_assessments': course_total_assesments} - ) section_breakdown = [ { "category": "Homework", @@ -2438,9 +2433,6 @@ def test_courses_data_metrics(self): self.login() users_to_add, user_grade, user_completions, total_assessments = 5, 0.6, 10, 20 course = CourseFactory() - CourseAggregatedMetaData.objects.update_or_create( - id=course.id, defaults={'total_assessments': total_assessments} - ) for idx in xrange(0, users_to_add): user = UserFactory() created_user_id = user.id diff --git a/edx_solutions_api_integration/courses/views.py b/edx_solutions_api_integration/courses/views.py index ff047124..22d98e64 100644 --- a/edx_solutions_api_integration/courses/views.py +++ b/edx_solutions_api_integration/courses/views.py @@ -25,7 +25,6 @@ from completion.models import BlockCompletion from completion_aggregator.models import Aggregator -from course_metadata.models import CourseAggregatedMetaData from courseware.courses import ( get_course_about_section, get_course_info_section, @@ -1207,7 +1206,6 @@ class CoursesUsersList(MobileListAPIView): """ serializer_class = UserSerializer course_key = None - course_meta_data = None user_organizations = [] def post(self, request, course_id): @@ -1256,11 +1254,6 @@ def get(self, request, course_id): # pylint: disable=W0221 if not course_exists(course_id): return Response({}, status=status.HTTP_404_NOT_FOUND) self.course_key = get_course_key(course_id) - try: - self.course_meta_data = CourseAggregatedMetaData.objects.get(id=self.course_key) - except CourseAggregatedMetaData.DoesNotExist: - self.course_meta_data = None - return super(CoursesUsersList, self).list(request) def get_serializer_context(self): @@ -1293,7 +1286,6 @@ def get_serializer_context(self): serializer_context.update({ 'course_id': self.course_key, 'default_fields': default_fields, - 'course_meta_data': self.course_meta_data, 'active_attributes': active_attributes, }) return serializer_context diff --git a/edx_solutions_api_integration/test_utils.py b/edx_solutions_api_integration/test_utils.py index 655b0bd1..550f0344 100644 --- a/edx_solutions_api_integration/test_utils.py +++ b/edx_solutions_api_integration/test_utils.py @@ -20,9 +20,6 @@ from xmodule.modulestore.django import SignalHandler from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory -from course_metadata.signals import ( - course_publish_handler_in_course_metadata as listener_in_course_metadata -) from gradebook.signals import on_course_grade_changed @@ -275,9 +272,6 @@ def connect_signals(): """ connects signals defined in solutions apps """ - SignalHandler.course_published.connect( - listener_in_course_metadata, dispatch_uid='course_metadata' - ) PROBLEM_WEIGHTED_SCORE_CHANGED.connect(on_course_grade_changed) @staticmethod @@ -285,9 +279,6 @@ def disconnect_signals(): """ Disconnects signals defined in solutions apps """ - SignalHandler.course_published.disconnect( - listener_in_course_metadata, dispatch_uid='course_metadata' - ) PROBLEM_WEIGHTED_SCORE_CHANGED.disconnect(on_course_grade_changed) diff --git a/edx_solutions_api_integration/urls.py b/edx_solutions_api_integration/urls.py index 16137ae4..49d9b410 100644 --- a/edx_solutions_api_integration/urls.py +++ b/edx_solutions_api_integration/urls.py @@ -30,7 +30,6 @@ url(r'^organizations/*', include('edx_solutions_organizations.urls')), url(r'^mobile/v1/', include('edx_solutions_api_integration.mobile_api.urls')), url(r'^imports/*', include('edx_solutions_api_integration.imports.urls')), - url(r'^courses_metadata/', include('course_metadata.urls')), # we have to explicitly define url for workgroup users detail view # to wrap it around non_atomic_requests decorator url( diff --git a/edx_solutions_api_integration/users/views.py b/edx_solutions_api_integration/users/views.py index fea67cdb..118a8e22 100644 --- a/edx_solutions_api_integration/users/views.py +++ b/edx_solutions_api_integration/users/views.py @@ -45,7 +45,6 @@ from openedx.core.djangoapps.user_api.preferences.api import set_user_preference from openedx.core.djangoapps.user_api.accounts.image_helpers import get_profile_image_names, get_profile_image_storage from edx_notifications.lib.consumer import mark_notification_read -from course_metadata.models import CourseAggregatedMetaData, CourseSetting from completion_aggregator.models import Aggregator from student.models import CourseEnrollment, CourseEnrollmentException, PasswordHistory, UserProfile, LoginFailures from student.roles import ( @@ -1781,8 +1780,6 @@ def get(self, request, *args, **kwargs): # pylint: disable=unused-argument aggregation_name='course' ).values('course_key', 'earned', 'possible', 'percent') } - course_meta_data = CourseAggregatedMetaData.objects.filter(id__in=course_keys)\ - .values('id', 'total_assessments') course_overview = CourseOverview.objects.filter(id__in=course_keys) if str2bool(mobile_only): course_overview = course_overview.filter(mobile_available=True) @@ -1801,7 +1798,6 @@ def get(self, request, *args, **kwargs): # pylint: disable=unused-argument serializer = CourseProgressSerializer(enrollments, many=True, context={ 'student_progress': student_progress, 'course_overview': course_overview, - 'course_metadata': course_meta_data, 'user_grades': user_grades, }) From 2802d27223fe26dc2d34132024b8d659f827a848 Mon Sep 17 00:00:00 2001 From: Kshitij Sobti Date: Thu, 14 Mar 2019 12:16:13 +0530 Subject: [PATCH 2/3] Add back course metadat url --- edx_solutions_api_integration/urls.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/edx_solutions_api_integration/urls.py b/edx_solutions_api_integration/urls.py index 49d9b410..c0942f9d 100644 --- a/edx_solutions_api_integration/urls.py +++ b/edx_solutions_api_integration/urls.py @@ -30,6 +30,8 @@ url(r'^organizations/*', include('edx_solutions_organizations.urls')), url(r'^mobile/v1/', include('edx_solutions_api_integration.mobile_api.urls')), url(r'^imports/*', include('edx_solutions_api_integration.imports.urls')), + url(r'^courses_metadata/', include('course_metadata.urls')), + # we have to explicitly define url for workgroup users detail view # to wrap it around non_atomic_requests decorator url( From 59aa3315f3c0ce8e05631d049298db22ea31278e Mon Sep 17 00:00:00 2001 From: Kshitij Sobti Date: Wed, 20 Mar 2019 14:51:45 +0530 Subject: [PATCH 3/3] Bump version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index a25204d9..4de65a65 100755 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='api-integration', - version='3.0.0', + version='3.1.0', description='RESTful api integration for edX platform', long_description=open('README.rst').read(), author='edX',