fix in librarian
[wolnelektury.git] / apps / catalogue / fields.py
index 8ed628e..0ff2ca9 100644 (file)
@@ -10,8 +10,11 @@ from catalogue import app_settings
 from catalogue.constants import LANGUAGES_3TO2
 from catalogue.utils import remove_zip, truncate_html_words
 from celery.task import Task, task
+from celery.utils.log import get_task_logger
 from waiter.utils import clear_cache
 
+task_logger = get_task_logger(__name__)
+
 
 class EbookFieldFile(FieldFile):
     """Represents contents of an ebook file field."""
@@ -82,7 +85,10 @@ class BuildEbook(Task):
 
     def run(self, obj, field_name):
         """Just run `build` on FieldFile, can't pass it directly to Celery."""
-        return self.build(getattr(obj, field_name))
+        task_logger.info("%s -> %s" % (obj.slug, field_name))
+        ret = self.build(getattr(obj, field_name))
+        obj.flush_includes()
+        return ret
 
     def build(self, fieldfile):
         book = fieldfile.instance
@@ -149,7 +155,6 @@ class BuildHtml(BuildEbook):
         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)
@@ -162,13 +167,6 @@ class BuildHtml(BuildEbook):
                 fieldfile.field.attname: fieldfile
             })
 
-            # get ancestor l-tags for adding to new fragments
-            ancestor_tags = []
-            p = book.parent
-            while p:
-                ancestor_tags.append(p.book_tag())
-                p = p.parent
-
             # Extract fragments
             closed_fragments, open_fragments = html.extract_fragments(fieldfile.path)
             for fragment in closed_fragments.values():
@@ -211,11 +209,9 @@ class BuildHtml(BuildEbook):
                         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)
+                new_fragment.tags = set(meta_tags + themes)
+            book.html_built.send(sender=type(self), instance=book)
             return True
-        book.fix_tree_tags()
         return False
 
 @BuildEbook.register('cover_thumb')
@@ -245,19 +241,3 @@ class OverwritingFieldFile(FieldFile):
 
 class OverwritingFileField(models.FileField):
     attr_class = OverwritingFieldFile
-
-
-try:
-    # check for south
-    from south.modelsinspector import add_introspection_rules
-except ImportError:
-    pass
-else:
-    add_introspection_rules([
-        (
-            [EbookField],
-            [],
-            {'format_name': ('format_name', {})}
-        )
-    ], ["^catalogue\.fields\.EbookField"])
-    add_introspection_rules([], ["^catalogue\.fields\.OverwritingFileField"])