from django.shortcuts import render, get_object_or_404 from django.http import HttpResponse from rest_framework import status from rest_framework import viewsets from rest_framework.response import Response from rest_framework.permissions import IsAdminUser from . import models from . import serializers from back_latienda.permissions import CustomUserPermissions # Create your views here. class CustomUserViewSet(viewsets.ModelViewSet): model = models.CustomUser serializer_class = serializers.CustomUserReadSerializer write_serializer_class =serializers.CustomUserWriteSerializer model_name = 'custom_user' queryset = models.CustomUser.objects.all() permission_classes = [CustomUserPermissions,] def create(self, request): """ Create 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 = self.model(**serializer.validated_data) 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) return obj