From: Radek Czajka Date: Fri, 18 Jul 2014 14:29:58 +0000 (+0200) Subject: HTML generation in Celery. X-Git-Url: https://git.mdrn.pl/wolnelektury.git/commitdiff_plain/670ae4304fb7dc4b5f28abdff659bd5dba10cf33?ds=sidebyside;hp=e97becbbb360b14527801bfc22c3e1ab3fd288a1 HTML generation in Celery. --- diff --git a/apps/catalogue/fields.py b/apps/catalogue/fields.py index 6080c2ab4..ebf71c222 100644 --- a/apps/catalogue/fields.py +++ b/apps/catalogue/fields.py @@ -146,6 +146,9 @@ class BuildHtml(BuildEbook): 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: fieldfile.save(None, ContentFile(html_output.get_string()), save=False) @@ -160,8 +163,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(): @@ -205,6 +206,7 @@ class BuildHtml(BuildEbook): 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 return False diff --git a/apps/catalogue/models/book.py b/apps/catalogue/models/book.py index 27240fbd5..1ab2c42f5 100644 --- a/apps/catalogue/models/book.py +++ b/apps/catalogue/models/book.py @@ -322,18 +322,16 @@ class Book(models.Model): if old_cover: notify_cover_changed.append(child) - # delete old fragments when overwriting - book.fragments.all().delete() - # Build HTML, fix the tree tags, build cover. - has_own_text = bool(book.html_file.build()) - tasks.fix_tree_tags.delay(book) + # No saves beyond this point. + + # Build cover. if 'cover' not in dont_build: book.cover.build_delay() book.cover_thumb.build_delay() - # No saves behind this point. - - if has_own_text: + # Build HTML and ebooks. + if not children: + book.html_file.build_delay() for format_ in constants.EBOOK_FORMATS_WITHOUT_CHILDREN: if format_ not in dont_build: getattr(book, '%s_file' % format_).build_delay()