# Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
#
from rest_framework import serializers
+import bookmarks.api.views
+import bookmarks.models
+import catalogue.api.serializers
import catalogue.models
from social import models
class UserListBooksField(serializers.Field):
def to_representation(self, value):
- return value.userlistitem_set.exclude(deleted=True).exclude(book=None).values_list('book__slug', flat=True)
+ return list(value.userlistitem_set.exclude(deleted=True).exclude(book=None).values_list('book__slug', flat=True))
def to_internal_value(self, value):
return {'books': catalogue.models.Book.objects.filter(slug__in=value)}
class UserListItemSerializer(serializers.ModelSerializer):
client_id = serializers.CharField(write_only=True, required=False)
- favorites = serializers.BooleanField(required=False)
+ favorites = serializers.BooleanField(read_only=True)
list_slug = serializers.SlugRelatedField(
queryset=models.UserList.objects.all(),
source='list',
queryset=catalogue.models.Book.objects.all(),
source='book',
slug_field='slug',
- required=False
+ required=False,
+ allow_null=True
+ )
+ bookmark = serializers.SlugRelatedField(
+ queryset=bookmarks.models.Bookmark.objects.all(),
+ slug_field='uuid',
+ required=False,
+ allow_null=True
+ )
+ quote = serializers.SlugRelatedField(
+ queryset=bookmarks.models.Quote.objects.all(),
+ slug_field='uuid',
+ required=False,
+ allow_null=True
)
class Meta:
}
+class UserListItemReadSerializer(UserListItemSerializer):
+ book = catalogue.api.serializers.BookSerializer2()
+ bookmark = bookmarks.api.views.BookmarkSerializer()
+ class Meta:
+ model = models.UserListItem
+ fields = [
+ 'client_id',
+ 'uuid',
+ 'order',
+ 'list_slug',
+ 'timestamp',
+ 'favorites',
+ 'deleted',
+
+ 'book',
+ 'fragment',
+ 'quote',
+ 'bookmark',
+ 'note',
+ ]
+
+
class UserListSerializerV3(serializers.ModelSerializer):
client_id = serializers.CharField(write_only=True, required=False)
timestamp = serializers.IntegerField(required=False)