X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/efe8b4c05710dc2385b2aaf0b8a6a93778f53972..5c4d4fc7d89af4c95b3a8a9e501f18b628b952b6:/apps/catalogue/models.py
diff --git a/apps/catalogue/models.py b/apps/catalogue/models.py
index 59011fd9b..e85462e7f 100644
--- a/apps/catalogue/models.py
+++ b/apps/catalogue/models.py
@@ -9,6 +9,7 @@ from django.contrib.auth.models import User
from django.core.files import File
from django.template.loader import render_to_string
from django.utils.safestring import mark_safe
+from django.utils.translation import get_language
from django.core.urlresolvers import reverse
from datetime import datetime
@@ -130,8 +131,11 @@ class Book(models.Model):
return self.title
def short_html(self):
- if len(self._short_html):
- return mark_safe(self._short_html)
+ key = '_short_html_%s' % get_language()
+ short_html = getattr(self, key)
+
+ if short_html and len(short_html):
+ return mark_safe(short_html)
else:
tags = self.tags.filter(~Q(category__in=('set', 'theme', 'book')))
tags = [mark_safe(u'%s' % (tag.get_absolute_url(), tag.name)) for tag in tags]
@@ -152,15 +156,16 @@ class Book(models.Model):
formats = [mark_safe(format) for format in formats]
- self._short_html = unicode(render_to_string('catalogue/book_short.html',
- {'book': self, 'tags': tags, 'formats': formats}))
+ setattr(self, key, unicode(render_to_string('catalogue/book_short.html',
+ {'book': self, 'tags': tags, 'formats': formats})))
self.save(reset_short_html=False)
- return mark_safe(self._short_html)
+ return mark_safe(getattr(self, key))
def save(self, force_insert=False, force_update=False, reset_short_html=True):
if reset_short_html:
# Reset _short_html during save
- self._short_html = ''
+ for key in filter(lambda x: x.startswith('_short_html'), self.__dict__):
+ self.__setattr__(key, '')
book = super(Book, self).save(force_insert, force_update)
@@ -338,16 +343,18 @@ class Fragment(models.Model):
tags = managers.TagDescriptor(Tag)
def short_html(self):
- if len(self._short_html):
- return mark_safe(self._short_html)
+ key = '_short_html_%s' % get_language()
+ short_html = getattr(self, key)
+ 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']
- self._short_html = unicode(render_to_string('catalogue/fragment_short.html',
- {'fragment': self, 'book': self.book, 'book_authors': book_authors}))
+ setattr(self, key, unicode(render_to_string('catalogue/fragment_short.html',
+ {'fragment': self, 'book': self.book, 'book_authors': book_authors})))
self.save()
- return mark_safe(self._short_html)
+ return mark_safe(getattr(self, key))
def get_absolute_url(self):
return '%s#m%s' % (reverse('book_text', kwargs={'slug': self.book.slug}), self.anchor)