X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/69191eddb9e4221d964a7e5b044ff7c5dfe38315..8fefd8bdaca07a3f5607de79c081dc0f7876fbc7:/apps/catalogue/templatetags/catalogue_tags.py?ds=sidebyside diff --git a/apps/catalogue/templatetags/catalogue_tags.py b/apps/catalogue/templatetags/catalogue_tags.py index 542f1cde2..cf80bebb5 100644 --- a/apps/catalogue/templatetags/catalogue_tags.py +++ b/apps/catalogue/templatetags/catalogue_tags.py @@ -4,17 +4,11 @@ # import datetime import feedparser -import re from django import template -from django.template import Node, Variable -from django.utils.encoding import smart_str -from django.core.cache import get_cache +from django.template import Node, Variable, Template, Context from django.core.urlresolvers import reverse from django.contrib.auth.forms import UserCreationForm, AuthenticationForm -from django.db.models import Q -from django.conf import settings -from django.template.defaultfilters import stringfilter from django.utils.translation import ugettext as _ from catalogue import forms @@ -51,6 +45,15 @@ def capfirst(text): return '' +@register.simple_tag +def html_title_from_tags(tags): + if len(tags) < 2: + return title_from_tags(tags) + template = Template("{{ category }}: {{ tag.name }}") + return capfirst(",
".join( + template.render(Context({'tag': tag, 'category': _(tag.category)})) for tag in tags)) + + def simple_title(tags): title = [] @@ -292,6 +295,7 @@ def book_wide(context, book): return { 'book': book, + 'main_link': reverse('book_text', args=[book.slug]), 'related': book.related_info(), 'extra_info': book.get_extra_info_value(), 'hide_about': hide_about, @@ -305,6 +309,7 @@ def book_wide(context, book): def book_short(context, book): return { 'book': book, + 'main_link': book.get_absolute_url(), 'related': book.related_info(), 'request': context.get('request'), } @@ -356,16 +361,17 @@ def related_books(book, limit=6): } -@register.filter -@stringfilter -def removewholetags(value, tags): - """Removes a space separated list of [X]HTML tags from the output. +@register.inclusion_tag('catalogue/menu.html') +def catalogue_menu(): + tags = Tag.objects.filter( + category__in=('author', 'epoch', 'genre', 'kind', 'theme') + ).exclude(book_count=0) + return split_tags(tags) + - FIXME: It makes the assumption the removed tags aren't nested. - """ - tags = [re.escape(tag) for tag in tags.split()] - tags_re = u'(%s)' % u'|'.join(tags) - tag_re = re.compile(ur'<%s[^>]*>.*?' % tags_re, re.U) - value = tag_re.sub(u'', value) - return value +@register.simple_tag +def tag_url(category, slug): + return reverse('catalogue.views.tagged_object_list', args=[ + '/'.join((Tag.categories_dict[category], slug)) + ])