From c3e563338050cf161ed6568d01c8a5f010257c2f Mon Sep 17 00:00:00 2001 From: Radek Czajka <rczajka@rczajka.pl> Date: Tue, 5 Feb 2019 09:52:45 +0100 Subject: [PATCH] Preserve the weirdness of the API. --- src/api/tests/res/responses/books.json | 3 +++ src/api/tests/res/responses/books.xml | 3 +-- src/catalogue/api/serializers.py | 18 ++++++++---------- src/catalogue/api/views.py | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/api/tests/res/responses/books.json b/src/api/tests/res/responses/books.json index cfd5ee3dd..4b8d11eba 100644 --- a/src/api/tests/res/responses/books.json +++ b/src/api/tests/res/responses/books.json @@ -8,6 +8,7 @@ "has_audio": false, "title": "Child", "cover": "", + "liked": null, "epoch": "", "href": "http://testserver/api/books/child/", "genre": "Wiersz", @@ -24,6 +25,7 @@ "has_audio": false, "title": "Grandchild", "cover": "", + "liked": null, "epoch": "", "href": "http://testserver/api/books/grandchild/", "genre": "Sonet", @@ -40,6 +42,7 @@ "has_audio": true, "title": "Parent", "cover": "cover/parent.jpg", + "liked": null, "epoch": "Barok", "href": "http://testserver/api/books/parent/", "genre": "Sonet", diff --git a/src/api/tests/res/responses/books.xml b/src/api/tests/res/responses/books.xml index 967f8e2ed..f39864480 100644 --- a/src/api/tests/res/responses/books.xml +++ b/src/api/tests/res/responses/books.xml @@ -1,3 +1,2 @@ <?xml version="1.0" encoding="utf-8"?> -<response><resource><kind></kind><full_sort_key>$child$2</full_sort_key><title>Child</title><url>https://example.com/katalog/lektura/child/</url><has_audio>False</has_audio><author></author><cover></cover><slug>child</slug><epoch></epoch><href>https://example.com/api/books/child/</href><genre>Wiersz</genre><simple_thumb></simple_thumb><cover_color>#000000</cover_color><cover_thumb></cover_thumb></resource><resource><kind></kind><full_sort_key>$grandchild$3</full_sort_key><title>Grandchild</title><url>https://example.com/katalog/lektura/grandchild/</url><has_audio>False</has_audio><author></author><cover></cover><slug>grandchild</slug><epoch></epoch><href>https://example.com/api/books/grandchild/</href><genre>Sonet</genre><simple_thumb></simple_thumb><cover_color>#000000</cover_color><cover_thumb></cover_thumb></resource><resource><kind>Liryka</kind><full_sort_key>john doe$parent$1</full_sort_key><title>Parent</title><url>https://example.com/katalog/lektura/parent/</url><has_audio>True</has_audio><author>John Doe</author><cover>cover/parent.jpg</cover><slug>parent</slug><epoch>Barok</epoch><href>https://example.com/api/books/parent/</href><genre>Sonet</genre><simple_thumb>https://example.com/media/cover_api_thumb/parent.jpg</simple_thumb><cover_color>#a6820a</cover_color><cover_thumb>https://example.com/media/cover/parent.jpg-139x193</cover_thumb></resource></response> - +<response><resource><kind></kind><full_sort_key>$child$2</full_sort_key><title>Child</title><url>http://testserver/katalog/lektura/child/</url><cover_color>#000000</cover_color><author></author><cover></cover><epoch></epoch><href>http://testserver/api/books/child/</href><has_audio>False</has_audio><genre>Wiersz</genre><simple_thumb></simple_thumb><slug>child</slug><cover_thumb></cover_thumb><liked></liked></resource><resource><kind></kind><full_sort_key>$grandchild$3</full_sort_key><title>Grandchild</title><url>http://testserver/katalog/lektura/grandchild/</url><cover_color>#000000</cover_color><author></author><cover></cover><epoch></epoch><href>http://testserver/api/books/grandchild/</href><has_audio>False</has_audio><genre>Sonet</genre><simple_thumb></simple_thumb><slug>grandchild</slug><cover_thumb></cover_thumb><liked></liked></resource><resource><kind>Liryka</kind><full_sort_key>john doe$parent$1</full_sort_key><title>Parent</title><url>http://testserver/katalog/lektura/parent/</url><cover_color>#a6820a</cover_color><author>John Doe</author><cover>cover/parent.jpg</cover><epoch>Barok</epoch><href>http://testserver/api/books/parent/</href><has_audio>True</has_audio><genre>Sonet</genre><simple_thumb>http://testserver/media/cover_api_thumb/parent.jpg</simple_thumb><slug>parent</slug><cover_thumb>cover_thumb/parent.jpg</cover_thumb><liked></liked></resource></response> diff --git a/src/catalogue/api/serializers.py b/src/catalogue/api/serializers.py index e8f04ca70..ea48cdba4 100644 --- a/src/catalogue/api/serializers.py +++ b/src/catalogue/api/serializers.py @@ -24,16 +24,17 @@ class TagDetailSerializer(serializers.ModelSerializer): fields = ['name', 'url', 'sort_key', 'description'] -class BaseBookSerializer(LegacyMixin, serializers.ModelSerializer): +class BookSerializer(LegacyMixin, serializers.ModelSerializer): author = serializers.CharField(source='author_unicode') kind = serializers.CharField(source='kind_unicode') epoch = serializers.CharField(source='epoch_unicode') genre = serializers.CharField(source='genre_unicode') + liked = BookLiked() simple_thumb = serializers.FileField(source='cover_api_thumb') href = AbsoluteURLField(view_name='catalogue_api_book', view_args=['slug']) url = AbsoluteURLField() - cover = serializers.CharField() + cover = serializers.FileField() cover_thumb = ThumbnailField('139x193', source='cover') class Meta: @@ -41,20 +42,17 @@ class BaseBookSerializer(LegacyMixin, serializers.ModelSerializer): fields = [ 'kind', 'full_sort_key', 'title', 'url', 'cover_color', 'author', 'cover', 'epoch', 'href', 'has_audio', 'genre', - 'simple_thumb', 'slug', 'cover_thumb'] + 'simple_thumb', 'slug', 'cover_thumb', 'liked'] legacy_non_null_fields = [ 'kind', 'author', 'epoch', 'genre', 'cover', 'simple_thumb', 'cover_thumb'] -class BookSerializer(BaseBookSerializer): - liked = BookLiked() - cover = serializers.FileField() +class BookListSerializer(BookSerializer): + cover = serializers.CharField() + cover_thumb = serializers.CharField() - class Meta: - model = Book - fields = BaseBookSerializer.Meta.fields + ['liked'] - legacy_non_null_fields = BaseBookSerializer.Meta.legacy_non_null_fields + Meta = BookSerializer.Meta class MediaSerializer(LegacyMixin, serializers.ModelSerializer): diff --git a/src/catalogue/api/views.py b/src/catalogue/api/views.py index e21aab707..f3b719309 100644 --- a/src/catalogue/api/views.py +++ b/src/catalogue/api/views.py @@ -24,12 +24,12 @@ class CollectionDetail(RetrieveAPIView): class BookList(ListAPIView): permission_classes = [DjangoModelPermissionsOrAnonReadOnly] queryset = Book.objects.none() # Required for DjangoModelPermissions - serializer_class = serializers.BaseBookSerializer + serializer_class = serializers.BookListSerializer def get_queryset(self): try: tags, ancestors = read_tags( - self.kwargs['tags'], self.request, + self.kwargs.get('tags', ''), self.request, allowed=('author', 'epoch', 'kind', 'genre') ) except ValueError: -- 2.20.1