| Total Complexity | 6 |
| Total Lines | 23 |
| Duplicated Lines | 0 % |
| 1 | from rest_framework import viewsets, decorators, status |
||
| 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 |