HTML generation in Celery.
[wolnelektury.git] / apps / catalogue / fields.py
index e2978e8..ebf71c2 100644 (file)
@@ -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():
@@ -200,15 +201,25 @@ 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
         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):
     """