gault-millau/apps/location/views.py

130 lines
3.7 KiB
Python

"""Location app views."""
from rest_framework import generics
from rest_framework import permissions
from location import models, serializers
from utils.views import JWTGenericViewMixin
# Mixins
class CountryViewMixin(JWTGenericViewMixin, generics.GenericAPIView):
"""View Mixin for model Country"""
serializer_class = serializers.CountrySerializer
permission_classes = (permissions.AllowAny, )
def get_queryset(self):
return models.Country.objects.annotate_localized_fields(
locale=self._get_locale(request=self.request))
class RegionViewMixin(generics.GenericAPIView):
"""View Mixin for model Region"""
model = models.Region
queryset = models.Region.objects.all()
class CityViewMixin(generics.GenericAPIView):
"""View Mixin for model City"""
model = models.City
queryset = models.City.objects.all()
class AddressViewMixin(generics.GenericAPIView):
"""View Mixin for model Address"""
model = models.Address
queryset = models.Address.objects.all()
# Country
class CountryListView(CountryViewMixin, generics.ListAPIView):
"""List view for model Country."""
pagination_class = None
class CountryRetrieveView(CountryViewMixin, generics.RetrieveAPIView):
"""Retrieve view for model Country."""
# Region
class RegionCreateView(RegionViewMixin, generics.CreateAPIView):
"""Create view for model Region"""
serializer_class = serializers.RegionSerializer
class RegionRetrieveView(RegionViewMixin, generics.RetrieveAPIView):
"""Retrieve view for model Region"""
serializer_class = serializers.RegionSerializer
class RegionListView(RegionViewMixin, generics.ListAPIView):
"""List view for model Country"""
permission_classes = (permissions.AllowAny, )
serializer_class = serializers.CountrySerializer
class RegionDestroyView(RegionViewMixin, generics.DestroyAPIView):
"""Destroy view for model Country"""
serializer_class = serializers.CountrySerializer
class RegionUpdateView(RegionViewMixin, generics.UpdateAPIView):
"""Update view for model Country"""
serializer_class = serializers.CountrySerializer
# City
class CityCreateView(CityViewMixin, generics.CreateAPIView):
"""Create view for model City"""
serializer_class = serializers.CitySerializer
class CityRetrieveView(CityViewMixin, generics.RetrieveAPIView):
"""Retrieve view for model City"""
serializer_class = serializers.CitySerializer
class CityListView(CityViewMixin, generics.ListAPIView):
"""List view for model City"""
permission_classes = (permissions.AllowAny, )
serializer_class = serializers.CitySerializer
class CityDestroyView(CityViewMixin, generics.DestroyAPIView):
"""Destroy view for model City"""
serializer_class = serializers.CitySerializer
class CityUpdateView(CityViewMixin, generics.UpdateAPIView):
"""Update view for model City"""
serializer_class = serializers.CitySerializer
# Address
class AddressCreateView(AddressViewMixin, generics.CreateAPIView):
"""Create view for model Address"""
serializer_class = serializers.AddressSerializer
class AddressRetrieveView(AddressViewMixin, generics.RetrieveAPIView):
"""Retrieve view for model Address"""
serializer_class = serializers.AddressSerializer
class AddressListView(AddressViewMixin, generics.ListAPIView):
"""List view for model Address"""
permission_classes = (permissions.AllowAny, )
serializer_class = serializers.AddressSerializer
class AddressDestroyView(AddressViewMixin, generics.DestroyAPIView):
"""Destroy view for model Address"""
serializer_class = serializers.AddressSerializer
class AddressUpdateView(AddressViewMixin, generics.UpdateAPIView):
"""Update view for model Address"""
serializer_class = serializers.AddressSerializer