X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/d36673cef5c5f35b1043a03e6c5ddbb7688788ae..90e4a87f6ebffca42088cb952281c40555d2c520:/src/catalogue/templatetags/catalogue_tags.py?ds=sidebyside
diff --git a/src/catalogue/templatetags/catalogue_tags.py b/src/catalogue/templatetags/catalogue_tags.py
index ce23e548f..16d5de7a9 100644
--- a/src/catalogue/templatetags/catalogue_tags.py
+++ b/src/catalogue/templatetags/catalogue_tags.py
@@ -24,14 +24,18 @@ register = template.Library()
class RegistrationForm(UserCreationForm):
def as_ul(self):
- "Returns this form rendered as HTML
s -- excluding the ."
- return self._html_output(u'%(errors)s%(label)s %(field)s%(help_text)s', u'%s', '', u' %s', False)
+ """Returns this form rendered as HTML s -- excluding the ."""
+ return self._html_output(
+ u'%(errors)s%(label)s %(field)s%(help_text)s', u'%s',
+ '', u' %s', False)
class LoginForm(AuthenticationForm):
def as_ul(self):
- "Returns this form rendered as HTML s -- excluding the ."
- return self._html_output(u'%(errors)s%(label)s %(field)s%(help_text)s', u'%s', '', u' %s', False)
+ """Returns this form rendered as HTML s -- excluding the ."""
+ return self._html_output(
+ u'%(errors)s%(label)s %(field)s%(help_text)s', u'%s',
+ '', u' %s', False)
def iterable(obj):
@@ -108,8 +112,8 @@ def title_from_tags(tags):
# Specjalny przypadek "Dramat w twórczoÅci Sofoklesa", wtedy gdy podane
# sÄ
tylko rodzaj literacki i autor
if 'kind' in self and 'author' in self and len(self) == 2:
- text = u'%s w twórczoÅci %s' % (unicode(self['kind']),
- flection.get_case(unicode(self['author']), u'dopeÅniacz'))
+ text = u'%s w twórczoÅci %s' % (
+ unicode(self['kind']), flection.get_case(unicode(self['author']), u'dopeÅniacz'))
return capfirst(text)
# Przypadki ogólniejsze
@@ -150,17 +154,20 @@ def book_tree(book_list, books_by_parent):
else:
return ''
+
@register.simple_tag
def audiobook_tree(book_list, books_by_parent):
text = "".join("%s%s" % (
- reverse("book_player", args=[book.slug]), book.title, audiobook_tree(books_by_parent.get(book, ()), books_by_parent)
- ) for book in book_list)
+ 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 "%s
" % text
else:
return ''
+
@register.simple_tag
def book_tree_texml(book_list, books_by_parent, depth=1):
return "".join("""
@@ -201,6 +208,7 @@ def book_tree_csv(author, book_list, books_by_parent, depth=1, max_depth=3, deli
"children": book_tree_csv(author, books_by_parent.get(book.id, ()), books_by_parent, depth + 1)
} for book in book_list)
+
@register.simple_tag
def all_editors(extra_info):
editors = []
@@ -298,9 +306,9 @@ class CatalogueURLNode(Node):
return reverse('book_list')
-@register.inclusion_tag('catalogue/tag_list.html')
+# @register.inclusion_tag('catalogue/tag_list.html')
def tag_list(tags, choices=None, category=None, gallery=False):
- print(tags, choices, category)
+ # print(tags, choices, category)
if choices is None:
choices = []
@@ -311,14 +319,24 @@ def tag_list(tags, choices=None, category=None, gallery=False):
if len(tags) == 1 and category not in [t.category for t in choices]:
one_tag = tags[0]
+ else:
+ one_tag = None
if category is not None:
- other = Tag.objects.filter(category=category).exclude(pk__in=[t.pk for t in tags]).exclude(pk__in=[t.pk for t in category_choices])
+ other = Tag.objects.filter(category=category).exclude(pk__in=[t.pk for t in tags])\
+ .exclude(pk__in=[t.pk for t in category_choices])
# Filter out empty tags.
ct = ContentType.objects.get_for_model(Picture if gallery else Book)
other = other.filter(items__content_type=ct).distinct()
+ else:
+ other = []
- return locals()
+ return {
+ 'one_tag': one_tag,
+ 'choices': choices,
+ 'tags': tags,
+ 'other': other,
+ }
@register.inclusion_tag('catalogue/inline_tag_list.html')
@@ -328,7 +346,7 @@ def inline_tag_list(tags, choices=None, category=None, gallery=False):
@register.inclusion_tag('catalogue/collection_list.html')
def collection_list(collections):
- return locals()
+ return {'collections': collections}
@register.inclusion_tag('catalogue/book_info.html')
@@ -342,14 +360,17 @@ def book_info(book):
@register.inclusion_tag('catalogue/work-list.html', takes_context=True)
def work_list(context, object_list):
request = context.get('request')
- return locals()
-
+ return {'object_list': object_list, 'request': request}
@register.inclusion_tag('catalogue/plain_list.html', takes_context=True)
-def plain_list(context, object_list, with_initials=True, by_author=False, choice=None, book=None, gallery=False, paged=True):
+def plain_list(context, object_list, with_initials=True, by_author=False, choice=None, book=None, gallery=False,
+ paged=True, initial_blocks=False):
names = [('', [])]
last_initial = None
+ if len(object_list) < settings.CATALOGUE_MIN_INITIALS and not by_author:
+ with_initials = False
+ initial_blocks = False
for obj in object_list:
if with_initials:
if by_author:
@@ -360,14 +381,20 @@ def plain_list(context, object_list, with_initials=True, by_author=False, choice
last_initial = initial
names.append((obj.author_str() if by_author else initial, []))
names[-1][1].append(obj)
- return locals()
-
+ return {
+ 'paged': paged,
+ 'names': names,
+ 'initial_blocks': initial_blocks,
+ 'book': book,
+ 'gallery': gallery,
+ 'choice': choice,
+ }
# TODO: These are no longer just books.
@register.inclusion_tag('catalogue/related_books.html', takes_context=True)
def related_books(context, instance, limit=6, random=1, taken=0):
- limit = limit - taken
+ limit -= taken
max_books = limit - random
is_picture = isinstance(instance, Picture)
@@ -404,17 +431,14 @@ def related_books(context, instance, limit=6, random=1, taken=0):
def download_audio(book, daisy=True):
links = []
if book.has_media('mp3'):
- links.append("%s" %
- (reverse('download_zip_mp3', args=[book.slug]),
- BookMedia.formats['mp3'].name))
+ links.append("%s" % (
+ reverse('download_zip_mp3', args=[book.slug]), BookMedia.formats['mp3'].name))
if book.has_media('ogg'):
- links.append("%s" %
- (reverse('download_zip_ogg', args=[book.slug]),
- BookMedia.formats['ogg'].name))
+ links.append("%s" % (
+ reverse('download_zip_ogg', args=[book.slug]), BookMedia.formats['ogg'].name))
if daisy and book.has_media('daisy'):
for dsy in book.get_media('daisy'):
- links.append("%s" %
- (dsy.file.url, BookMedia.formats['daisy'].name))
+ links.append("%s" % (dsy.file.url, BookMedia.formats['daisy'].name))
return "".join(links)
@@ -485,3 +509,10 @@ def choose_fragment(request, book_id=None, tag_ids=None, unless=False):
fragment_count = fragments.count()
fragment = fragments[randint(0, fragment_count - 1)] if fragment_count else None
return fragment.pk if fragment is not None else None
+
+
+@register.filter
+def strip_tag(html, tag_name):
+ # docelowo może byÄ warto zainstalowaÄ BeautifulSoup do takich rzeczy
+ import re
+ return re.sub(r"<.?%s\b[^>]*>" % tag_name, "", html)