mirror of https://github.com/django/django.git
[1.7.x] Fixed #8033 -- Explained app registry error during translation setup
Thanks Tim Graham and Aymeric Augustin for the review.
Backport of 9618d68b34
from master.
This commit is contained in:
parent
29582ad4a3
commit
f50a17785c
|
@ -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
|
||||||
|
|
|
@ -10,6 +10,7 @@ from threading import local
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
|
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
|
||||||
|
@ -181,7 +182,14 @@ def translation(language):
|
||||||
res.merge(t)
|
res.merge(t)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
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:
|
||||||
apppath = os.path.join(app_config.path, 'locale')
|
apppath = os.path.join(app_config.path, 'locale')
|
||||||
if os.path.isdir(apppath):
|
if os.path.isdir(apppath):
|
||||||
res = _merge(apppath)
|
res = _merge(apppath)
|
||||||
|
|
|
@ -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