From 6f2ae8587bd74b8d5d4f89170ef72209af2f9a1f Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Wed, 16 Jun 2010 13:16:56 +0200 Subject: [PATCH] changed Fragment.short_html (#309) reset Fragment.short_html on Book.save --- apps/catalogue/models.py | 9 ++++---- apps/catalogue/templatetags/catalogue_tags.py | 23 +++++++++++++++++++ .../templates/catalogue/book_detail.html | 2 +- .../templates/catalogue/fragment_short.html | 3 ++- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/apps/catalogue/models.py b/apps/catalogue/models.py index 367f382c6..cf270f297 100644 --- a/apps/catalogue/models.py +++ b/apps/catalogue/models.py @@ -189,8 +189,12 @@ class Book(models.Model): def save(self, force_insert=False, force_update=False, reset_short_html=True, refresh_mp3=True): if reset_short_html: # Reset _short_html during save + update = {} for key in filter(lambda x: x.startswith('_short_html'), self.__dict__): + update[key] = '' self.__setattr__(key, '') + # Fragment.short_html relies on book's tags, so reset it here too + self.fragments.all().update(**update) book = super(Book, self).save(force_insert, force_update) @@ -460,11 +464,8 @@ class Fragment(models.Model): if short_html and len(short_html): return mark_safe(short_html) else: - book_authors = [mark_safe(u'%s' % (tag.get_absolute_url(), tag.name)) - for tag in self.book.tags if tag.category == 'author'] - setattr(self, key, unicode(render_to_string('catalogue/fragment_short.html', - {'fragment': self, 'book': self.book, 'book_authors': book_authors}))) + {'fragment': self}))) self.save() return mark_safe(getattr(self, key)) diff --git a/apps/catalogue/templatetags/catalogue_tags.py b/apps/catalogue/templatetags/catalogue_tags.py index 7f2bf291d..fa7849538 100644 --- a/apps/catalogue/templatetags/catalogue_tags.py +++ b/apps/catalogue/templatetags/catalogue_tags.py @@ -61,6 +61,29 @@ def simple_title(tags): return capfirst(', '.join(title)) +@register.simple_tag +def book_title(book, html_links=False): + names = list(book.tags.filter(category='author')) + + books = [] + while book: + books.append(book) + book = book.parent + names.extend(reversed(books[::-1])) + + if html_links: + names = ['%s' % (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): diff --git a/wolnelektury/templates/catalogue/book_detail.html b/wolnelektury/templates/catalogue/book_detail.html index 809bd1a25..60284d6a4 100644 --- a/wolnelektury/templates/catalogue/book_detail.html +++ b/wolnelektury/templates/catalogue/book_detail.html @@ -7,7 +7,7 @@ {% block bodyid %}book-detail{% endblock %} {% block body %} -

{{ book.title }}, {{ categories.author|join:", " }}

+

{% book_title book %}

{{ form.q }} {% trans "or" %} {% trans "return to main page" %}

diff --git a/wolnelektury/templates/catalogue/fragment_short.html b/wolnelektury/templates/catalogue/fragment_short.html index ccca721de..4526857bb 100644 --- a/wolnelektury/templates/catalogue/fragment_short.html +++ b/wolnelektury/templates/catalogue/fragment_short.html @@ -1,4 +1,5 @@ {% load i18n %} +{% load catalogue_tags %}
{% if fragment.short_text %}
@@ -13,7 +14,7 @@ {% endif %}
-- 2.20.1