fields = ['name', 'url', 'sort_key', 'description']
-class BookSerializer(LegacyMixin, serializers.ModelSerializer):
+class BaseBookSerializer(LegacyMixin, serializers.ModelSerializer):
author = serializers.CharField(source='author_unicode')
kind = serializers.CharField(source='kind_unicode')
epoch = serializers.CharField(source='epoch_unicode')
simple_thumb = serializers.FileField(source='cover_api_thumb')
href = AbsoluteURLField(view_name='catalogue_api_book', view_args=['slug'])
url = AbsoluteURLField()
- liked = BookLiked()
+ cover = serializers.CharField()
cover_thumb = ThumbnailField('139x193', source='cover')
class Meta:
model = Book
fields = [
'kind', 'full_sort_key', 'title', 'url', 'cover_color', 'author',
- 'cover', 'liked', 'epoch', 'href', 'has_audio', 'genre',
+ 'cover', 'epoch', 'href', 'has_audio', 'genre',
'simple_thumb', 'slug', 'cover_thumb']
legacy_non_null_fields = [
'kind', 'author', 'epoch', 'genre',
'cover', 'simple_thumb', 'cover_thumb']
+class BookSerializer(BaseBookSerializer):
+ liked = BookLiked()
+ cover = serializers.FileField()
+
+ class Meta:
+ model = Book
+ fields = BaseBookSerializer.Meta.fields + ['liked']
+ legacy_non_null_fields = BaseBookSerializer.Meta.legacy_non_null_fields
+
+
class MediaSerializer(LegacyMixin, serializers.ModelSerializer):
url = serializers.FileField(source='file')
'cover', 'simple_cover', 'cover_thumb', 'simple_thumb']
+class BookPreviewSerializer(BookDetailSerializer):
+ class Meta:
+ model = Book
+ fields = BookDetailSerializer.Meta.fields + ['slug']
+ legacy_non_null_fields = BookDetailSerializer.Meta.legacy_non_null_fields
+
+
+class EbookSerializer(BookSerializer):
+ class Meta:
+ model = Book
+ fields = ['author', 'href', 'title', 'cover', 'slug'] + Book.ebook_formats
+ legacy_non_null_fields = ['author', 'cover'] + Book.ebook_formats
+
+
class CollectionListSerializer(serializers.ModelSerializer):
url = AbsoluteURLField()
href = AbsoluteURLField(view_name='collection-detail', view_args=['slug'])