Skip to content

Commit 11f7f4c

Browse files
committed
- wip: add update for edit endpoint
1 parent 204cca4 commit 11f7f4c

File tree

2 files changed

+33
-5
lines changed

2 files changed

+33
-5
lines changed

api/user/serializers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ class UserSerializer(serializers.ModelSerializer):
88
class Meta:
99
model = User
1010
fields = ['id', 'username', 'email', 'date']
11+
read_only_field = ['id']

api/user/viewsets.py

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,42 @@
11
from api.user.serializers import UserSerializer
2-
from rest_framework import viewsets
2+
from api.user.models import User
3+
from rest_framework import viewsets, status
34
from rest_framework.permissions import IsAuthenticated
4-
from rest_framework.decorators import action
55
from rest_framework.response import Response
6+
from rest_framework.exceptions import ValidationError
67
from rest_framework import mixins
78

89

9-
class UserViewSet(viewsets.GenericViewSet, mixins.CreateModelMixin):
10+
class UserViewSet(viewsets.GenericViewSet, mixins.CreateModelMixin, mixins.UpdateModelMixin):
1011
serializer_class = UserSerializer
11-
permission_classes = (IsAuthenticated, )
12+
permission_classes = (IsAuthenticated,)
13+
14+
def update(self, request, *args, **kwargs):
15+
partial = kwargs.pop('partial', True)
16+
instance = User.objects.get(id=request.data.get('userID'))
17+
serializer = self.get_serializer(instance, data=request.data, partial=partial)
18+
serializer.is_valid(raise_exception=True)
19+
self.perform_update(serializer)
20+
21+
if getattr(instance, '_prefetched_objects_cache', None):
22+
instance._prefetched_objects_cache = {}
23+
24+
return Response(serializer.data)
1225

1326
def create(self, request, *args, **kwargs):
14-
pass
27+
user_id = request.data.get('userID')
28+
29+
if not user_id:
30+
raise ValidationError({"user": "Precise an ID."})
31+
32+
if self.request.user.pk != user_id and not self.request.user.is_superuser:
33+
34+
raise ValidationError({
35+
"success": False,
36+
"msg": "Error updating user"
37+
})
38+
self.update(request)
1539

40+
return Response({
41+
"success": True
42+
}, status.HTTP_200_OK)

0 commit comments

Comments
 (0)