return capfirst(', '.join(title))
+def book_stub_title(book):
+ return ', '.join((book.author, book.title))
+
+
+@register.simple_tag
+def book_title(book, html_links=False):
+ try:
+ names = list(book.tags.filter(category='author'))
+ except AttributeError:
+ return book_stub_title(book)
+
+ books = []
+ while book:
+ books.append(book)
+ book = book.parent
+ names.extend(reversed(books))
+
+ if html_links:
+ names = ['<a href="%s">%s</a>' % (tag.get_absolute_url(), tag.name) for tag in names]
+ else:
+ names = [tag.name for tag in names]
+
+ return ', '.join(names)
+
+
+@register.simple_tag
+def book_title_html(book):
+ return book_title(book, html_links=True)
+
+
@register.simple_tag
def title_from_tags(tags):
def split_tags(tags):
return capfirst(title)
+@register.simple_tag
+def book_tree(book_list, books_by_parent):
+ text = "".join("<li><a href='%s'>%s</a>%s</li>" % (
+ book.get_absolute_url(), book.title, book_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 user_creation_form():
return RegistrationForm(prefix='registration').as_ul()
@register.inclusion_tag('catalogue/folded_tag_list.html')
def folded_tag_list(tags, choices=None):
+ tags = [tag for tag in tags if tag.count]
if choices is None:
choices = []
some_tags_hidden = False