Book translator in API.
authorRadek Czajka <rczajka@rczajka.pl>
Mon, 23 Mar 2020 13:18:12 +0000 (14:18 +0100)
committerRadek Czajka <rczajka@rczajka.pl>
Thu, 10 Sep 2020 12:15:10 +0000 (14:15 +0200)
src/catalogue/api/serializers.py
src/catalogue/models/book.py

index 79bb58b..d52959b 100644 (file)
@@ -27,6 +27,10 @@ class TagDetailSerializer(serializers.ModelSerializer):
         fields = ['name', 'url', 'sort_key', 'description']
 
 
+class TranslatorSerializer(serializers.Serializer):
+    name = serializers.CharField(source='*')
+
+
 class BookSerializer(LegacyMixin, serializers.ModelSerializer):
     author = serializers.CharField(source='author_unicode')
     kind = serializers.CharField(source='kind_unicode')
@@ -79,6 +83,7 @@ class BookDetailSerializer(LegacyMixin, serializers.ModelSerializer):
     url = AbsoluteURLField()
 
     authors = TagSerializer(many=True)
+    translators = TranslatorSerializer(many=True)
     epochs = TagSerializer(many=True)
     genres = TagSerializer(many=True)
     kinds = TagSerializer(many=True)
@@ -102,7 +107,7 @@ class BookDetailSerializer(LegacyMixin, serializers.ModelSerializer):
         model = Book
         fields = [
             'title', 'url',
-            'epochs', 'genres', 'kinds', 'authors',
+            'epochs', 'genres', 'kinds', 'authors', 'translators',
             'fragment_data', 'children', 'parent', 'preview',
             'epub', 'mobi', 'pdf', 'html', 'txt', 'fb2', 'xml', 'media', 'audio_length',
             'cover_color', 'simple_cover', 'cover_thumb', 'cover', 'simple_thumb'
index 534f00b..81f3b79 100644 (file)
@@ -172,6 +172,12 @@ class Book(models.Model):
     def genre_unicode(self):
         return self.tag_unicode('genre')
 
+    def translators(self):
+        translators = self.get_extra_info_json().get('translators')
+        return [
+            '\xa0'.join(reversed(translator.split(', ', 1))) for translator in translators
+        ]
+
     def translator(self):
         translators = self.get_extra_info_json().get('translators')
         if not translators: