X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/70880645deaf4929456d51fd8bbeba07f324b040..9a0ea819fa5bfd8bce2e2500fbfc0cfcc75eff08:/src/catalogue/tasks.py diff --git a/src/catalogue/tasks.py b/src/catalogue/tasks.py index b703e171f..20690c63d 100644 --- a/src/catalogue/tasks.py +++ b/src/catalogue/tasks.py @@ -1,5 +1,5 @@ -# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. -# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Wolne Lektury. See NOTICE for more information. # from traceback import print_exc from celery import shared_task @@ -7,6 +7,7 @@ from celery.utils.log import get_task_logger from django.conf import settings from django.utils import timezone +from catalogue.models import Book from catalogue.utils import absolute_url, gallery_url from waiter.models import WaitedFile @@ -22,11 +23,18 @@ def touch_tag(tag): type(tag).objects.filter(pk=tag.pk).update(**update_dict) +@shared_task(ignore_result=True) +def build_field(pk, field_name): + book = Book.objects.get(pk=pk) + task_logger.info("build %s.%s" % (book.slug, field_name)) + field_file = getattr(book, field_name) + field_file.build() + + @shared_task -def index_book(book_id, book_info=None, **kwargs): - from catalogue.models import Book +def index_book(book_id, **kwargs): try: - return Book.objects.get(id=book_id).search_index(book_info, **kwargs) + return Book.objects.get(id=book_id).search_index(**kwargs) except Exception as e: print("Exception during index: %s" % e) print_exc() @@ -39,7 +47,6 @@ def build_custom_pdf(book_id, customizations, file_name, waiter_id=None): try: from django.core.files import File from django.core.files.storage import DefaultStorage - from catalogue.models import Book task_logger.info(DefaultStorage().path(file_name)) if not DefaultStorage().exists(file_name): @@ -55,7 +62,8 @@ def build_custom_pdf(book_id, customizations, file_name, waiter_id=None): morefloats=settings.LIBRARIAN_PDF_MOREFLOATS, base_url=absolute_url(gallery_url(wldoc.book_info.url.slug)), **kwargs) - DefaultStorage().save(file_name, File(open(pdf.get_filename(), 'rb'))) + with open(pdf.get_filename(), 'rb') as f: + DefaultStorage().save(file_name, File(f)) finally: if waiter_id is not None: WaitedFile.objects.filter(pk=waiter_id).delete() @@ -69,6 +77,5 @@ def update_counters(): @shared_task(ignore_result=True) def update_references(book_id): - from catalogue.models import Book Book.objects.get(id=book_id).update_references()