Completed
Pull Request — master (#17)
by Camille
01:23
created

GroupViewSet   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 20
Duplicated Lines 0 %

Test Coverage

Coverage 0%
Metric Value
dl 0
loc 20
ccs 0
cts 0
cp 0
rs 10
wmc 3

1 Method

Rating   Name   Duplication   Size   Complexity  
A invite() 0 15 3
1
from django.http import Http404
2
3
from rest_framework import viewsets, decorators, status
4
from rest_framework.response import Response
5
from rest_framework.permissions import IsAuthenticated
6
from dry_rest_permissions.generics import DRYPermissions
7
8
from sigma_core.models.user import User
9
from sigma_core.models.group import Group
10
from sigma_core.serializers.group import GroupSerializer
11
12
13
class GroupViewSet(viewsets.ModelViewSet):
14
    queryset = Group.objects.all()
15
    serializer_class = GroupSerializer
16
    permission_classes = [IsAuthenticated, DRYPermissions, ]
17
18
    @decorators.detail_route(methods=['put'])
19
    def invite(self, request, pk=None):
20
        try:
21
            group = Group.objects.get(pk=pk)
22
            user = User.objects.get(pk=request.data.get('user', None))
23
        except Group.DoesNotExist:
24
            raise Http404("Group %d not found" % pk)
25
        except User.DoesNotExist:
26
            raise Http404("User %d not found" % request.data.get('user', None))
27
28
        group.invited_users.add(user)
29
        # TODO: notify user of this invitation
30
31
        s = GroupSerializer(group)
32
        return Response(s.data, status=status.HTTP_200_OK)
33