X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/540e76dd8e04d7bab431da696565e826788bd218..e6239f4e83a99503be4c09c329029df1d3f2b5b9:/src/catalogue/api/fields.py?ds=inline diff --git a/src/catalogue/api/fields.py b/src/catalogue/api/fields.py index 145780e2b..9b8b82cfc 100644 --- a/src/catalogue/api/fields.py +++ b/src/catalogue/api/fields.py @@ -1,6 +1,11 @@ +# This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Wolne Lektury. See NOTICE for more information. +# from rest_framework import serializers -from sorl.thumbnail import default +from api.fields import AbsoluteURLField from catalogue.models import Book +from club.models import Membership +from social.models import UserList class BookLiked(serializers.ReadOnlyField): @@ -10,21 +15,23 @@ class BookLiked(serializers.ReadOnlyField): def to_representation(self, value): request = self.context['request'] if not hasattr(request, 'liked_books'): - if request.user.is_authenticated(): - request.liked_books = set(Book.tagged.with_any(request.user.tag_set.all()).values_list('id', flat=True)) + if request.user.is_authenticated: + like_list = UserList.get_favorites_list(user=request.user) + if like_list is not None: + request.liked_books = [b.id for b in like_list.get_books()] + else: + request.liked_books = [] else: request.liked_books = None if request.liked_books is not None: return value in request.liked_books -class ThumbnailField(serializers.FileField): - def __init__(self, geometry, *args, **kwargs): - self.geometry = geometry - super(ThumbnailField, self).__init__(*args, **kwargs) - +class EmbargoURLField(AbsoluteURLField): def to_representation(self, value): - if value: - return super(ThumbnailField, self).to_representation( - default.backend.get_thumbnail(value, self.geometry) - ) + request = self.context['request'] + # FIXME: See #3955. + if True or Membership.is_active_for(request.user): + return super().to_representation(value) + else: + return None