make custom pdf optional
[wolnelektury.git] / apps / catalogue / templatetags / catalogue_tags.py
index e8bc138..4f84dad 100644 (file)
@@ -5,6 +5,7 @@
 import datetime
 import feedparser
 
 import datetime
 import feedparser
 
+from django.conf import settings
 from django import template
 from django.template import Node, Variable, Template, Context
 from django.core.cache import cache
 from django import template
 from django.template import Node, Variable, Template, Context
 from django.core.cache import cache
@@ -12,9 +13,8 @@ from django.core.urlresolvers import reverse
 from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
 from django.utils.translation import ugettext as _
 
 from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
 from django.utils.translation import ugettext as _
 
-from catalogue import forms
 from catalogue.utils import split_tags
 from catalogue.utils import split_tags
-from catalogue.models import Book, Fragment, Tag
+from catalogue.models import Book, BookMedia, Fragment, Tag
 
 register = template.Library()
 
 
 register = template.Library()
 
@@ -148,6 +148,17 @@ def book_tree(book_list, books_by_parent):
     else:
         return ''
 
     else:
         return ''
 
+@register.simple_tag
+def audiobook_tree(book_list, books_by_parent):
+    text = "".join("<li><a class='open-player' href='%s'>%s</a>%s</li>" % (
+        reverse("book_player", args=[book.slug]), book.title, audiobook_tree(books_by_parent.get(book, ()), books_by_parent)
+        ) for book in book_list)
+
+    if text:
+        return "<ol>%s</ol>" % text
+    else:
+        return ''
+
 @register.simple_tag
 def book_tree_texml(book_list, books_by_parent, depth=1):
     return "".join("""
 @register.simple_tag
 def book_tree_texml(book_list, books_by_parent, depth=1):
     return "".join("""
@@ -195,7 +206,6 @@ def authentication_form():
 @register.tag
 def catalogue_url(parser, token):
     bits = token.split_contents()
 @register.tag
 def catalogue_url(parser, token):
     bits = token.split_contents()
-    tag_name = bits[0]
 
     tags_to_add = []
     tags_to_remove = []
 
     tags_to_add = []
     tags_to_remove = []
@@ -284,21 +294,17 @@ def book_info(book):
 
 @register.inclusion_tag('catalogue/book_wide.html', takes_context=True)
 def book_wide(context, book):
 
 @register.inclusion_tag('catalogue/book_wide.html', takes_context=True)
 def book_wide(context, book):
-    theme_counter = book.theme_counter
-    book_themes = Tag.objects.filter(pk__in=theme_counter.keys())
-    for tag in book_themes:
-        tag.count = theme_counter[tag.pk]
-    extra_info = book.get_extra_info_value()
+    book_themes = book.related_themes()
+    extra_info = book.extra_info
     hide_about = extra_info.get('about', '').startswith('http://wiki.wolnepodreczniki.pl')
 
     return {
         'book': book,
     hide_about = extra_info.get('about', '').startswith('http://wiki.wolnepodreczniki.pl')
 
     return {
         'book': book,
-        'main_link': reverse('book_text', args=[book.slug]),
+        'main_link': reverse('book_text', args=[book.slug]) if book.html_file else None,
         'related': book.related_info(),
         'related': book.related_info(),
-        'extra_info': book.get_extra_info_value(),
+        'extra_info': extra_info,
         'hide_about': hide_about,
         'themes': book_themes,
         'hide_about': hide_about,
         'themes': book_themes,
-        'custom_pdf_form': forms.CustomPDFForm(),
         'request': context.get('request'),
     }
 
         'request': context.get('request'),
     }
 
@@ -350,7 +356,6 @@ def related_books(book, limit=6, random=1):
     cache_key = "catalogue.related_books.%d.%d" % (book.id, limit - random)
     related = cache.get(cache_key)
     if related is None:
     cache_key = "catalogue.related_books.%d.%d" % (book.id, limit - random)
     related = cache.get(cache_key)
     if related is None:
-        print 'not in cache'
         related = list(Book.objects.filter(
             common_slug=book.common_slug).exclude(pk=book.pk)[:limit])
         limit -= len(related)
         related = list(Book.objects.filter(
             common_slug=book.common_slug).exclude(pk=book.pk)[:limit])
         limit -= len(related)
@@ -382,3 +387,30 @@ def tag_url(category, slug):
     return reverse('catalogue.views.tagged_object_list', args=[
         '/'.join((Tag.categories_dict[category], slug))
     ])
     return reverse('catalogue.views.tagged_object_list', args=[
         '/'.join((Tag.categories_dict[category], slug))
     ])
+
+
+@register.simple_tag
+def download_audio(book, daisy=True):
+    related = book.related_info()
+    links = []
+    if related['media'].get('mp3'):
+        links.append("<a href='%s'>%s</a>" %
+            (reverse('download_zip_mp3', args=[book.slug]),
+                BookMedia.formats['mp3'].name))
+    if related['media'].get('ogg'):
+        links.append("<a href='%s'>%s</a>" %
+            (reverse('download_zip_ogg', args=[book.slug]),
+                BookMedia.formats['ogg'].name))
+    if daisy and related['media'].get('daisy'):
+        for dsy in book.get_media('daisy'):
+            links.append("<a href='%s'>%s</a>" %
+                (dsy.file.url, BookMedia.formats['daisy'].name))
+    return ", ".join(links)
+
+
+@register.inclusion_tag("catalogue/snippets/custom_pdf_link_li.html")
+def custom_pdf_link_li(book):
+    return {
+        'book': book,
+        'NO_CUSTOM_PDF': settings.NO_CUSTOM_PDF,
+    }