Replace libsass with dart-sass.
[wolnelektury.git] / src / catalogue / api / fields.py
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.
3 #
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
9
10
11 class BookLiked(serializers.ReadOnlyField):
12     def __init__(self, source='pk', **kwargs):
13         super(BookLiked, self).__init__(source=source, **kwargs)
14
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()]
22                 else:
23                     request.liked_books = []
24             else:
25                 request.liked_books = None
26         if request.liked_books is not None:
27             return value in request.liked_books
28
29
30 class EmbargoURLField(AbsoluteURLField):
31     def to_representation(self, value):
32         request = self.context['request']
33         # FIXME: See #3955.
34         if True or Membership.is_active_for(request.user):
35             return super().to_representation(value)
36         else:
37             return None