X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/add48c78bc4b08dfda50b0c0ccb6be188c7d56f4..e5ba4e015ad743e8581275272c61a660f32d9fed:/apps/catalogue/tasks.py diff --git a/apps/catalogue/tasks.py b/apps/catalogue/tasks.py index 3e230379..53b867b4 100644 --- a/apps/catalogue/tasks.py +++ b/apps/catalogue/tasks.py @@ -1,20 +1,42 @@ from celery.task import task +from django.utils import translation +from django.conf import settings @task -def refresh_by_pk(cls, pk): - cls._default_manager.get(pk=pk).refresh() - +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) +if settings.USE_CELERY: + def refresh_instance(instance): + _refresh_by_pk.delay(type(instance), instance.pk, translation.get_language()) +else: + def refresh_instance(instance): + instance.refresh() @task -def publishable_error(book): +def _publishable_error(book, language=None): + prev_language = translation.get_language() + language and translation.activate(language) try: - book.assert_publishable() + return book.assert_publishable() except AssertionError, e: return e else: return None + finally: + translation.activate(prev_language) + +if settings.USE_CELERY: + def publishable_error(book): + task = _publishable_error.delay(book, translation.get_language()) + return task.wait() +else: + def publishable_error(book): + return _publishable_error(book)