Skip to content
Open

91lms #484

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion figures/compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
2 changes: 1 addition & 1 deletion figures/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion figures/pipeline/course_daily_metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
38 changes: 19 additions & 19 deletions figures/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')


#
Expand All @@ -74,35 +74,35 @@
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

router.register(
r'user-index',
views.UserIndexViewSet,
base_name='user-index')
basename='user-index')


# New endpoints in development (unstable)
Expand All @@ -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 = [

Expand Down
28 changes: 14 additions & 14 deletions figures/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand All @@ -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

Expand Down Expand Up @@ -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()
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand Down Expand Up @@ -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()
Expand All @@ -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
Expand All @@ -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()
Expand All @@ -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()
Expand All @@ -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()
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down