Completed
Push — master ( c420fd...5f1bbe )
by Camille
03:00 queued 13s
created

GroupViewSet.invite()   A

Complexity

Conditions 3

Size

Total Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12
Metric Value
cc 3
dl 0
loc 15
ccs 0
cts 0
cp 0
crap 12
rs 9.4285
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