From ac6da02d5836b2b242f44e2bd37f14e22a3a95ea Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Sat, 29 Nov 2025 15:27:00 +0500 Subject: [PATCH] doctor uchun crud qoshildi --- core/apps/dashboard/serializers/doctor.py | 6 +- core/apps/dashboard/views/doctor.py | 84 ++++++++++++++++++++++- 2 files changed, 85 insertions(+), 5 deletions(-) diff --git a/core/apps/dashboard/serializers/doctor.py b/core/apps/dashboard/serializers/doctor.py index 04944ee..7abf9eb 100644 --- a/core/apps/dashboard/serializers/doctor.py +++ b/core/apps/dashboard/serializers/doctor.py @@ -5,7 +5,7 @@ from django.db import transaction from rest_framework import serializers # shared -from core.apps.shared.models import Doctor +from core.apps.shared.models import Doctor, District, Place # accounts from core.apps.accounts.models import User @@ -70,11 +70,11 @@ class DoctorCreateSerializer(serializers.Serializer): extra_location = serializers.JSONField() def validate(self, data): - district = ... + district = District.objects.filter(id=data['district_id']).first() if not district: raise serializers.ValidationError({"district_id": "Tuman topilmadi"}) - place = ... + place = Place.objects.filter(id=data['place_id']).first() if not place: raise serializers.ValidationError({'place_id': "Obyekt topilmadi"}) diff --git a/core/apps/dashboard/views/doctor.py b/core/apps/dashboard/views/doctor.py index 2c9507c..704fa33 100644 --- a/core/apps/dashboard/views/doctor.py +++ b/core/apps/dashboard/views/doctor.py @@ -23,9 +23,9 @@ class DoctorViewSet(viewsets.GenericViewSet, ResponseMixin): queryset = Doctor.objects.all() def get_serializer_class(self): - if self.action == "POST": + if self.action == "post": return serializers.DoctorCreateSerializer - elif self.action in ("PATCH", "PUT"): + elif self.action in ("patch", "put"): return serializers.DoctorUpdateSerializer else: return serializers.DoctorListSerializer @@ -195,3 +195,83 @@ class DoctorViewSet(viewsets.GenericViewSet, ResponseMixin): data=str(e), message="xatolik" ) + + @swagger_auto_schema( + tags=['Admin Doctors'] + ) + @action(detail=False, methods=['post'], url_path='create') + def post(self, request): + try: + serializer = self.get_serializer(data=request.data) + if serializer.is_valid(): + obj = serializer.save() + return self.success_response( + data=serializers.DoctorListSerializer(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" + ) + + @swagger_auto_schema( + tags=['Admin Doctors'] + ) + @action(detail=True, methods=['patch'], url_path='update') + def update_doctor(self, request, pk=None): + try: + doctor = Doctor.objects.filter(id=pk).first() + if not doctor: + return self.failure_response( + data={}, + message="doctor topilmadi", + status_code=404 + ) + serializer = self.get_serializer(data=request.data, instance=doctor) + if serializer.is_valid(): + obj = serializer.save() + return self.success_response( + data=serializers.DoctorListSerializer(obj).data, + message='malumot tahrirlandi' + ) + return self.failure_response( + data=serializer.errors, + message='malumot tahrirlandi' + ) + except Exception as e: + return self.error_response( + data=str(e), + message="xatolik" + ) + + @swagger_auto_schema( + tags=['Admin Doctors'] + ) + @action(detail=True, methods=['delete'], url_path='delete') + def delete(self, request, pk=None): + try: + doctor = Doctor.objects.filter(id=pk).first() + if not doctor: + return self.failure_response( + data={}, + message="doctor topilmadi", + status_code=404 + ) + doctor.delete() + return self.success_response( + data={}, + message='malumot ochirildi', + status_code=204 + ) + except Exception as e: + return self.error_response( + data=str(e), + message="xatolik" + ) + + \ No newline at end of file