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."""
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
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)
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():
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')
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"])