X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/dd549d9f4b46da1b7a42145f571c746f3831953e..9e65086e2b3ab261138a95bfe8b2a17947c630dd:/apps/catalogue/models.py diff --git a/apps/catalogue/models.py b/apps/catalogue/models.py index a0f737f58..0863d5b66 100644 --- a/apps/catalogue/models.py +++ b/apps/catalogue/models.py @@ -31,6 +31,8 @@ from slughifi import slughifi from sortify import sortify from os import unlink +import search + TAG_CATEGORIES = ( ('author', _('author')), ('epoch', _('epoch')), @@ -615,6 +617,7 @@ class Book(models.Model): for b in books] result = create_zip.delay(paths, getattr(settings, "ALL_%s_ZIP" % format_.upper())) + return result.wait() def zip_audiobooks(self): bm = BookMedia.objects.filter(book=self, type='mp3') @@ -622,6 +625,14 @@ class Book(models.Model): result = create_zip.delay(paths, self.slug) return result.wait() + def search_index(self): + idx = search.ReusableIndex() + idx.open() + try: + idx.index_book(self) + finally: + idx.close() + @classmethod def from_xml_file(cls, xml_file, **kwargs): # use librarian to parse meta-data @@ -637,7 +648,8 @@ 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_epub=True, build_txt=True, build_pdf=True, build_mobi=True, + search_index=True): import re # check for parts before we do anything @@ -716,6 +728,9 @@ class Book(models.Model): if not settings.NO_BUILD_MOBI and build_mobi: book.build_mobi() + if not settings.NO_SEARCH_INDEX and search_index: + book.search_index() + book_descendants = list(book.children.all()) # add l-tag to descendants and their fragments # delete unnecessary EPUB files