More views in DRF.
[wolnelektury.git] / src / catalogue / api / serializers.py
index 7c792d5..e8f04ca 100644 (file)
@@ -24,7 +24,7 @@ class TagDetailSerializer(serializers.ModelSerializer):
         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')
@@ -33,20 +33,30 @@ class BookSerializer(LegacyMixin, serializers.ModelSerializer):
     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')
 
@@ -92,6 +102,20 @@ class BookDetailSerializer(LegacyMixin, serializers.ModelSerializer):
                                   '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'])