"""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 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 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