From: Marcin Koziej Date: Mon, 3 Sep 2012 14:55:43 +0000 (+0200) Subject: Merge branch 'master' into sunburnt X-Git-Url: https://git.mdrn.pl/wolnelektury.git/commitdiff_plain/ddaff853c515ef7d188523d9ef17d271901dd581 Merge branch 'master' into sunburnt Conflicts: apps/catalogue/management/commands/importbooks.py apps/catalogue/models/book.py --- ddaff853c515ef7d188523d9ef17d271901dd581 diff --cc apps/catalogue/management/commands/importbooks.py index 1f08f7cff,637e2148f..8f181cf98 --- a/apps/catalogue/management/commands/importbooks.py +++ b/apps/catalogue/management/commands/importbooks.py @@@ -42,13 -37,16 +37,14 @@@ class Command(BaseCommand) def import_book(self, file_path, options): verbose = options.get('verbose') + if options.get('dont_build'): + dont_build = options.get('dont_build').lower().split(',') + else: + dont_build = None file_base, ext = os.path.splitext(file_path) book = Book.from_xml_file(file_path, overwrite=options.get('force'), - build_epub=options.get('build_epub'), - build_txt=options.get('build_txt'), - build_pdf=options.get('build_pdf'), - build_mobi=options.get('build_mobi'), - search_index_tags=False) + dont_build=dont_build, - search_index=options.get('search_index'), - search_index_reuse=True, + search_index_tags=False) for ebook_format in Book.ebook_formats: if os.path.isfile(file_base + '.' + ebook_format): getattr(book, '%s_file' % ebook_format).save( diff --cc apps/catalogue/models/book.py index d3df67e6f,6a31f4bff..5bc1e1021 --- a/apps/catalogue/models/book.py +++ b/apps/catalogue/models/book.py @@@ -302,8 -222,11 +222,11 @@@ class Book(models.Model) @classmethod def from_text_and_meta(cls, raw_file, book_info, overwrite=False, - build_epub=True, build_txt=True, build_pdf=True, build_mobi=True, build_fb2=True, - search_index=True, search_index_tags=True): + dont_build=None, search_index=True, - search_index_tags=True, search_index_reuse=False): ++ search_index_tags=True): + if dont_build is None: + dont_build = set() + dont_build = set.union(set(dont_build), set(app_settings.DONT_BUILD)) # check for parts before we do anything children = [] @@@ -362,28 -293,29 +293,28 @@@ # delete old fragments when overwriting book.fragments.all().delete() - - if book.build_html(): - # No direct saves behind this point. - if not settings.NO_BUILD_TXT and build_txt: - book.build_txt() - - if not settings.NO_BUILD_EPUB and build_epub: - book.build_epub() - - if not settings.NO_BUILD_PDF and build_pdf: - book.build_pdf() - - if not settings.NO_BUILD_MOBI and build_mobi: - book.build_mobi() - - if not settings.NO_BUILD_FB2 and build_fb2: - book.build_fb2() + # Build HTML, fix the tree tags, build cover. + has_own_text = bool(book.html_file.build()) + tasks.fix_tree_tags.delay(book) + if 'cover' not in dont_build: + book.cover.build_delay() + + # No saves behind this point. + + if has_own_text: + for format_ in constants.EBOOK_FORMATS_WITHOUT_CHILDREN: + if format_ not in dont_build: + getattr(book, '%s_file' % format_).build_delay() + for format_ in constants.EBOOK_FORMATS_WITH_CHILDREN: + if format_ not in dont_build: + getattr(book, '%s_file' % format_).build_delay() if not settings.NO_SEARCH_INDEX and search_index: - book.search_index(index_tags=search_index_tags, reuse_index=search_index_reuse) - #index_book.delay(book.id, book_info) + tasks.index_book.delay(book.id, book_info=book_info, index_tags=search_index_tags) - tasks.fix_tree_tags.delay(book) + for child in notify_cover_changed: + child.parent_cover_changed() + cls.published.send(sender=book) return book