From b97cbd57860b652730196f944a64dba28294fb17 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Mon, 24 Nov 2025 15:25:54 +0500 Subject: [PATCH] dorixona uchun apilar qoshildi --- core/apps/shared/serializers/pharmacy.py | 11 +++--- core/apps/shared/urls.py | 9 ++++- core/apps/shared/views/pharmacy.py | 50 +++++++++++++++++++++++- 3 files changed, 63 insertions(+), 7 deletions(-) diff --git a/core/apps/shared/serializers/pharmacy.py b/core/apps/shared/serializers/pharmacy.py index 8a0e6e4..4f15ded 100644 --- a/core/apps/shared/serializers/pharmacy.py +++ b/core/apps/shared/serializers/pharmacy.py @@ -22,8 +22,8 @@ class PharmacySerializer(serializers.ModelSerializer): def get_district(self, obj): return { - 'id': obj.distrcit.id, - 'name': obj.distrcit.name, + 'id': obj.district.id, + 'name': obj.district.name, } def get_place(self, obj): @@ -42,7 +42,7 @@ class PharmacyCreateSerializer(serializers.Serializer): place_id = serializers.IntegerField() longitude = serializers.FloatField() latitude = serializers.FloatField() - extra_location = serializers.FloatField() + extra_location = serializers.JSONField() def validate(self, data): district = District.objects.filter(id=data['district_id']).first() @@ -52,7 +52,7 @@ class PharmacyCreateSerializer(serializers.Serializer): if not place: raise serializers.ValidationError({'place_id': "Place topilmadi"}) - data['distirct'] = district + data['district'] = district data['place'] = place return data @@ -62,10 +62,11 @@ class PharmacyCreateSerializer(serializers.Serializer): name=validated_data.get('name'), inn=validated_data.get('inn'), owner_phone=validated_data.get('owner_phone'), - responsibele_phone=validated_data.get('responsible_phone'), + responsible_phone=validated_data.get('responsible_phone'), district=validated_data.get('district'), place=validated_data.get('place'), longitude=validated_data.get('longitude'), latitude=validated_data.get('latitude'), extra_location=validated_data.get('extra_location'), + user=self.context.get('user'), ) \ No newline at end of file diff --git a/core/apps/shared/urls.py b/core/apps/shared/urls.py index ab30d05..3b8690e 100644 --- a/core/apps/shared/urls.py +++ b/core/apps/shared/urls.py @@ -8,7 +8,8 @@ from core.apps.shared.views import district as dis_view from core.apps.shared.views import place as pl_view # shared doctor view from core.apps.shared.views import doctor as dc_view - +# shared pharmacy view +from core.apps.shared.views import pharmacy as ph_view urlpatterns = [ # region @@ -41,4 +42,10 @@ urlpatterns = [ path('/', dc_view.DoctorDeleteUpdateApiView.as_view(), name='doctor-update-delete-api'), ] )), + path('pharmacy/', include( + [ + path('list/', ph_view.PharmacyListApiView.as_view(), name='pharmacy-list-api'), + path('create/', ph_view.PharmacyCreateApiView.as_view(), name='pharmacy-create-api'), + ] + )), ] \ No newline at end of file diff --git a/core/apps/shared/views/pharmacy.py b/core/apps/shared/views/pharmacy.py index fe8810f..2832707 100644 --- a/core/apps/shared/views/pharmacy.py +++ b/core/apps/shared/views/pharmacy.py @@ -5,4 +5,52 @@ from rest_framework import generics, permissions from drf_yasg.utils import swagger_auto_schema # shared -from core.apps.shared.models import Pharmacy \ No newline at end of file +from core.apps.shared.models import Pharmacy +from core.apps.shared.utils.response_mixin import ResponseMixin +from core.apps.shared.serializers.base import SuccessResponseSerializer, BaseResponseSerializer +from core.apps.shared.serializers.pharmacy import PharmacyCreateSerializer, PharmacySerializer + + +class PharmacyListApiView(generics.GenericAPIView, ResponseMixin): + serializer_class = PharmacySerializer + queryset = Pharmacy.objects.all() + permission_classes = [permissions.IsAuthenticated] + + @swagger_auto_schema( + responses={ + 200: SuccessResponseSerializer(data_serializer=PharmacySerializer()), + 400: BaseResponseSerializer(), + 500: BaseResponseSerializer() + } + ) + def get(self, request): + try: + queryset = self.queryset.filter(user=request.user) + serializer = self.serializer_class(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 PharmacyCreateApiView(generics.GenericAPIView, ResponseMixin): + serializer_class = PharmacyCreateSerializer + queryset = Pharmacy.objects.all() + permission_classes = [permissions.IsAuthenticated] + + @swagger_auto_schema( + responses={ + 201: SuccessResponseSerializer(data_serializer=PharmacySerializer()), + 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() + created_data = PharmacySerializer(obj).data + return self.success_response(data=created_data, message='malumot qoshildi', status_code=201) + return self.failure_response(data=serializer.errors, message='malumot qoshilmadi') + except Exception as e: + return self.error_response(data=str(e), message='xatolik')