from rest_framework import status
from paypal.permissions import IsSubscribed
from api.handlers import read_tags
+from api.utils import vary_on_auth
from .helpers import books_after, order_books
from . import serializers
from catalogue.forms import BookImportForm
serializer_class = serializers.CollectionListSerializer
+@vary_on_auth # Because of 'liked'.
class CollectionDetail(RetrieveAPIView):
queryset = Collection.objects.all()
lookup_field = 'slug'
serializer_class = serializers.CollectionSerializer
+@vary_on_auth # Because of 'liked'.
class BookList(ListAPIView):
permission_classes = [DjangoModelPermissionsOrAnonReadOnly]
queryset = Book.objects.none() # Required for DjangoModelPermissions
raise Http404
+@vary_on_auth # Because of 'liked'.
class BookDetail(RetrieveAPIView):
queryset = Book.objects.all()
lookup_field = 'slug'
serializer_class = serializers.EbookSerializer
+@vary_on_auth # Because of 'liked'.
class Preview(ListAPIView):
queryset = Book.objects.filter(preview=True)
serializer_class = serializers.BookPreviewSerializer
+@vary_on_auth # Because of 'liked'.
class FilterBookList(ListAPIView):
serializer_class = serializers.FilterBookListSerializer
)
+@vary_on_auth # Because of 'liked'.
class FragmentList(ListAPIView):
serializer_class = serializers.FragmentSerializer
return Fragment.tagged.with_all(tags).select_related('book')
+@vary_on_auth # Because of 'liked'.
class FragmentView(RetrieveAPIView):
serializer_class = serializers.FragmentDetailSerializer