107 lines
3.8 KiB
Python
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()] |