1 # This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later.
2 # Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
4 from rest_framework import serializers
5 from api.fields import AbsoluteURLField
6 from catalogue.models import Book
7 from club.models import Membership
8 from social.models import UserList
11 class BookLiked(serializers.ReadOnlyField):
12 def __init__(self, source='pk', **kwargs):
13 super(BookLiked, self).__init__(source=source, **kwargs)
15 def to_representation(self, value):
16 request = self.context['request']
17 if not hasattr(request, 'liked_books'):
18 if request.user.is_authenticated:
19 like_list = UserList.get_favorites_list(user=request.user)
20 if like_list is not None:
21 request.liked_books = [b.id for b in like_list.get_books()]
23 request.liked_books = []
25 request.liked_books = None
26 if request.liked_books is not None:
27 return value in request.liked_books
30 class EmbargoURLField(AbsoluteURLField):
31 def to_representation(self, value):
32 request = self.context['request']
34 if True or Membership.is_active_for(request.user):
35 return super().to_representation(value)