fix
[wolnelektury.git] / src / catalogue / templatetags / catalogue_tags.py
index b582f89..7189e95 100644 (file)
@@ -11,7 +11,7 @@ from django.template import Node, Variable, Template, Context
 from django.urls import reverse
 from django.utils.cache import add_never_cache_headers
 from django.utils.safestring import mark_safe
-from django.utils.translation import ugettext as _
+from django.utils.translation import gettext as _
 
 from catalogue.helpers import get_audiobook_tags
 from catalogue.models import Book, BookMedia, Fragment, Tag, Source
@@ -400,6 +400,18 @@ def related_books(context, instance, limit=6, random=1, taken=0):
     }
 
 
+@register.simple_tag
+def related_books_2022(instance, limit=4, taken=0):
+    limit -= taken
+    max_books = limit
+
+    books_qs = Book.objects.filter(findable=True)
+    books_qs = books_qs.exclude(common_slug=instance.common_slug).exclude(ancestor=instance)
+    books = Book.tagged.related_to(instance, books_qs)[:max_books]
+
+    return books
+    
+
 @register.simple_tag
 def download_audio(book, daisy=True, mp3=True):
     links = []
@@ -412,6 +424,9 @@ def download_audio(book, daisy=True, mp3=True):
     if daisy and book.has_media('daisy'):
         for dsy in book.get_media('daisy'):
             links.append("<a href='%s'>%s</a>" % (dsy.file.url, BookMedia.formats['daisy'].name))
+    if daisy and book.has_media('audio.epub'):
+        for dsy in book.get_media('audio.epub'):
+            links.append("<a href='%s'>%s</a>" % (dsy.file.url, BookMedia.formats['audio.epub'].name))
     return mark_safe("".join(links))
 
 
@@ -436,6 +451,11 @@ def license_icon(license_url):
     }
 
 
+@register.simple_tag
+def license_locative(license_url, default):
+    return LICENSES.get(license_url, {}).get('locative', default)
+
+
 @register.filter
 def class_name(obj):
     return obj.__class__.__name__
@@ -492,7 +512,7 @@ def strip_tag(html, tag_name):
 def status(book, user):
     if not book.preview:
         return 'open'
-    elif Membership.is_active_for(user):
+    elif book.is_accessible_to(user):
         return 'preview'
     else:
         return 'closed'
@@ -511,3 +531,20 @@ def content_warning(book):
     return {
         "warnings": warnings
     }
+
+
+@register.inclusion_tag('catalogue/preview_ad.html', takes_context=True)
+def preview_ad(context):
+    book = Book.objects.filter(parent=None, preview=True).first()
+    return {
+        'accessible': book.is_accessible_to(context['request'].user),
+        'book': book,
+    }
+
+@register.inclusion_tag('catalogue/preview_ad_homepage.html', takes_context=True)
+def preview_ad_homepage(context):
+    book = Book.objects.filter(parent=None, preview=True).first()
+    return {
+        'accessible': book.is_accessible_to(context['request'].user),
+        'book': book,
+    }