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):
response = self.do_post(test_course_users_uri, data)
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(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(len(response.data), 1)
#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(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(len(response.data), 1)
#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(len(response.data), 1)
......@@ -848,7 +848,7 @@ class CourseContentUsersList(generics.ListAPIView):
"""
### The CourseContentUsersList view allows clients to users enrolled and
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
### Use Cases/Notes:
* Use CourseContentUsersList to grab the users enrolled in Course content group
......@@ -861,12 +861,13 @@ class CourseContentUsersList(generics.ListAPIView):
"""
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.
'enrolled' query parameter for filtering user' enrolment status
'group_id' query parameter is available for filtering by group.
'type' query parameter is available for filtering by group_type.
"""
course_id = self.kwargs['course_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_id = self.request.QUERY_PARAMS.get('group_id', None)
groups = CourseContentGroupRelationship.objects.filter(course_id=course_id, content_id=content_id)
......@@ -880,8 +881,8 @@ class CourseContentUsersList(generics.ListAPIView):
lookup_group_ids = groups.values_list('group_id', flat=True)
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)
if users_type == 'notenrolled':
queryset = list(itertools.ifilterfalse(lambda x: x in enrolled_users, users))
else:
if enrolled in ['True', 'true']:
queryset = enrolled_users
else:
queryset = list(itertools.ifilterfalse(lambda x: x in enrolled_users, users))
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