dorixona uchun apilar qoshildi

This commit is contained in:
behruz-dev
2025-11-24 15:25:54 +05:00
parent c0c467b60e
commit b97cbd5786
3 changed files with 63 additions and 7 deletions

View File

@@ -22,8 +22,8 @@ class PharmacySerializer(serializers.ModelSerializer):
def get_district(self, obj): def get_district(self, obj):
return { return {
'id': obj.distrcit.id, 'id': obj.district.id,
'name': obj.distrcit.name, 'name': obj.district.name,
} }
def get_place(self, obj): def get_place(self, obj):
@@ -42,7 +42,7 @@ class PharmacyCreateSerializer(serializers.Serializer):
place_id = serializers.IntegerField() place_id = serializers.IntegerField()
longitude = serializers.FloatField() longitude = serializers.FloatField()
latitude = serializers.FloatField() latitude = serializers.FloatField()
extra_location = serializers.FloatField() extra_location = serializers.JSONField()
def validate(self, data): def validate(self, data):
district = District.objects.filter(id=data['district_id']).first() district = District.objects.filter(id=data['district_id']).first()
@@ -52,7 +52,7 @@ class PharmacyCreateSerializer(serializers.Serializer):
if not place: if not place:
raise serializers.ValidationError({'place_id': "Place topilmadi"}) raise serializers.ValidationError({'place_id': "Place topilmadi"})
data['distirct'] = district data['district'] = district
data['place'] = place data['place'] = place
return data return data
@@ -62,10 +62,11 @@ class PharmacyCreateSerializer(serializers.Serializer):
name=validated_data.get('name'), name=validated_data.get('name'),
inn=validated_data.get('inn'), inn=validated_data.get('inn'),
owner_phone=validated_data.get('owner_phone'), 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'), district=validated_data.get('district'),
place=validated_data.get('place'), place=validated_data.get('place'),
longitude=validated_data.get('longitude'), longitude=validated_data.get('longitude'),
latitude=validated_data.get('latitude'), latitude=validated_data.get('latitude'),
extra_location=validated_data.get('extra_location'), extra_location=validated_data.get('extra_location'),
user=self.context.get('user'),
) )

View File

@@ -8,7 +8,8 @@ from core.apps.shared.views import district as dis_view
from core.apps.shared.views import place as pl_view from core.apps.shared.views import place as pl_view
# shared doctor view # shared doctor view
from core.apps.shared.views import doctor as dc_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 = [ urlpatterns = [
# region # region
@@ -41,4 +42,10 @@ urlpatterns = [
path('<int:id>/', dc_view.DoctorDeleteUpdateApiView.as_view(), name='doctor-update-delete-api'), path('<int:id>/', 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'),
]
)),
] ]

View File

@@ -5,4 +5,52 @@ from rest_framework import generics, permissions
from drf_yasg.utils import swagger_auto_schema from drf_yasg.utils import swagger_auto_schema
# shared # shared
from core.apps.shared.models import Pharmacy 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')