From 670ae4304fb7dc4b5f28abdff659bd5dba10cf33 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Fri, 18 Jul 2014 16:29:58 +0200 Subject: [PATCH 1/1] HTML generation in Celery. --- apps/catalogue/fields.py | 6 ++++-- apps/catalogue/models/book.py | 14 ++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) 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() -- 2.20.1