Fixed #8033 -- Explained app registry error during translation setup
Thanks Tim Graham and Aymeric Augustin for the review.
This commit is contained in:
parent
21c496ea52
commit
9618d68b34
|
@ -4,7 +4,7 @@ import sys
|
||||||
import threading
|
import threading
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import AppRegistryNotReady, ImproperlyConfigured
|
||||||
from django.utils import lru_cache
|
from django.utils import lru_cache
|
||||||
from django.utils.deprecation import RemovedInDjango19Warning
|
from django.utils.deprecation import RemovedInDjango19Warning
|
||||||
from django.utils._os import upath
|
from django.utils._os import upath
|
||||||
|
@ -116,7 +116,7 @@ class Apps(object):
|
||||||
Raises an exception if the registry isn't ready.
|
Raises an exception if the registry isn't ready.
|
||||||
"""
|
"""
|
||||||
if not self.ready:
|
if not self.ready:
|
||||||
raise RuntimeError("App registry isn't ready yet.")
|
raise AppRegistryNotReady()
|
||||||
|
|
||||||
def get_app_configs(self):
|
def get_app_configs(self):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -12,6 +12,11 @@ class DjangoRuntimeWarning(RuntimeWarning):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class AppRegistryNotReady(Exception):
|
||||||
|
"""The django.apps registry is not populated yet"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ObjectDoesNotExist(Exception):
|
class ObjectDoesNotExist(Exception):
|
||||||
"""The requested object does not exist"""
|
"""The requested object does not exist"""
|
||||||
silent_variable_failure = True
|
silent_variable_failure = True
|
||||||
|
|
|
@ -11,6 +11,7 @@ import warnings
|
||||||
|
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.core.exceptions import AppRegistryNotReady
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
from django.test.signals import setting_changed
|
from django.test.signals import setting_changed
|
||||||
from django.utils.deprecation import RemovedInDjango19Warning
|
from django.utils.deprecation import RemovedInDjango19Warning
|
||||||
|
@ -160,7 +161,14 @@ class DjangoTranslation(gettext_module.GNUTranslations):
|
||||||
|
|
||||||
def _add_installed_apps_translations(self):
|
def _add_installed_apps_translations(self):
|
||||||
"""Merges translations from each installed app."""
|
"""Merges translations from each installed app."""
|
||||||
for app_config in reversed(list(apps.get_app_configs())):
|
try:
|
||||||
|
app_configs = reversed(list(apps.get_app_configs()))
|
||||||
|
except AppRegistryNotReady:
|
||||||
|
raise AppRegistryNotReady(
|
||||||
|
"The translation infrastructure cannot be initialized before the "
|
||||||
|
"apps registry is ready. Check that you don't make non-lazy "
|
||||||
|
"gettext calls at import time.")
|
||||||
|
for app_config in app_configs:
|
||||||
localedir = os.path.join(app_config.path, 'locale')
|
localedir = os.path.join(app_config.path, 'locale')
|
||||||
translation = self._new_gnu_trans(localedir)
|
translation = self._new_gnu_trans(localedir)
|
||||||
self.merge(translation)
|
self.merge(translation)
|
||||||
|
|
|
@ -382,9 +382,9 @@ Troubleshooting
|
||||||
|
|
||||||
Here are some common problems that you may encounter during initialization:
|
Here are some common problems that you may encounter during initialization:
|
||||||
|
|
||||||
* ``RuntimeError: App registry isn't ready yet.`` This happens when importing
|
* ``AppRegistryNotReady`` This happens when importing an application
|
||||||
an application configuration or a models module triggers code that depends
|
configuration or a models module triggers code that depends on the app
|
||||||
on the app registry.
|
registry.
|
||||||
|
|
||||||
For example, :func:`~django.utils.translation.ugettext()` uses the app
|
For example, :func:`~django.utils.translation.ugettext()` uses the app
|
||||||
registry to look up translation catalogs in applications. To translate at
|
registry to look up translation catalogs in applications. To translate at
|
||||||
|
|
|
@ -934,7 +934,7 @@ script with::
|
||||||
>>> import django
|
>>> import django
|
||||||
>>> django.setup()
|
>>> django.setup()
|
||||||
|
|
||||||
Otherwise, you will hit ``RuntimeError: App registry isn't ready yet.``
|
Otherwise, you will hit an ``AppRegistryNotReady`` exception.
|
||||||
|
|
||||||
App registry consistency
|
App registry consistency
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
Loading…
Reference in New Issue