+@task
+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)
+
+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)