X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/033aad30ca189472af0e04309cab1bc5964c9119..c6537f136f4ec0230f5e7c71dd1abf9616151a47:/src/catalogue/api/serializers.py diff --git a/src/catalogue/api/serializers.py b/src/catalogue/api/serializers.py index 99a634675..02a98a154 100644 --- a/src/catalogue/api/serializers.py +++ b/src/catalogue/api/serializers.py @@ -106,7 +106,7 @@ class BookDetailSerializer(LegacyMixin, serializers.ModelSerializer): class Meta: model = Book fields = [ - 'title', 'url', + 'title', 'url', 'language', 'epochs', 'genres', 'kinds', 'authors', 'translators', 'fragment_data', 'children', 'parent', 'preview', 'epub', 'mobi', 'pdf', 'html', 'txt', 'fb2', 'xml', 'media', 'audio_length', @@ -147,12 +147,31 @@ class CollectionListSerializer(serializers.ModelSerializer): class CollectionSerializer(serializers.ModelSerializer): - books = BookSerializer(many=True, source='get_books') + books = BookSerializer(many=True, source='get_books', read_only=True) + authors = TagSerializer(many=True, read_only=True) + book_slugs = serializers.CharField(write_only=True, required=False) + author_slugs = serializers.CharField(write_only=True, required=False) url = AbsoluteURLField() class Meta: model = Collection - fields = ['url', 'books', 'description', 'title'] + fields = [ + 'url', 'books', 'description', 'title', + 'book_slugs', 'authors', 'author_slugs' + ] + + def update(self, instance, validated_data): + instance = super().update(instance, validated_data) + author_slugs = validated_data.get('author_slugs', '').strip().split() + if author_slugs: + authors = Tag.objects.filter( + category='author', + slug__in=author_slugs + ) + else: + authors = [] + instance.authors.set(authors) + return instance class FragmentSerializer(serializers.ModelSerializer):