add tag ids
[wolnelektury.git] / src / catalogue / api / serializers.py
index 1608b0f..3d6341e 100644 (file)
@@ -50,7 +50,7 @@ class AuthorItemSerializer(serializers.ModelSerializer):
     class Meta:
         model = Tag
         fields = [
-            'url', 'href', 'name'
+            'id', 'url', 'href', 'name', 'slug'
         ]
 
 class AuthorSerializer(AuthorItemSerializer):
@@ -59,7 +59,7 @@ class AuthorSerializer(AuthorItemSerializer):
     class Meta:
         model = Tag
         fields = [
-            'url', 'href', 'name', 'slug', 'sort_key', 'description',
+            'id', 'url', 'href', 'name', 'slug', 'sort_key', 'description',
             'genitive', 'photo', 'photo_thumb', 'photo_attribution',
         ]
 
@@ -71,7 +71,7 @@ class EpochItemSerializer(serializers.ModelSerializer):
     )
     class Meta:
         model = Tag
-        fields = ['url', 'href', 'name']
+        fields = ['id', 'url', 'href', 'name', 'slug']
 
 class EpochSerializer(EpochItemSerializer):
     class Meta:
@@ -89,7 +89,7 @@ class GenreItemSerializer(serializers.ModelSerializer):
     )
     class Meta:
         model = Tag
-        fields = ['url', 'href', 'name']
+        fields = ['id', 'url', 'href', 'name', 'slug']
 
 class GenreSerializer(GenreItemSerializer):
     class Meta:
@@ -107,7 +107,7 @@ class KindItemSerializer(serializers.ModelSerializer):
     )
     class Meta:
         model = Tag
-        fields = ['url', 'href', 'name']
+        fields = ['id', 'url', 'href', 'name', 'slug']
 
 class KindSerializer(KindItemSerializer):
     class Meta:
@@ -117,6 +117,18 @@ class KindSerializer(KindItemSerializer):
             'collective_noun',
         ]
 
+class ThemeSerializer(serializers.ModelSerializer):
+    url = AbsoluteURLField()
+    href = AbsoluteURLField(
+        view_name='catalogue_api_theme',
+        view_args=('slug',)
+    )
+    class Meta:
+        model = Tag
+        fields = [
+            'url', 'href', 'name', 'slug', 'sort_key', 'description',
+        ]
+
 
 class TranslatorSerializer(serializers.Serializer):
     name = serializers.CharField(source='*')
@@ -143,6 +155,7 @@ class BookSerializer2(serializers.ModelSerializer):
         view_name='catalogue_api_book',
         lookup_field='slug'
     )
+    audiences = serializers.ListField(source='audiences_pl')
 
     class Meta:
         model = Book
@@ -157,7 +170,8 @@ class BookSerializer2(serializers.ModelSerializer):
             'cover_thumb', 'cover',
             'isbn_pdf', 'isbn_epub', 'isbn_mobi',
             'abstract',
-            'has_mp3_file',
+            'has_mp3_file', 'has_sync_file',
+            'elevenreader_link', 'content_warnings', 'audiences',
         ]
 
 class BookSerializer11Labs(serializers.ModelSerializer):
@@ -191,17 +205,6 @@ class BookSerializer11Labs(serializers.ModelSerializer):
         ]
 
 
-class MediaSerializer2(MediaSerializer):
-    size = serializers.SerializerMethodField()
-
-    class Meta:
-        model = BookMedia
-        fields = ['url', 'director', 'type', 'name', 'part_name', 'artist', 'duration', 'size']
-
-    def get_size(self, obj):
-        return obj.file.size
-
-
 class BookSerializer(LegacyMixin, serializers.ModelSerializer):
     author = serializers.CharField(source='author_unicode')
     kind = serializers.CharField(source='kind_unicode')
@@ -250,6 +253,17 @@ class MediaSerializer(LegacyMixin, serializers.ModelSerializer):
         legacy_non_null_fields = ['director', 'artist']
 
 
+class MediaSerializer2(MediaSerializer):
+    size = serializers.SerializerMethodField()
+
+    class Meta:
+        model = BookMedia
+        fields = ['url', 'director', 'type', 'name', 'part_name', 'artist', 'duration', 'size']
+
+    def get_size(self, obj):
+        return obj.file.size
+
+
 class BookDetailSerializer(LegacyMixin, serializers.ModelSerializer):
     url = AbsoluteURLField()
 
@@ -377,4 +391,4 @@ class FragmentSerializer2(serializers.ModelSerializer):
 class FilterTagSerializer(serializers.ModelSerializer):
     class Meta:
         model = Tag
-        fields = ['id', 'category', 'name']
+        fields = ['id', 'category', 'name', 'slug']