Commit c2c4ec38 by Zia Fazal

Merge pull request #681 from edx-solutions/ziafazal/YONK-298

Ziafazal/yonk-298: organization user removal support
parents bfc5c12c a131af2f
...@@ -5,6 +5,7 @@ from django.conf import settings ...@@ -5,6 +5,7 @@ from django.conf import settings
from django.contrib.auth.models import User, Group from django.contrib.auth.models import User, Group
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.db.models import Sum, F, Count from django.db.models import Sum, F, Count
from django.utils.translation import ugettext as _
from rest_framework import status, viewsets from rest_framework import status, viewsets
from rest_framework.decorators import action from rest_framework.decorators import action
...@@ -88,7 +89,7 @@ class OrganizationsViewSet(viewsets.ModelViewSet): ...@@ -88,7 +89,7 @@ class OrganizationsViewSet(viewsets.ModelViewSet):
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', 'delete'])
def users(self, request, pk): def users(self, request, pk):
""" """
- URI: ```/api/organizations/{org_id}/users/``` - URI: ```/api/organizations/{org_id}/users/```
...@@ -100,7 +101,7 @@ class OrganizationsViewSet(viewsets.ModelViewSet): ...@@ -100,7 +101,7 @@ class OrganizationsViewSet(viewsets.ModelViewSet):
* view parameter can be used to get a particular data .i.e. view=ids to * view parameter can be used to get a particular data .i.e. view=ids to
* get list of user ids * get list of user ids
- POST: Adds a User to an Organization - POST: Adds a User to an Organization
- DELETE: Removes the user(s) given in the `users` param from an Organization.
""" """
if request.method == 'GET': if request.method == 'GET':
include_course_counts = request.QUERY_PARAMS.get('include_course_counts', None) include_course_counts = request.QUERY_PARAMS.get('include_course_counts', None)
...@@ -152,6 +153,30 @@ class OrganizationsViewSet(viewsets.ModelViewSet): ...@@ -152,6 +153,30 @@ class OrganizationsViewSet(viewsets.ModelViewSet):
response_data.append(user_data) response_data.append(user_data)
return Response(response_data, status=status.HTTP_200_OK) return Response(response_data, status=status.HTTP_200_OK)
elif request.method == 'DELETE':
user_ids = request.DATA.get('users')
if not user_ids:
return Response({"detail": _('users parameter is missing.')}, status.HTTP_400_BAD_REQUEST)
try:
user_ids = [int(user_id) for user_id in filter(None, user_ids.split(','))]
except ValueError:
return Response({
"detail": _('users parameter must be comma separated list of integers.')
}, status.HTTP_400_BAD_REQUEST)
users_removed = 0
organization = self.get_object()
for user_id in user_ids:
try:
user = User.objects.get(id=user_id)
except ObjectDoesNotExist:
continue
organization.users.remove(user)
users_removed += 1
organization.save()
return Response({
"detail": _("{users_removed} users removed from organization").format(users_removed=users_removed)
}, status=status.HTTP_200_OK)
else: else:
user_id = request.DATA.get('id') user_id = request.DATA.get('id')
try: try:
......
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