# rest framework from rest_framework import generics, permissions, parsers # drf yasg from drf_yasg import openapi from drf_yasg.utils import swagger_auto_schema # accounts from core.apps.accounts.models import User from core.apps.accounts.serializers.user.create import CreateUserSerializer from core.apps.accounts.serializers.user.user import UserSerializer # utils from core.utils.response.mixin import ResponseMixin class CreateUserApiView(generics.GenericAPIView, ResponseMixin): serializer_class = CreateUserSerializer queryset = User.objects.all() permission_classes = [permissions.IsAuthenticated] parser_classes = [parsers.MultiPartParser, parsers.FormParser] @swagger_auto_schema( tags=['user'], responses={ 201: openapi.Response( description="Created", schema=None, examples={ "application/json": { "status": "created", "status_code": 201, "message": "User successfully created!", "data": { "id": 0, "first_name": "string", "last_name": "string", "username": "string", "phone_number": "string", "profile_image": "string", "created_at": "string", "updated_at": "string", } } } ) } ) def post(self, request): try: serializer = self.serializer_class(data=request.data) if serializer.is_valid(raise_exception=True): user = serializer.save() return self.created_response( data=UserSerializer(user).data, message="User successfully created!" ) except Exception as e: return self.error_response( data=str(e) )