# 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 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)
@never_cache
class ListItemListViewV3(ListCreateAPIView):
permission_classes = [IsAuthenticatedOrReadOnly]
- serializer_class = serializers.UserListItemSerializer
def get_queryset(self):
lst = get_userlist(self.kwargs['slug'], self.request)
return lst.userlistitem_set.all().order_by('order')
+ def get_serializer_class(self):
+ if self.request.method == 'GET':
+ return serializers.UserListItemReadSerializer
+ else:
+ return serializers.UserListItemSerializer
+
def get_serializer(self, *args, **kwargs):
serializer_class = self.get_serializer_class()
kwargs.setdefault('context', self.get_serializer_context())
@never_cache
class ListItemViewV3(RetrieveUpdateDestroyAPIView):
permission_classes = [IsAuthenticated]
- serializer_class = serializers.UserListItemSerializer
lookup_field = 'uuid'
def get_queryset(self):
list__user=self.request.user
)
+ def get_serializer_class(self):
+ if self.request.method == 'GET':
+ return serializers.UserListItemReadSerializer
+ else:
+ return serializers.UserListItemSerializer
+
@vary_on_auth
class ShelfView(ListAPIView):