Upgrade for allauth
[wolnelektury.git] / src / catalogue / api / fields.py
index 48c0095..9b8b82c 100644 (file)
@@ -1,10 +1,11 @@
-# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+# 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 api.fields import AbsoluteURLField
 from catalogue.models import Book
 from club.models import Membership
+from social.models import UserList
 
 
 class BookLiked(serializers.ReadOnlyField):
@@ -14,8 +15,12 @@ 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:
@@ -25,7 +30,8 @@ class BookLiked(serializers.ReadOnlyField):
 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