# rest framework from rest_framework import generics # rest framework simple jwt from rest_framework_simplejwt.tokens import RefreshToken # drf yasg from drf_yasg.utils import swagger_auto_schema from drf_yasg import openapi # shared from core.apps.shared.utils.response_mixin import ResponseMixin from core.apps.shared.serializers.base import BaseResponseSerializer, SuccessResponseSerializer # accounts from core.apps.accounts.models import User # authentication from core.apps.authentication.serializers.login import LoginSerializer from core.apps.authentication.serializers import response as response_serializers class LoginApiView(generics.GenericAPIView, ResponseMixin): serializer_class = LoginSerializer queryset = User.objects.all() @swagger_auto_schema( operation_summary="Login", responses={ 200: openapi.Response( description="Success", schema=None, examples={ "application/json": { "status_code": 200, "status": "success", "message": "User topildi", "data": { "id": 1, "first_name": "Behruz", "last_name": "Xoliqberdiyev", "region": "nbve", "is_active": True, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } } } ) } ) def post(self, request): try: serializer = self.serializer_class(data=request.data) if serializer.is_valid(raise_exception=True): telegram_id = serializer.validated_data.get('telegram_id') user = User.objects.filter(telegram_id=telegram_id).first() if not user: return self.failure_response(message="User topilmadi", status_code=404) user_data = { 'id': user.id, 'first_name': user.first_name, 'last_name': user.last_name, 'region': user.region.name, 'is_active': user.is_active, 'token': None } if not user.is_active: return self.success_response( message="User tasdiqlanmagan", data=user_data ) token = RefreshToken.for_user(user) user_data['token'] = str(token) return self.success_response(data=user_data, message='User topildi') return self.failure_response(data=serializer.errors, message='siz tarafdan xatolik') except Exception as e: return self.error_response(data=str(e), message='xatolik')