X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/68dbe44bdbc497a82064c6a47eeaecbb34463f64..d54976be7b44bd0c8c3c2afac8f11b2408e6cb14:/apps/catalogue/fields.py?ds=sidebyside diff --git a/apps/catalogue/fields.py b/apps/catalogue/fields.py index e2978e877..89b76ee32 100644 --- a/apps/catalogue/fields.py +++ b/apps/catalogue/fields.py @@ -134,19 +134,23 @@ class BuildHtml(BuildEbook): book = fieldfile.instance - meta_tags = list(book.tags.filter( - category__in=('author', 'epoch', 'genre', 'kind'))) - book_tag = book.book_tag() - html_output = self.transform( book.wldocument(parse_dublincore=False), fieldfile) - lang = book.language - lang = LANGUAGES_3TO2.get(lang, lang) - if lang not in [ln[0] for ln in settings.LANGUAGES]: - lang = None + + # Delete old fragments, create from scratch if necessary. + book.fragments.all().delete() if html_output: + meta_tags = list(book.tags.filter( + category__in=('author', 'epoch', 'genre', 'kind'))) + book_tag = book.book_tag() + + lang = book.language + lang = LANGUAGES_3TO2.get(lang, lang) + if lang not in [ln[0] for ln in settings.LANGUAGES]: + lang = None + fieldfile.save(None, ContentFile(html_output.get_string()), save=False) type(book).objects.filter(pk=book.pk).update(**{ @@ -160,8 +164,6 @@ class BuildHtml(BuildEbook): ancestor_tags.append(p.book_tag()) p = p.parent - # Delete old fragments and create them from scratch - book.fragments.all().delete() # Extract fragments closed_fragments, open_fragments = html.extract_fragments(fieldfile.path) for fragment in closed_fragments.values(): @@ -200,15 +202,26 @@ class BuildHtml(BuildEbook): short_text = truncate_html_words(text, 15) if text == short_text: short_text = '' - new_fragment = Fragment.objects.create(anchor=fragment.id, + new_fragment = Fragment.objects.create(anchor=fragment.id, book=book, text=text, short_text=short_text) new_fragment.save() new_fragment.tags = set(meta_tags + themes + [book_tag] + ancestor_tags) + book.fix_tree_tags() book.html_built.send(sender=book) return True + book.fix_tree_tags() return False +@BuildEbook.register('cover_thumb') +@task(ignore_result=True) +class BuildCoverThumb(BuildEbook): + @classmethod + def transform(cls, wldoc, fieldfile): + from librarian.cover import WLCover + return WLCover(wldoc.book_info, height=193).output_file() + + class OverwritingFieldFile(FieldFile): """