# rest framework from rest_framework import generics, permissions # drf yasg from drf_yasg.utils import swagger_auto_schema # shared from core.apps.shared.models import Location, UserLocation from core.apps.shared.serializers.base import BaseResponseSerializer, SuccessResponseSerializer from core.apps.shared.serializers.location import CreateLocationSerializer, LocationSerializer, UserLocationSerializer from core.apps.shared.utils.response_mixin import ResponseMixin class LocationListApiView(generics.GenericAPIView, ResponseMixin): serializer_class = LocationSerializer permission_classes = [permissions.IsAuthenticated] def get_queryset(self): return Location.objects.filter(user=self.request.user).select_related('district', 'place', 'doctor', 'pharmacy') @swagger_auto_schema( responses={ 200: SuccessResponseSerializer(), 400: BaseResponseSerializer(), 500: BaseResponseSerializer(), } ) def get(self, request): try: serializer = self.serializer_class(self.get_queryset(), many=True) return self.success_response(data=serializer.data, message='malumotlar fetch qilindi') except Exception as e: return self.error_response(data=str(e), message='xatolik') class LocationCreateApiView(generics.GenericAPIView, ResponseMixin): serializer_class = CreateLocationSerializer queryset = Location.objects.all() permission_classes = [permissions.IsAuthenticated] @swagger_auto_schema( responses={ 201: SuccessResponseSerializer(), 400: BaseResponseSerializer(), 500: BaseResponseSerializer(), } ) def post(self, request): try: serializer = self.serializer_class(data=request.data, context={'user': request.user}) if serializer.is_valid(): obj = serializer.save() return self.success_response( data=LocationSerializer(obj).data, message='malumot qoshildi' ) return self.failure_response( data=serializer.errors, message='malumot qoshilmadi' ) except Exception as e: return self.error_response(data=str(e), message='xatolik') # UserLocation class UserLocationApiView(generics.GenericAPIView, ResponseMixin): serializer_class = UserLocationSerializer queryset = UserLocation.objects.all() permission_classes = [permissions.IsAuthenticated] @swagger_auto_schema( responses={ 201: SuccessResponseSerializer(), 400: BaseResponseSerializer(), 500: BaseResponseSerializer(), } ) def post(self, request): try: serializer = self.serializer_class(data=request.data, context={'user': request.user}) if serializer.is_valid(): serializer.save() return self.success_response( message='malumot qoshildi' ) return self.failure_response( data=serializer.errors, message='malumot qoshilmadi' ) except Exception as e: return self.error_response(data=str(e), message='xatolik')