Completed
Push — master ( 032d73...5d196b )
by Camille
01:36 queued 38s
created

UserViewSet.get_serializer_class()   A

Complexity

Conditions 4

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 4
dl 0
loc 8
rs 9.2
1
from rest_framework import viewsets, decorators, status
2
from rest_framework.response import Response
3
from dry_rest_permissions.generics import DRYPermissions
4
5
from sigma_core.models.user import User
6
from sigma_core.serializers.user import UserSerializer, UserWithoutNamesSerializer
7
8
9
class UserViewSet(viewsets.ModelViewSet):
10
    permission_classes = (DRYPermissions, )
11
    queryset = User.objects.all()
12
13
    def get_serializer_class(self):
14
        """
15
        Users cannot change their lastname and firstname, but admins can.
16
        """
17
        if self.request.method == 'PUT' and not (self.request.user.is_staff or self.request.user.is_superuser):
18
            return UserWithoutNamesSerializer
19
        else:
20
            return UserSerializer
21
22
    @decorators.list_route(methods=['get'])
23
    def me(self, request):
24
        """
25
        Gives the data of the current user
26
        """
27
        if request.user.__class__.__name__ == 'AnonymousUser':
28
            return Response(status=status.HTTP_401_UNAUTHORIZED)
29
        else:
30
            serializer = self.get_serializer_class()(request.user, context={'request': request})
31
            return Response(serializer.data)
32