75 lines
2.4 KiB
Python
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()
|