class EmbargoURLField(AbsoluteURLField):
def to_representation(self, value):
request = self.context['request']
- if Membership.is_active_for(request.user):
+ # FIXME: See #3955.
+ if True or Membership.is_active_for(request.user):
return super().to_representation(value)
else:
return None
from rest_framework import status
from api.handlers import read_tags
from api.utils import vary_on_auth
+from club.models import Membership
from .helpers import books_after, order_books
from . import serializers
from catalogue.forms import BookImportForm
books = Book.objects.all()
books = order_books(books, new_api)
+ if not Membership.is_active_for(self.request.user):
+ books = books.exclude(preview=True)
+
if self.kwargs.get('top_level'):
books = books.filter(parent=None)
if self.kwargs.get('audiobooks'):
serializer_class = serializers.EbookSerializer
-@vary_on_auth # Because of 'liked'.
+@method_decorator(never_cache, name='dispatch')
class Preview(ListAPIView):
#queryset = Book.objects.filter(preview=True)
serializer_class = serializers.BookPreviewSerializer
def get_queryset(self):
qs = Book.objects.filter(preview=True)
- # FIXME: temporary workaround for a problem with iOS app.
- if 'Darwin' in self.request.META['HTTP_USER_AGENT']:
+ # FIXME: temporary workaround for a problem with iOS app; see #3954.
+ if 'Darwin' in self.request.META['HTTP_USER_AGENT'] and 'debug' not in self.request.GET:
qs = qs.none()
return qs
is_lektura = self.parse_bool(self.request.query_params.get('lektura'))
is_audiobook = self.parse_bool(self.request.query_params.get('audiobook'))
preview = self.parse_bool(self.request.query_params.get('preview'))
+ if not Membership.is_active_for(self.request.user):
+ preview = False
new_api = self.request.query_params.get('new_api')
after = self.request.query_params.get('after')