api: cw, audiences, elevenreader
authorRadek Czajka <rczajka@rczajka.pl>
Wed, 26 Nov 2025 14:22:25 +0000 (15:22 +0100)
committerRadek Czajka <rczajka@rczajka.pl>
Wed, 26 Nov 2025 14:22:25 +0000 (15:22 +0100)
src/catalogue/api/serializers.py
src/catalogue/models/book.py
src/catalogue/templatetags/catalogue_tags.py

index 617ebe8..626ad47 100644 (file)
@@ -155,6 +155,7 @@ class BookSerializer2(serializers.ModelSerializer):
         view_name='catalogue_api_book',
         lookup_field='slug'
     )
         view_name='catalogue_api_book',
         lookup_field='slug'
     )
+    audiences = serializers.ListField(source='audiences_pl')
 
     class Meta:
         model = Book
 
     class Meta:
         model = Book
@@ -170,6 +171,7 @@ class BookSerializer2(serializers.ModelSerializer):
             'isbn_pdf', 'isbn_epub', 'isbn_mobi',
             'abstract',
             'has_mp3_file', 'has_sync_file',
             'isbn_pdf', 'isbn_epub', 'isbn_mobi',
             'abstract',
             'has_mp3_file', 'has_sync_file',
+            'elevenreader_link', 'content_warnings', 'audiences',
         ]
 
 class BookSerializer11Labs(serializers.ModelSerializer):
         ]
 
 class BookSerializer11Labs(serializers.ModelSerializer):
index 35ca3c1..ecde556 100644 (file)
@@ -1107,6 +1107,21 @@ class Book(models.Model):
     def ridero_link(self):
         return 'https://ridero.eu/%s/books/wl_%s/' % (get_language(), self.slug.replace('-', '_'))
 
     def ridero_link(self):
         return 'https://ridero.eu/%s/books/wl_%s/' % (get_language(), self.slug.replace('-', '_'))
 
+    def elevenreader_link(self):
+        return 'https://elevenreader.io/audiobooks/wolnelektury:' + self.get_first_text().slug
+
+    def content_warnings(self):
+        warnings_def = {
+            'wulgaryzmy': _('wulgaryzmy'),
+        }
+        warnings = self.get_extra_info_json().get('content_warnings', [])
+        warnings = [
+            warnings_def.get(w, w)
+            for w in warnings
+        ]
+        warnings.sort()
+        return warnings
+
     def full_sort_key(self):
         return self.SORT_KEY_SEP.join((self.sort_key_author, self.sort_key, str(self.id)))
 
     def full_sort_key(self):
         return self.SORT_KEY_SEP.join((self.sort_key_author, self.sort_key, str(self.id)))
 
index ddf1a8f..e79563c 100644 (file)
@@ -424,16 +424,8 @@ def status(book, user):
 
 @register.inclusion_tag('catalogue/snippets/content_warning.html')
 def content_warning(book):
 
 @register.inclusion_tag('catalogue/snippets/content_warning.html')
 def content_warning(book):
-    warnings_def = {
-        'wulgaryzmy': _('wulgaryzmy'),
-    }
-    warnings = book.get_extra_info_json().get('content_warnings', [])
-    warnings = sorted(
-        warnings_def.get(w, w)
-        for w in warnings
-    )
     return {
     return {
-        "warnings": warnings
+        "warnings": book.content_warnings(),
     }
 
 
     }