111 lines
3.5 KiB
Python
111 lines
3.5 KiB
Python
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
|
|
|