fixed password update not working
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from django.shortcuts import render, get_object_or_404
|
||||
from django.http import HttpResponse
|
||||
from django.contrib.auth import get_user_model
|
||||
|
||||
from rest_framework import status
|
||||
from rest_framework import viewsets
|
||||
@@ -12,13 +13,17 @@ from . import serializers
|
||||
from back_latienda.permissions import CustomUserPermissions
|
||||
# Create your views here.
|
||||
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
class CustomUserViewSet(viewsets.ModelViewSet):
|
||||
|
||||
model = models.CustomUser
|
||||
model = User
|
||||
serializer_class = serializers.CustomUserReadSerializer
|
||||
write_serializer_class =serializers.CustomUserWriteSerializer
|
||||
model_name = 'custom_user'
|
||||
queryset = models.CustomUser.objects.all()
|
||||
queryset = User.objects.all()
|
||||
permission_classes = [CustomUserPermissions,]
|
||||
|
||||
def create(self, request):
|
||||
@@ -45,6 +50,34 @@ class CustomUserViewSet(viewsets.ModelViewSet):
|
||||
except Exception as e:
|
||||
return Response(str(e), status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
|
||||
def update(self, request, pk):
|
||||
"""
|
||||
Update CustomUser Instance
|
||||
"""
|
||||
try:
|
||||
serializer = self.write_serializer_class(
|
||||
data=request.data,
|
||||
)
|
||||
if serializer.is_valid():
|
||||
# save model instance data
|
||||
password = serializer.validated_data.pop('password')
|
||||
instance = get_object_or_404(User, pk=pk)
|
||||
|
||||
for key, value in serializer.validated_data.items():
|
||||
instance.__dict__[key] = value
|
||||
|
||||
instance.set_password(password)
|
||||
instance.save()
|
||||
|
||||
return Response(self.serializer_class(
|
||||
instance, many=False, context={'request': request}).data,
|
||||
status=status.HTTP_201_CREATED)
|
||||
else:
|
||||
return Response(
|
||||
serializer.errors, status=status.HTTP_406_NOT_ACCEPTABLE)
|
||||
except Exception as e:
|
||||
return Response(str(e), status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
|
||||
def get_object(self):
|
||||
obj = get_object_or_404(self.get_queryset(), pk=self.kwargs["pk"])
|
||||
self.check_object_permissions(self.request, obj)
|
||||
|
||||
Reference in New Issue
Block a user