edit buttons
[wolnelektury.git] / src / catalogue / templatetags / catalogue_tags.py
index b582f89..f4f121d 100644 (file)
@@ -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 = []
@@ -436,6 +448,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 +509,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 +528,12 @@ 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(preview=True).first()
+    return {
+        'accessible': book.is_accessible_to(context['request'].user),
+        'book': book,
+    }