+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)
+
+ class Meta:
+ model = models.UserList
+ fields = [
+ 'timestamp',
+ 'client_id',
+ 'name',
+ 'slug',
+ 'favorites',
+ 'deleted',
+ ]
+ read_only_fields = [
+ 'favorites',
+ 'slug',
+ ]
+ extra_kwargs = {
+ 'slug': {
+ 'required': False
+ }
+ }
+
+ def create(self, validated_data):
+ instance = models.UserList.get_by_name(
+ validated_data['user'],
+ validated_data['name'],
+ create=True
+ )
+ return instance
+
+