Commit c6a12c99 by Zia Fazal

Further changes based on Matt's feedback

Further changes based on Matt's feedback
parent 3f6deda3
...@@ -1050,22 +1050,22 @@ class CoursesApiTests(TestCase): ...@@ -1050,22 +1050,22 @@ class CoursesApiTests(TestCase):
response = self.do_post(test_course_users_uri, data) response = self.do_post(test_course_users_uri, data)
self.assertEqual(response.status_code, 201) self.assertEqual(response.status_code, 201)
response = self.do_get('{}?users_type={}'.format(test_uri_users, 'enrolled')) response = self.do_get('{}?enrolled={}'.format(test_uri_users, 'True'))
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data), 2) self.assertEqual(len(response.data), 2)
response = self.do_get('{}?users_type={}'.format(test_uri_users, 'notenrolled')) response = self.do_get('{}?enrolled={}'.format(test_uri_users, 'False'))
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data), 1) self.assertEqual(len(response.data), 1)
#filter by group id #filter by group id
response = self.do_get('{}?users_type={}&group_id={}'.format(test_uri_users, 'enrolled', group_id)) response = self.do_get('{}?enrolled={}&group_id={}'.format(test_uri_users, 'true', group_id))
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data), 1) self.assertEqual(len(response.data), 1)
response = self.do_get('{}?users_type={}&group_id={}'.format(test_uri_users, 'notenrolled', group_id)) response = self.do_get('{}?enrolled={}&group_id={}'.format(test_uri_users, 'false', group_id))
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data), 1) self.assertEqual(len(response.data), 1)
#filter by group type #filter by group type
response = self.do_get('{}?users_type={}&type={}'.format(test_uri_users, 'enrolled', 'project')) response = self.do_get('{}?enrolled={}&type={}'.format(test_uri_users, 'true', 'project'))
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data), 1) self.assertEqual(len(response.data), 1)
...@@ -848,7 +848,7 @@ class CourseContentUsersList(generics.ListAPIView): ...@@ -848,7 +848,7 @@ class CourseContentUsersList(generics.ListAPIView):
""" """
### The CourseContentUsersList view allows clients to users enrolled and ### The CourseContentUsersList view allows clients to users enrolled and
users not enrolled for course within all groups of course users not enrolled for course within all groups of course
- URI: ```/api/courses/{course_id}/content/{content_id}/users``` - URI: ```/api/courses/{course_id}/content/{content_id}/users?enrolled={enrolment_status}&group_id={group_id}&type={group_type}```
- GET: Returns a JSON representation of users enrolled or not enrolled - GET: Returns a JSON representation of users enrolled or not enrolled
### Use Cases/Notes: ### Use Cases/Notes:
* Use CourseContentUsersList to grab the users enrolled in Course content group * Use CourseContentUsersList to grab the users enrolled in Course content group
...@@ -861,12 +861,13 @@ class CourseContentUsersList(generics.ListAPIView): ...@@ -861,12 +861,13 @@ class CourseContentUsersList(generics.ListAPIView):
""" """
GET retrieves the list of users who registered for a given course content GET retrieves the list of users who registered for a given course content
and list of users who are not registered for that group course content. and list of users who are not registered for that group course content.
'enrolled' query parameter for filtering user' enrolment status
'group_id' query parameter is available for filtering by group. 'group_id' query parameter is available for filtering by group.
'type' query parameter is available for filtering by group_type. 'type' query parameter is available for filtering by group_type.
""" """
course_id = self.kwargs['course_id'] course_id = self.kwargs['course_id']
content_id = self.kwargs['content_id'] content_id = self.kwargs['content_id']
users_type = self.request.QUERY_PARAMS.get('users_type', None) enrolled = self.request.QUERY_PARAMS.get('enrolled', 'True')
group_type = self.request.QUERY_PARAMS.get('type', None) group_type = self.request.QUERY_PARAMS.get('type', None)
group_id = self.request.QUERY_PARAMS.get('group_id', None) group_id = self.request.QUERY_PARAMS.get('group_id', None)
groups = CourseContentGroupRelationship.objects.filter(course_id=course_id, content_id=content_id) groups = CourseContentGroupRelationship.objects.filter(course_id=course_id, content_id=content_id)
...@@ -880,8 +881,8 @@ class CourseContentUsersList(generics.ListAPIView): ...@@ -880,8 +881,8 @@ class CourseContentUsersList(generics.ListAPIView):
lookup_group_ids = groups.values_list('group_id', flat=True) lookup_group_ids = groups.values_list('group_id', flat=True)
users = User.objects.filter(groups__id__in=lookup_group_ids) users = User.objects.filter(groups__id__in=lookup_group_ids)
enrolled_users = CourseEnrollment.users_enrolled_in(course_id).filter(groups__id__in=lookup_group_ids) enrolled_users = CourseEnrollment.users_enrolled_in(course_id).filter(groups__id__in=lookup_group_ids)
if users_type == 'notenrolled': if enrolled in ['True', 'true']:
queryset = list(itertools.ifilterfalse(lambda x: x in enrolled_users, users))
else:
queryset = enrolled_users queryset = enrolled_users
else:
queryset = list(itertools.ifilterfalse(lambda x: x in enrolled_users, users))
return queryset return queryset
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