gault-millau/apps/main/views.py
2019-10-17 07:03:48 +00:00

114 lines
3.5 KiB
Python

"""Main app views."""
from rest_framework import generics, permissions
from rest_framework.response import Response
from main import methods, models, serializers
from utils.serializers import EmptySerializer
from django.http import Http404
class DetermineSiteView(generics.GenericAPIView):
"""Determine user's site."""
permission_classes = (permissions.AllowAny,)
serializer_class = EmptySerializer
def get(self, request, *args, **kwargs):
user_ip = methods.get_user_ip(request)
country_code = methods.determine_country_code(user_ip)
url = methods.determine_user_site_url(country_code)
return Response(data={'url': url})
class DetermineLocation(generics.GenericAPIView):
"""Determine user's location."""
permission_classes = (permissions.AllowAny,)
serializer_class = EmptySerializer
def get(self, request, *args, **kwargs):
user_ip = methods.get_user_ip(request)
longitude, latitude = methods.determine_coordinates(user_ip)
city = methods.determine_user_city(user_ip)
if longitude and latitude and city:
return Response(data={'latitude': latitude, 'longitude': longitude, 'city': city})
else:
raise Http404
class SiteSettingsView(generics.RetrieveAPIView):
"""Site settings View."""
lookup_field = 'subdomain'
permission_classes = (permissions.AllowAny,)
queryset = models.SiteSettings.objects.all()
serializer_class = serializers.SiteSettingsSerializer
class SiteListView(generics.ListAPIView):
"""Site settings View."""
pagination_class = None
permission_classes = (permissions.AllowAny,)
queryset = models.SiteSettings.objects.with_country()
serializer_class = serializers.SiteSerializer
#
# class FeatureViewMixin:
# """Feature view mixin."""
#
# queryset = models.Feature.objects.all()
# serializer_class = serializers.FeatureSerializer
# permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
#
#
# class FeaturesLCView(FeatureViewMixin, generics.ListCreateAPIView):
# """Site features LC View."""
#
# pagination_class = None
#
#
# class FeaturesRUDView(FeatureViewMixin, generics.RetrieveUpdateDestroyAPIView):
# """Site features RUD View."""
#
#
# class SiteFeaturesViewMixin:
# """Site feature view mixin."""
#
# queryset = models.SiteFeature.objects.all()
# serializer_class = serializers.SiteFeatureSerializer
# permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
#
#
# class SiteFeaturesLCView(SiteFeaturesViewMixin, generics.ListCreateAPIView):
# """Site features LC."""
#
# pagination_class = None
#
#
# class SiteFeaturesRUDView(SiteFeaturesViewMixin,
# generics.RetrieveUpdateDestroyAPIView):
# """Site features RUD."""
class AwardView(generics.ListAPIView):
"""Awards list view."""
serializer_class = serializers.AwardSerializer
queryset = models.Award.objects.all()
permission_classes = (permissions.AllowAny,)
class AwardRetrieveView(generics.RetrieveAPIView):
"""Award retrieve view."""
serializer_class = serializers.AwardSerializer
queryset = models.Award.objects.all()
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
class CarouselListView(generics.ListAPIView):
"""Return list of carousel items."""
queryset = models.Carousel.objects.all()
serializer_class = serializers.CarouselListSerializer
permission_classes = (permissions.AllowAny,)
pagination_class = None