From 536deb14e5ecda6a06a79c07af0c52eac7e475d6 Mon Sep 17 00:00:00 2001 From: Alok Kumar Date: Fri, 20 Jan 2023 18:34:30 +0530 Subject: [PATCH] updated figures based on latest openedx version --- figures/compat.py | 2 +- figures/models.py | 2 +- figures/pipeline/course_daily_metrics.py | 2 +- figures/urls.py | 38 ++++++++++++------------ figures/views.py | 28 ++++++++--------- tests/factories.py | 2 +- 6 files changed, 37 insertions(+), 37 deletions(-) diff --git a/figures/compat.py b/figures/compat.py index 30fef791..95dc2516 100644 --- a/figures/compat.py +++ b/figures/compat.py @@ -76,7 +76,7 @@ class CourseNotFound(Exception): # preemptive addition. Added it here to avoid adding to figures.models # In fact, we should probably do a refactoring that makes all Figures import it # from here -from student.models import CourseAccessRole, CourseEnrollment # noqa pylint: disable=unused-import,import-error +from common.djangoapps.student.models import CourseAccessRole, CourseEnrollment # noqa pylint: disable=unused-import,import-error from openedx.core.djangoapps.content.course_overviews.models import CourseOverview # noqa pylint: disable=unused-import,import-error diff --git a/figures/models.py b/figures/models.py index 5d9cc376..7e26ac35 100644 --- a/figures/models.py +++ b/figures/models.py @@ -12,7 +12,7 @@ from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models from django.db.models import F -from django.utils.encoding import python_2_unicode_compatible +from six import python_2_unicode_compatible from jsonfield import JSONField diff --git a/figures/pipeline/course_daily_metrics.py b/figures/pipeline/course_daily_metrics.py index 95d79f94..9cd3297a 100644 --- a/figures/pipeline/course_daily_metrics.py +++ b/figures/pipeline/course_daily_metrics.py @@ -17,7 +17,7 @@ from dateutil.relativedelta import relativedelta from django.db import transaction -from student.roles import CourseCcxCoachRole, CourseInstructorRole, CourseStaffRole # noqa pylint: disable=import-error +from common.djangoapps.student.roles import CourseCcxCoachRole, CourseInstructorRole, CourseStaffRole # noqa pylint: disable=import-error from figures.compat import (CourseEnrollment, CourseOverview, diff --git a/figures/urls.py b/figures/urls.py index 5e61ada4..4131382c 100644 --- a/figures/urls.py +++ b/figures/urls.py @@ -16,54 +16,54 @@ router.register( r'course-daily-metrics', views.CourseDailyMetricsViewSet, - base_name='course-daily-metrics') + basename='course-daily-metrics') router.register( r'site-daily-metrics', views.SiteDailyMetricsViewSet, - base_name='site-daily-metrics') + basename='site-daily-metrics') router.register( r'course-monthly-metrics', views.CourseMonthlyMetricsViewSet, - base_name='course-monthly-metrics') + basename='course-monthly-metrics') router.register( r'site-monthly-metrics', views.SiteMonthlyMetricsViewSet, - base_name='site-monthly-metrics') + basename='site-monthly-metrics') router.register( r'course-mau-metrics', views.CourseMauMetricsViewSet, - base_name='course-mau-metrics') + basename='course-mau-metrics') router.register( r'site-mau-metrics', views.SiteMauMetricsViewSet, - base_name='site-mau-metrics') + basename='site-mau-metrics') router.register( r'course-mau-live-metrics', views.CourseMauLiveMetricsViewSet, - base_name='course-mau-live-metrics') + basename='course-mau-live-metrics') router.register( r'site-mau-live-metrics', views.SiteMauLiveMetricsViewSet, - base_name='site-mau-live-metrics') + basename='site-mau-live-metrics') router.register( r'admin/sites', views.SiteViewSet, - base_name='sites') + basename='sites') # Wrappers around edx-platform models router.register( r'course-enrollments', views.CourseEnrollmentViewSet, - base_name='course-enrollments') + basename='course-enrollments') # @@ -74,27 +74,27 @@ router.register( r'courses-index', views.CoursesIndexViewSet, - base_name='courses-index') + basename='courses-index') router.register( r'courses-general', views.GeneralCourseDataViewSet, - base_name='courses-general') + basename='courses-general') router.register( r'courses-detail', views.CourseDetailsViewSet, - base_name='courses-detail') + basename='courses-detail') router.register( r'users-general', views.GeneralUserDataViewSet, - base_name='users-general') + basename='users-general') router.register( r'users-detail', views.LearnerDetailsViewSet, - base_name='users-detail') + basename='users-detail') # TODO: Consider changing this path to be 'users' or 'users/summary' # So that all user data fall under the same root path @@ -102,7 +102,7 @@ router.register( r'user-index', views.UserIndexViewSet, - base_name='user-index') + basename='user-index') # New endpoints in development (unstable) @@ -111,17 +111,17 @@ router.register( r'enrollment-metrics', views.EnrollmentMetricsViewSet, - base_name='enrollment-metrics') + basename='enrollment-metrics') router.register( r'learner-metrics-v1', views.LearnerMetricsViewSetV1, - base_name='learner-metrics-v1') + basename='learner-metrics-v1') router.register( r'learner-metrics', views.LearnerMetricsViewSetV2, - base_name='learner-metrics') + basename='learner-metrics') urlpatterns = [ diff --git a/figures/views.py b/figures/views.py index d9ec7eed..3de1264e 100644 --- a/figures/views.py +++ b/figures/views.py @@ -17,7 +17,7 @@ SessionAuthentication, TokenAuthentication, ) -from rest_framework.decorators import detail_route, list_route +from rest_framework.decorators import action from rest_framework.exceptions import NotFound from rest_framework.permissions import IsAuthenticated @@ -524,7 +524,7 @@ def get_queryset(self): queryset = LearnerCourseGradeMetrics.objects.filter(site=site) return queryset - @list_route() + @action(detail=False) def completed_ids(self, request): """Return distinct course id/user id pairs for completed enrollments @@ -542,7 +542,7 @@ def completed_ids(self, request): serializer = CourseCompletedSerializer(qs, many=True) return Response(serializer.data) - @list_route() + @action(detail=False) def completed(self, request): """Experimental endpoint to return completed LCGM records @@ -632,7 +632,7 @@ def retrieve(self, request, **kwargs): # pylint: disable=unused-argument month_for=month_for) return Response(data) - @detail_route() + @action(detail=True) def active_users(self, request, **kwargs): # pylint: disable=unused-argument site, course_id = self.site_course_helper(kwargs.get('pk', '')) date_for = datetime.utcnow().date() @@ -646,7 +646,7 @@ def active_users(self, request, **kwargs): # pylint: disable=unused-argument data = dict(active_users=active_users) return Response(data) - @detail_route() + @action(detail=True) def course_enrollments(self, request, **kwargs): site, course_id = self.site_course_helper(kwargs.get('pk', '')) data = dict(course_enrollments=self.historic_data( @@ -656,7 +656,7 @@ def course_enrollments(self, request, **kwargs): func=metrics.get_course_enrolled_users_for_time_period)) return Response(data) - @detail_route() + @action(detail=True) def num_learners_completed(self, request, **kwargs): site, course_id = self.site_course_helper(kwargs.get('pk', '')) data = dict(num_learners_completed=self.historic_data( @@ -666,7 +666,7 @@ def num_learners_completed(self, request, **kwargs): func=metrics.get_course_num_learners_completed_for_time_period)) return Response(data) - @detail_route() + @action(detail=True) def avg_days_to_complete(self, request, **kwargs): site, course_id = self.site_course_helper(kwargs.get('pk', '')) data = dict(avg_days_to_complete=self.historic_data( @@ -676,7 +676,7 @@ def avg_days_to_complete(self, request, **kwargs): func=metrics.get_course_average_days_to_complete_for_time_period)) return Response(data) - @detail_route() + @action(detail=True) def avg_progress(self, request, **kwargs): site, course_id = self.site_course_helper(kwargs.get('pk', '')) data = dict(avg_progress=self.historic_data( @@ -714,7 +714,7 @@ def list(self, request): data = metrics.get_current_month_site_metrics(site) return Response(data) - @list_route() + @action(detail=False) def registered_users(self, request): site = figures.sites.get_requested_site(request) date_for = datetime.utcnow().date() @@ -729,7 +729,7 @@ def registered_users(self, request): data = dict(registered_users=registered_users) return Response(data) - @list_route() + @action(detail=False) def new_users(self, request): """ TODO: Rename the metrics module function to "new_users" to match this @@ -747,7 +747,7 @@ def new_users(self, request): data = dict(new_users=new_users) return Response(data) - @list_route() + @action(detail=False) def course_completions(self, request): site = figures.sites.get_requested_site(request) date_for = datetime.utcnow().date() @@ -762,7 +762,7 @@ def course_completions(self, request): data = dict(course_completions=course_completions) return Response(data) - @list_route() + @action(detail=False) def course_enrollments(self, request): site = figures.sites.get_requested_site(request) date_for = datetime.utcnow().date() @@ -777,7 +777,7 @@ def course_enrollments(self, request): data = dict(course_enrollments=course_enrollments) return Response(data) - @list_route() + @action(detail=False) def site_courses(self, request): site = figures.sites.get_requested_site(request) date_for = datetime.utcnow().date() @@ -792,7 +792,7 @@ def site_courses(self, request): data = dict(site_courses=site_courses) return Response(data) - @list_route() + @action(detail=False) def active_users(self, request): site = figures.sites.get_requested_site(request) months_back = 6 diff --git a/tests/factories.py b/tests/factories.py index 71beeb20..52f70f91 100644 --- a/tests/factories.py +++ b/tests/factories.py @@ -27,7 +27,7 @@ from figures.compat import StudentModule, CourseKeyField, GeneratedCertificate -from student.models import CourseAccessRole, CourseEnrollment, UserProfile +from common.djangoapps.student.models import CourseAccessRole, CourseEnrollment, UserProfile from lms.djangoapps.teams.models import CourseTeam, CourseTeamMembership import organizations