X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/6a259b96cff47e1fd64cbfd6f3d1e1d8e8b6486c..007edbf0d879c5aff6a883c64e51955ad1645303:/apps/catalogue/tasks.py diff --git a/apps/catalogue/tasks.py b/apps/catalogue/tasks.py index e9b8cf9b..c84a2912 100644 --- a/apps/catalogue/tasks.py +++ b/apps/catalogue/tasks.py @@ -1,11 +1,39 @@ from celery.task import task +from django.utils import translation +from django.conf import settings + + +@task(ignore_result=True) +def _refresh_by_pk(cls, pk, language=None): + prev_language = translation.get_language() + language and translation.activate(language) + try: + cls._default_manager.get(pk=pk).refresh() + finally: + translation.activate(prev_language) + +def refresh_instance(instance): + _refresh_by_pk.delay(type(instance), instance.pk, translation.get_language()) @task -def refresh_by_pk(cls, pk): - cls._default_manager.get(pk=pk).refresh() +def _publishable_error(book, language=None): + prev_language = translation.get_language() + language and translation.activate(language) + try: + return book.assert_publishable() + except AssertionError, e: + return e + else: + return None + finally: + translation.activate(prev_language) +def publishable_error(book): + return _publishable_error.delay(book, + translation.get_language()).wait() -def refresh_instance(instance): - refresh_by_pk.delay(type(instance), instance.pk) +@task(ignore_result=True) +def book_content_updated(book): + book.refresh_dc_cache()