From 54138ff8e5fb8916f32b590fc02b2d79e9aef039 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 2 Sep 2025 18:04:27 +0500 Subject: [PATCH] add: add unit crud --- core/apps/admin_panel/serializers/unity.py | 11 ++++ core/apps/admin_panel/urls.py | 13 +++- core/apps/admin_panel/views/unity.py | 69 ++++++++++++++++++++++ 3 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 core/apps/admin_panel/serializers/unity.py create mode 100644 core/apps/admin_panel/views/unity.py diff --git a/core/apps/admin_panel/serializers/unity.py b/core/apps/admin_panel/serializers/unity.py new file mode 100644 index 0000000..04b5659 --- /dev/null +++ b/core/apps/admin_panel/serializers/unity.py @@ -0,0 +1,11 @@ +from rest_framework import serializers + +from core.apps.products.models import Unity + + +class UnitySerializer(serializers.ModelSerializer): + class Meta: + model = Unity + fields = [ + 'id', 'name' + ] \ No newline at end of file diff --git a/core/apps/admin_panel/urls.py b/core/apps/admin_panel/urls.py index c8fd316..aa80456 100644 --- a/core/apps/admin_panel/urls.py +++ b/core/apps/admin_panel/urls.py @@ -2,7 +2,7 @@ from django.urls import path, include from core.apps.admin_panel.views import user as user_views from core.apps.admin_panel.views import banner as banner_views - +from core.apps.admin_panel.views import unity as unity_views urlpatterns = [ path('user/', include( @@ -22,5 +22,14 @@ urlpatterns = [ path('/update/', banner_views.BannerUpdateApiView.as_view()), path('/delete/', banner_views.BannerDeleteApiView.as_view()), ] - )) + )), + path('unity/', include( + [ + path('create/', unity_views.UnityCreateApiView.as_view()), + path('list/', unity_views.UnityListApiView.as_view()), + path('/', unity_views.UnityDetailApiView.as_view()), + path('/update/', unity_views.UnityUpdateApiView.as_view()), + path('/delete/', unity_views.UnityDeleteApiView.as_view()), + ] + )), ] \ No newline at end of file diff --git a/core/apps/admin_panel/views/unity.py b/core/apps/admin_panel/views/unity.py new file mode 100644 index 0000000..d89831c --- /dev/null +++ b/core/apps/admin_panel/views/unity.py @@ -0,0 +1,69 @@ +from django.shortcuts import get_object_or_404 + +from rest_framework import generics, status, permissions + +from core.apps.products.models import Unity +from core.apps.admin_panel.serializers.unity import UnitySerializer +from core.apps.shared.mixins.response import ResponseMixin + + +class UnityCreateApiView(generics.GenericAPIView, ResponseMixin): + serializer_class = UnitySerializer + queryset = Unity.objects.all() + permission_classes = [permissions.IsAdminUser] + + def post(self, request): + serializer = self.serializer_class(data=request.data) + if serializer.is_valid(raise_exception=True): + serializer.save() + return self.success_response(message='birlik qoshildi', status_code=status.HTTP_201_CREATED) + return self.failure_response(message='birlik qoshishda xatolik', data=serializer.errors) + + +class UnityListApiView(generics.GenericAPIView, ResponseMixin): + serializer_class = UnitySerializer + queryset = Unity.objects.all() + permission_classes = [permissions.IsAdminUser] + + def get(self, request): + queryset = self.queryset + page = self.paginate_queryset(queryset) + if page is not None: + serializer = self.serializer_class(page, many=True) + return self.get_paginated_response(serializer.data) + + +class UnityDeleteApiView(generics.GenericAPIView, ResponseMixin): + serializer_class = UnitySerializer + queryset = Unity.objects.all() + permission_classes = [permissions.IsAdminUser] + + def delete(self, request, id): + unity = get_object_or_404(Unity, id=id) + unity.delete() + return self.success_response(message='birlik ochirildi', status_code=status.HTTP_204_NO_CONTENT) + + +class UnityUpdateApiView(generics.GenericAPIView, ResponseMixin): + serializer_class = UnitySerializer + queryset = Unity.objects.all() + permission_classes = [permissions.IsAdminUser] + + def patch(self, request, id): + unity = get_object_or_404(Unity, id=id) + serializer = self.serializer_class(data=request.data, instance=unity) + if serializer.is_valid(): + serializer.save() + return self.success_response(message='birlik tahrirlandi') + return self.failure_response(message='hatolik', data=serializer.errors) + + +class UnityDetailApiView(generics.GenericAPIView, ResponseMixin): + serializer_class = UnitySerializer + queryset = Unity.objects.all() + permission_classes = [permissions.IsAdminUser] + + def get(self, request, id): + unity = get_object_or_404(Unity, id=id) + serializer = self.serializer_class(unity) + return self.success_response(message='birlik malumotlari', data=serializer.data)