Files
backend-v1/core/apps/shared/views/region/region.py
2026-04-21 16:41:37 +05:00

75 lines
2.4 KiB
Python

from rest_framework import generics
from rest_framework.permissions import IsAuthenticated
from drf_spectacular.utils import extend_schema, OpenApiParameter
from drf_spectacular.types import OpenApiTypes
from core.apps.shared.serializers.region.district import DistrictSerializer, VillageSerializer, RegionSerializer
from core.apps.shared.models import RegionModel, VillageModel, DistrictModel
@extend_schema(
parameters=[
OpenApiParameter(
name="region",
type=OpenApiTypes.INT,
location=OpenApiParameter.QUERY,
description="Filter by region ID"
),
OpenApiParameter(
name="name",
type=OpenApiTypes.STR,
location=OpenApiParameter.QUERY,
description="Filter by district name"
),
]
)
class DistrictListCreateView(generics.ListCreateAPIView):
permission_classes = [IsAuthenticated]
serializer_class = DistrictSerializer
queryset = DistrictModel.objects.all()
def get_queryset(self):
region = self.request.query_params.get('region')
name = self.request.query_params.get('name')
if name:
return self.queryset.filter(name__icontains=name)
if region:
return self.queryset.filter(region=region)
return super().get_queryset()
@extend_schema(
parameters=[
OpenApiParameter(
name="district",
type=OpenApiTypes.INT,
location=OpenApiParameter.QUERY,
description="Filter by district ID"
),
OpenApiParameter(
name="name",
type=OpenApiTypes.STR,
location=OpenApiParameter.QUERY,
description="Filter by village name"
),
]
)
class VillageListCreateView(generics.ListCreateAPIView):
permission_classes = [IsAuthenticated]
serializer_class = VillageSerializer
queryset = VillageModel.objects.all()
def get_queryset(self):
district = self.request.query_params.get('district')
name = self.request.query_params.get('name')
if district:
return self.queryset.filter(district=district)
if name:
return self.queryset.filter(name__icontains=name)
return super().get_queryset()
class RegionListCreateView(generics.ListCreateAPIView):
permission_classes = [IsAuthenticated]
serializer_class = RegionSerializer
queryset = RegionModel.objects.all()