From 2c042a59294792dc0eee322730e41199a4d481a5 Mon Sep 17 00:00:00 2001 From: Mojtaba-z Date: Sun, 7 Sep 2025 15:17:32 +0330 Subject: [PATCH] city & province list for pos device --- apps/authentication/pos/__init__.py | 0 apps/authentication/pos/api/__init__.py | 0 apps/authentication/pos/api/v1/__init__.py | 0 apps/authentication/pos/api/v1/api.py | 31 ++++++++++++++++++++ apps/authentication/pos/api/v1/serializer.py | 0 apps/authentication/pos/api/v1/urls.py | 12 ++++++++ apps/authentication/urls.py | 1 + 7 files changed, 44 insertions(+) create mode 100644 apps/authentication/pos/__init__.py create mode 100644 apps/authentication/pos/api/__init__.py create mode 100644 apps/authentication/pos/api/v1/__init__.py create mode 100644 apps/authentication/pos/api/v1/api.py create mode 100644 apps/authentication/pos/api/v1/serializer.py create mode 100644 apps/authentication/pos/api/v1/urls.py diff --git a/apps/authentication/pos/__init__.py b/apps/authentication/pos/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/authentication/pos/api/__init__.py b/apps/authentication/pos/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/authentication/pos/api/v1/__init__.py b/apps/authentication/pos/api/v1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/authentication/pos/api/v1/api.py b/apps/authentication/pos/api/v1/api.py new file mode 100644 index 0000000..be6aef5 --- /dev/null +++ b/apps/authentication/pos/api/v1/api.py @@ -0,0 +1,31 @@ +from apps.authentication.api.v1.serializers.serializer import ( + CitySerializer, + ProvinceSerializer +) +from apps.core.mixins.soft_delete_mixin import SoftDeleteMixin +from apps.authentication.models import City, Province +from rest_framework.viewsets import ModelViewSet +from rest_framework.response import Response +from rest_framework import status + + +class CityViewSet(ModelViewSet, SoftDeleteMixin): # noqa + """ Crud operations for city model """ # + queryset = City.objects.all() + serializer_class = CitySerializer + + def list(self, request, *args, **kwargs): + """ return list of cities by province """ + + serializer = self.serializer_class( + self.queryset.filter( + province_id=int(request.GET['province']) + ), many=True + ) + return Response(serializer.data, status=status.HTTP_200_OK) + + +class ProvinceViewSet(ModelViewSet, SoftDeleteMixin): + """ Crud operations for province model """ # + queryset = Province.objects.all() + serializer_class = ProvinceSerializer diff --git a/apps/authentication/pos/api/v1/serializer.py b/apps/authentication/pos/api/v1/serializer.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/authentication/pos/api/v1/urls.py b/apps/authentication/pos/api/v1/urls.py new file mode 100644 index 0000000..5d4b05f --- /dev/null +++ b/apps/authentication/pos/api/v1/urls.py @@ -0,0 +1,12 @@ +from apps.authentication.pos.api.v1.api import CityViewSet, ProvinceViewSet +from django.urls import path, include +from rest_framework import routers + +router = routers.DefaultRouter() + +router.register(r'city', CityViewSet, basename='city') +router.register(r'province', ProvinceViewSet, basename='province') + +urlpatterns = [ + path('api/v1/', include(router.urls)) +] diff --git a/apps/authentication/urls.py b/apps/authentication/urls.py index 5c71b0f..8c8f101 100644 --- a/apps/authentication/urls.py +++ b/apps/authentication/urls.py @@ -7,4 +7,5 @@ router.register('', '', basename='') app_name = "authentication" urlpatterns = [ path('api/v1/', include('apps.authentication.api.v1.urls')), + path('pos/', include('apps.authentication.pos.api.v1.urls')), ]