From 035a31049ae84ca297d16f1422ec2e5f8c133d49 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Fri, 28 Nov 2025 16:44:13 +0500 Subject: [PATCH] region uchun crud api qoshildig --- core/apps/dashboard/serializers/region.py | 12 +++ core/apps/dashboard/urls.py | 13 +++- core/apps/dashboard/views/region.py | 90 +++++++++++++++++++++++ 3 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 core/apps/dashboard/serializers/region.py create mode 100644 core/apps/dashboard/views/region.py diff --git a/core/apps/dashboard/serializers/region.py b/core/apps/dashboard/serializers/region.py new file mode 100644 index 0000000..459d502 --- /dev/null +++ b/core/apps/dashboard/serializers/region.py @@ -0,0 +1,12 @@ +from rest_framework import serializers + +# shared +from core.apps.shared.models import Region + + +class RegionSerializer(serializers.ModelSerializer): + class Meta: + model = Region + fields = [ + 'id', 'name' + ] \ No newline at end of file diff --git a/core/apps/dashboard/urls.py b/core/apps/dashboard/urls.py index f92e64c..b594f9b 100644 --- a/core/apps/dashboard/urls.py +++ b/core/apps/dashboard/urls.py @@ -11,7 +11,8 @@ from core.apps.dashboard.views import user as user_views from core.apps.dashboard.views import district as district_views # doctor from core.apps.dashboard.views.doctor import DoctorViewSet - +# region +from core.apps.dashboard.views import region as region_views urlpatterns = [ # -------------- user -------------- @@ -32,7 +33,15 @@ urlpatterns = [ path('/delete/', district_views.DistrictDeleteApiView.as_view(), name='district-delete-api'), ] )), - + # -------------- region -------------- + path('region/', include( + [ + path('list/', region_views.RegionListApiView.as_view(), name='region-list-api'), + path('create/', region_views.RegionCreateApiView.as_view(), name='region-create-api'), + path('/update/', region_views.RegionUpdateApiView.as_view(), name='region-update-api'), + path('/delete/', region_views.RegionDeleteApiView.as_view(), name='region-delete-api'), + ] + )), ] diff --git a/core/apps/dashboard/views/region.py b/core/apps/dashboard/views/region.py new file mode 100644 index 0000000..fab476f --- /dev/null +++ b/core/apps/dashboard/views/region.py @@ -0,0 +1,90 @@ +# django +from django.shortcuts import get_object_or_404 + +# rest framework +from rest_framework import generics, permissions, views + +# shared +from core.apps.shared.utils.response_mixin import ResponseMixin +from core.apps.shared.serializers.region import RegionSerializer +from core.apps.shared.models import Region + + +class RegionListApiView(generics.GenericAPIView, ResponseMixin): + serializer_class = RegionSerializer + queryset = Region.objects.all() + + 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 RegionCreateApiView(generics.GenericAPIView, ResponseMixin): + serializer_class = RegionSerializer + queryset = Region.objects.all() + permission_classes = [permissions.IsAdminUser] + + def post(self, request): + try: + serializer = self.serializer_class(data=request.data) + if serializer.is_valid(): + name = serializer.validated_data.get('name') + region = Region.objects.create(name=name) + return self.success_response(data=RegionSerializer(region).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" + ) + + + +class RegionUpdateApiView(generics.GenericAPIView, ResponseMixin): + serializer_class = RegionSerializer + queryset = Region.objects.all() + permission_classes = [permissions.IsAdminUser] + + def patch(self, request, id): + try: + obj = get_object_or_404(Region, id=id) + serializer = self.serializer_class(data=request.data) + if serializer.is_valid(): + name = serializer.validated_data.get('name') + obj.name = name + obj.save() + return self.success_response(data=RegionSerializer(obj).data, message='malumot tahrirlandi') + return self.failure_response(data=serializer.errors, message='malumot tahrirlanmadi') + + except Exception as e: + return self.error_response( + data=str(e), + message="xatolik" + ) + + + +class RegionDeleteApiView(views.APIView, ResponseMixin): + permission_classes = [permissions.IsAdminUser] + + def delete(self, request, id): + try: + obj = get_object_or_404(Region, id=id) + obj.delete() + return self.success_response(data={}, message='malumot ochirildi') + + except Exception as e: + return self.error_response( + data=str(e), + message="xatolik" + ) +