103 lines
3.6 KiB
Python
103 lines
3.6 KiB
Python
# 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'],
|
|
operation_summary="Api for create employees",
|
|
operation_description="""
|
|
Create a new user account.
|
|
|
|
Request Body:
|
|
- Requires user details based on the serializer fields.
|
|
- All required fields must be provided in MULTIPART/DATA format.
|
|
|
|
Behavior:
|
|
- Validates the incoming data using the serializer.
|
|
- If validation succeeds, a new user is created and returned.
|
|
- If validation fails, an appropriate error message is returned.
|
|
|
|
Response:
|
|
- On success: Returns the newly created user object with a success message.
|
|
- On error: Returns validation or processing error details.
|
|
""",
|
|
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",
|
|
}
|
|
}
|
|
}
|
|
),
|
|
400: openapi.Response(
|
|
description="Failure",
|
|
schema=None,
|
|
examples={
|
|
"application/json": {
|
|
"status_code": 400,
|
|
"status": "failure",
|
|
"message": "Kiritayotgan malumotingizni tekshirib ko'ring",
|
|
"data": "string"
|
|
}
|
|
}
|
|
),
|
|
500: openapi.Response(
|
|
description="Error",
|
|
schema=None,
|
|
examples={
|
|
"application/json": {
|
|
"status_code": 500,
|
|
"status": "error",
|
|
"message": "Xatolik, Iltimos backend dasturchiga murojaat qiling",
|
|
"data": "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)
|
|
) |