X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/69191eddb9e4221d964a7e5b044ff7c5dfe38315..94924a2ca60f4f045c739cdb19d859cdcf8959af:/apps/catalogue/models.py diff --git a/apps/catalogue/models.py b/apps/catalogue/models.py index 03cf0c891..091e66148 100644 --- a/apps/catalogue/models.py +++ b/apps/catalogue/models.py @@ -24,7 +24,7 @@ from django.conf import settings from newtagging.models import TagBase, tags_updated from newtagging import managers from catalogue.fields import JSONField, OverwritingFileField -from catalogue.utils import create_zip, split_tags +from catalogue.utils import create_zip, split_tags, truncate_html_words from catalogue.tasks import touch_tag, index_book from shutil import copy from glob import glob @@ -565,7 +565,6 @@ class Book(models.Model): def build_html(self): - from markupstring import MarkupString from django.core.files.base import ContentFile from slughifi import slughifi from librarian import html @@ -609,10 +608,9 @@ class Book(models.Model): continue text = fragment.to_string() - short_text = '' - markup = MarkupString(text) - if (len(markup) > 240): - short_text = unicode(markup[:160]) + short_text = truncate_html_words(text, 15) + if text == short_text: + short_text = '' new_fragment = Fragment.objects.create(anchor=fragment.id, book=self, text=text, short_text=short_text) @@ -765,7 +763,7 @@ class Book(models.Model): book_descendants += list(child_book.children.all()) for tag in descendants_tags: - touch_tag.delay(tag) + touch_tag(tag) book.save() @@ -788,7 +786,7 @@ class Book(models.Model): tags = split_tags(tags) for category in tags: rel['tags'][category] = [ - (t.name, t.get_absolute_url()) for t in tags[category]] + (t.name, t.slug) for t in tags[category]] for media_format in BookMedia.formats: rel['media'][media_format] = self.has_media(media_format) @@ -1003,6 +1001,10 @@ class Fragment(models.Model): for lang, langname in settings.LANGUAGES: permanent_cache.delete(cache_key % (self.id, lang)) + def get_short_text(self): + """Returns short version of the fragment.""" + return self.short_text if self.short_text else self.text + def short_html(self): if self.id: cache_key = "Fragment.short_html/%d/%s" % (self.id, get_language()) @@ -1049,7 +1051,7 @@ def _tags_updated_handler(sender, affected_tags, **kwargs): # reset tag global counter # we want Tag.changed_at updated for API to know the tag was touched for tag in affected_tags: - touch_tag.delay(tag) + touch_tag(tag) # if book tags changed, reset book tag counter if isinstance(sender, Book) and \