from rest_framework import generics from rest_framework import permissions from collection import models from collection.serializers import common as serializers # Mixins class CollectionViewMixin(generics.GenericAPIView): """Mixin for Collection view""" model = models.Collection queryset = models.Collection.objects.all() class CollectionItemViewMixin(generics.GenericAPIView): """Mixin for CollectionItem view""" model = models.CollectionItem queryset = models.CollectionItem.objects.all() class GuideViewMixin(generics.GenericAPIView): """Mixin for Guide view""" model = models.Guide queryset = models.Guide.objects.all() # Views class CollectionListView(CollectionViewMixin, generics.ListAPIView): """List Collection view""" permission_classes = (permissions.AllowAny,) serializer_class = serializers.CollectionSerializer def get_queryset(self): """Override get_queryset method""" return models.Collection.objects.published()\ .by_country_code(code=self.request.country_code)\ .order_by('-on_top', '-created') class CollectionRetrieveView(CollectionViewMixin, generics.RetrieveAPIView): """Retrieve Collection view""" serializer_class = serializers.CollectionSerializer class CollectionCreateView(CollectionViewMixin, generics.CreateAPIView): """Create Collection view""" serializer_class = serializers.CollectionSerializer class CollectionDestroyView(CollectionViewMixin, generics.DestroyAPIView): """Destroy Collection view""" serializer_class = serializers.CollectionSerializer class CollectionUpdateView(CollectionViewMixin, generics.UpdateAPIView): """Update Collection view""" serializer = serializers.CollectionSerializer class CollectionItemListView(CollectionItemViewMixin, generics.ListAPIView): """List CollectionItem view""" permission_classes = (permissions.AllowAny,) serializer_class = serializers.CollectionItemSerializer class CollectionItemRetrieveView(CollectionItemViewMixin, generics.RetrieveAPIView): """Retrieve CollectionItem view""" serializer_class = serializers.CollectionItemSerializer class CollectionItemCreateView(CollectionItemViewMixin, generics.CreateAPIView): """Create CollectionItem view""" serializer_class = serializers.CollectionItemSerializer class CollectionItemDestroyView(CollectionItemViewMixin, generics.DestroyAPIView): """Destroy CollectionItem view""" serializer_class = serializers.CollectionItemSerializer class CollectionItemUpdateView(CollectionItemViewMixin, generics.UpdateAPIView): """Update CollectionItem view""" serializer = serializers.CollectionItemSerializer class GuideListView(GuideViewMixin, generics.ListAPIView): """List Guide view""" permission_classes = (permissions.AllowAny,) serializer_class = serializers.GuideSerializer class GuideRetrieveView(GuideViewMixin, generics.RetrieveAPIView): """Retrieve Guide view""" serializer_class = serializers.GuideSerializer class GuideCreateView(GuideViewMixin, generics.CreateAPIView): """Create Guide view""" serializer_class = serializers.GuideSerializer class GuideDestroyView(GuideViewMixin, generics.DestroyAPIView): """Destroy Guide view""" serializer_class = serializers.GuideSerializer class GuideUpdateView(GuideViewMixin, generics.UpdateAPIView): """Update Guide view""" serializer = serializers.GuideSerializer