X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/1501fe79a5abe6fc214309ade4ceb85f6bfd0328..29b00497f9103bb31f9e236bdf5844b9a6fa79ea:/src/catalogue/api/serializers.py diff --git a/src/catalogue/api/serializers.py b/src/catalogue/api/serializers.py index 60e52a052..3d6341ed8 100644 --- a/src/catalogue/api/serializers.py +++ b/src/catalogue/api/serializers.py @@ -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 @@ -156,6 +169,9 @@ class BookSerializer2(serializers.ModelSerializer): 'epub', 'mobi', 'pdf', 'html', 'txt', 'fb2', 'xml', 'cover_thumb', 'cover', 'isbn_pdf', 'isbn_epub', 'isbn_mobi', + 'abstract', + 'has_mp3_file', 'has_sync_file', + 'elevenreader_link', 'content_warnings', 'audiences', ] class BookSerializer11Labs(serializers.ModelSerializer): @@ -237,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() @@ -352,7 +379,16 @@ class FragmentDetailSerializer(serializers.ModelSerializer): fields = ['book', 'anchor', 'text', 'url', 'themes'] +class FragmentSerializer2(serializers.ModelSerializer): + url = AbsoluteURLField() + html = serializers.CharField(source='text') + + class Meta: + model = Fragment + fields = ['anchor', 'html', 'url'] + + class FilterTagSerializer(serializers.ModelSerializer): class Meta: model = Tag - fields = ['id', 'category', 'name'] + fields = ['id', 'category', 'name', 'slug']