Commit a7a8e196 by Matt Drayer Committed by Jonathan Piacenti

mattdrayer/api-org-course-avg: Added average grade to response

parent f2168356
...@@ -337,6 +337,7 @@ class OrganizationsApiTests(ModuleStoreTestCase): ...@@ -337,6 +337,7 @@ class OrganizationsApiTests(ModuleStoreTestCase):
metrics_uri = '{}metrics/'.format(test_uri) metrics_uri = '{}metrics/'.format(test_uri)
response = self.do_get(metrics_uri) response = self.do_get(metrics_uri)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response.data['users_grade_average'], 0.838)
self.assertEqual(response.data['users_grade_complete_count'], 4) self.assertEqual(response.data['users_grade_complete_count'], 4)
...@@ -389,7 +390,7 @@ class OrganizationsApiTests(ModuleStoreTestCase): ...@@ -389,7 +390,7 @@ class OrganizationsApiTests(ModuleStoreTestCase):
metrics_uri = '{}metrics/'.format(test_uri) metrics_uri = '{}metrics/'.format(test_uri)
response = self.do_get(metrics_uri) response = self.do_get(metrics_uri)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response.data['users_grade_complete_count'], 5) self.assertEqual(response.data['users_grade_complete_count'], 6)
courses = {'courses': unicode(course1.id)} courses = {'courses': unicode(course1.id)}
filtered_metrics_uri = '{}?{}'.format(metrics_uri, urlencode(courses)) filtered_metrics_uri = '{}?{}'.format(metrics_uri, urlencode(courses))
...@@ -397,8 +398,14 @@ class OrganizationsApiTests(ModuleStoreTestCase): ...@@ -397,8 +398,14 @@ class OrganizationsApiTests(ModuleStoreTestCase):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response.data['users_grade_complete_count'], 2) self.assertEqual(response.data['users_grade_complete_count'], 2)
courses = {'courses': unicode(course2.id)}
filtered_metrics_uri = '{}?{}'.format(metrics_uri, urlencode(courses))
response = self.do_get(filtered_metrics_uri)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data['users_grade_complete_count'], 4)
courses = {'courses': '{},{}'.format(course1.id, course2.id)} courses = {'courses': '{},{}'.format(course1.id, course2.id)}
filtered_metrics_uri = '{}?{}'.format(metrics_uri, urlencode(courses)) filtered_metrics_uri = '{}?{}'.format(metrics_uri, urlencode(courses))
response = self.do_get(filtered_metrics_uri) response = self.do_get(filtered_metrics_uri)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response.data['users_grade_complete_count'], 5) self.assertEqual(response.data['users_grade_complete_count'], 6)
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
from django.conf import settings from django.conf import settings
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.db.models import F from django.db.models import Avg, F
from rest_framework import status, viewsets from rest_framework import status, viewsets
from rest_framework.decorators import action from rest_framework.decorators import action
...@@ -43,9 +43,14 @@ class OrganizationsViewSet(viewsets.ModelViewSet): ...@@ -43,9 +43,14 @@ class OrganizationsViewSet(viewsets.ModelViewSet):
for course_string in courses_filter: for course_string in courses_filter:
courses.append(get_course_key(course_string)) courses.append(get_course_key(course_string))
org_user_grades = org_user_grades.filter(course_id__in=courses) org_user_grades = org_user_grades.filter(course_id__in=courses)
users_grade_average = org_user_grades.aggregate(Avg('grade'))
response_data['users_grade_average'] = float('{0:.3f}'.format(float(users_grade_average['grade__avg'])))
users_grade_complete_count = org_user_grades\ users_grade_complete_count = org_user_grades\
.filter(proforma_grade__lte=F('grade') + grade_complete_match_range, proforma_grade__gt=0).count() .filter(proforma_grade__lte=F('grade') + grade_complete_match_range, proforma_grade__gt=0).count()
response_data['users_grade_complete_count'] = users_grade_complete_count response_data['users_grade_complete_count'] = users_grade_complete_count
return Response(response_data, status=status.HTTP_200_OK) return Response(response_data, status=status.HTTP_200_OK)
@action(methods=['get', 'post']) @action(methods=['get', 'post'])
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment