from django.contrib.contenttypes.models import ContentType from django_filters.rest_framework import DjangoFilterBackend from rest_framework import generics, permissions from rest_framework.generics import get_object_or_404 from rest_framework.response import Response from main import serializers from main.filters import AwardFilter from main.models import Award, Footer, PageType, Panel from main.views import SiteSettingsView, SiteListView class AwardLstView(generics.ListCreateAPIView): """Award list create view.""" queryset = Award.objects.all() serializer_class = serializers.BackAwardSerializer permission_classes = (permissions.IsAdminUser,) filterset_class = AwardFilter class AwardRUDView(generics.RetrieveUpdateDestroyAPIView): """Award RUD view.""" queryset = Award.objects.all() serializer_class = serializers.BackAwardSerializer permission_classes = (permissions.IsAdminUser,) lookup_field = 'id' class ContentTypeView(generics.ListAPIView): """ContentType list view""" queryset = ContentType.objects.all() serializer_class = serializers.ContentTypeBackSerializer permission_classes = (permissions.IsAdminUser,) filter_backends = (DjangoFilterBackend, ) ordering_fields = '__all__' lookup_field = 'id' filterset_fields = ( 'id', 'model', 'app_label', ) class FeatureBackView(generics.ListCreateAPIView): """Feature list or create View.""" serializer_class = serializers.FeatureSerializer class SiteFeatureBackView(generics.ListCreateAPIView): """Feature list or create View.""" serializer_class = serializers.SiteFeatureSerializer class FeatureRUDBackView(generics.RetrieveUpdateDestroyAPIView): """Feature RUD View.""" serializer_class = serializers.FeatureSerializer class SiteFeatureRUDBackView(generics.RetrieveUpdateDestroyAPIView): """Feature RUD View.""" serializer_class = serializers.SiteFeatureSerializer class SiteSettingsBackOfficeView(SiteSettingsView): """Site settings View.""" serializer_class = serializers.SiteSerializer class SiteListBackOfficeView(SiteListView): """Site settings View.""" serializer_class = serializers.SiteSerializer class FooterBackView(generics.ListCreateAPIView): """Footer back list/create view.""" permission_classes = (permissions.IsAuthenticatedOrReadOnly,) serializer_class = serializers.FooterBackSerializer queryset = Footer.objects.all() class FooterRUDBackView(generics.RetrieveUpdateDestroyAPIView): """Footer back RUD view.""" permission_classes = (permissions.IsAuthenticatedOrReadOnly,) serializer_class = serializers.FooterBackSerializer queryset = Footer.objects.all() class PageTypeListCreateView(generics.ListCreateAPIView): """PageType back office view.""" permission_classes = (permissions.IsAuthenticatedOrReadOnly, ) pagination_class = None serializer_class = serializers.PageTypeBaseSerializer queryset = PageType.objects.all() class PanelsListCreateView(generics.ListCreateAPIView): """Custom panels view.""" permission_classes = ( permissions.IsAdminUser, ) serializer_class = serializers.PanelSerializer queryset = Panel.objects.all() class PanelsRUDView(generics.RetrieveUpdateDestroyAPIView): """Custom panels view.""" permission_classes = ( permissions.IsAdminUser, ) serializer_class = serializers.PanelSerializer queryset = Panel.objects.all() class PanelsExecuteView(generics.ListAPIView): """Custom panels view.""" permission_classes = ( permissions.IsAdminUser, ) queryset = Panel.objects.all() def list(self, request, *args, **kwargs): panel = get_object_or_404(Panel, id=self.kwargs['pk']) return Response(panel.execute_query(request))