mypertamina-microsite-api/microsite_api/location/views.py
2026-02-26 11:06:14 +07:00

107 lines
3.8 KiB
Python

from django.shortcuts import render
from rest_framework import generics, filters, permissions
from django_filters.rest_framework import DjangoFilterBackend
from location import models, serializers
# PROVINCES
class ProvinceList(generics.ListCreateAPIView):
queryset = models.Province.objects.all()
serializer_class = serializers.ProvinceSerializer
filter_backends = [filters.SearchFilter, filters.OrderingFilter, DjangoFilterBackend]
search_fields = ['name', 'code']
filterset_fields = ['name', 'code']
ordering_fields = '__all__'
def get_permissions(self):
if self.request.method == 'POST':
return [permissions.IsAdminUser()]
return [permissions.IsAuthenticated()]
class ProvinceDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = models.Province.objects.all()
serializer_class = serializers.ProvinceSerializer
def get_permissions(self):
if self.request.method == 'PUT' or self.request.method == 'DELETE':
return [permissions.IsAdminUser()]
return [permissions.IsAuthenticated()]
# REGENCY/CITY
class RegencyCityList(generics.ListCreateAPIView):
queryset = models.RegencyCity.objects.all()
serializer_class = serializers.RegencyCitySerializer
filter_backends = [filters.SearchFilter, filters.OrderingFilter, DjangoFilterBackend]
search_fields = ['name', 'code']
filterset_fields = ['name', 'code', 'province']
ordering_fields = '__all__'
def get_serializer_class(self):
serializer_class = self.serializer_class
if self.request.method == 'GET':
serializer_class = serializers.RegencyCityDetailSerializer
return serializer_class
def get_permissions(self):
if self.request.method == 'POST':
return [permissions.IsAdminUser()]
return [permissions.IsAuthenticated()]
class RegencyCityDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = models.RegencyCity.objects.all()
serializer_class = serializers.RegencyCitySerializer
def get_serializer_class(self):
serializer_class = self.serializer_class
if self.request.method == 'GET':
serializer_class = serializers.RegencyCityDetailSerializer
return serializer_class
def get_permissions(self):
if self.request.method == 'PUT' or self.request.method == 'DELETE':
return [permissions.IsAdminUser()]
return [permissions.IsAuthenticated()]
# LOCATION
class LocationList(generics.ListCreateAPIView):
queryset = models.Location.objects.all()
serializer_class = serializers.LocationSerializer
filter_backends = [filters.SearchFilter, filters.OrderingFilter, DjangoFilterBackend]
search_fields = ['name', 'path']
filterset_fields = ['name', 'path', 'totem_code', 'province', 'regency_city', 'active']
ordering_fields = '__all__'
def get_serializer_class(self):
serializer_class = self.serializer_class
if self.request.method == 'GET':
serializer_class = serializers.LocationDetailSerializer
return serializer_class
def get_permissions(self):
if self.request.method == 'POST':
return [permissions.IsAdminUser()]
return [permissions.IsAuthenticated()]
class LocationDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = models.Location.objects.all()
serializer_class = serializers.LocationSerializer
def get_serializer_class(self):
serializer_class = self.serializer_class
if self.request.method == 'GET':
serializer_class = serializers.LocationDetailSerializer
return serializer_class
def get_permissions(self):
if self.request.method == 'PUT' or self.request.method == 'DELETE':
return [permissions.IsAdminUser()]
return [permissions.IsAuthenticated()]