Loading django/apps/registry.py +1 −3 Original line number Diff line number Diff line Loading @@ -227,9 +227,7 @@ class Apps(object): Returns the app config for the inner application in case of nesting. Returns None if the object isn't in any registered app config. """ # In Django 1.7 and 1.8, it's allowed to call this method at import # time, even while the registry is being populated. In Django 1.9 and # later, that should be forbidden with `self.check_apps_ready()`. self.check_apps_ready() candidates = [] for app_config in self.app_configs.values(): if object_name.startswith(app_config.name): Loading tests/apps/tests.py +13 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ from unittest import skipUnless from django.apps import AppConfig, apps from django.apps.registry import Apps from django.contrib.admin.models import LogEntry from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import AppRegistryNotReady, ImproperlyConfigured from django.db import models from django.test import TestCase, override_settings from django.test.utils import extend_sys_path Loading Loading @@ -247,6 +247,18 @@ class AppsTests(TestCase): "Conflicting 'southponies' models in application 'apps':.*"): type(str("SouthPonies"), (models.Model,), body) def test_get_containing_app_config_apps_not_ready(self): """ apps.get_containing_app_config() should raise an exception if apps.apps_ready isn't True. """ apps.apps_ready = False try: with self.assertRaisesMessage(AppRegistryNotReady, "Apps aren't loaded yet"): apps.get_containing_app_config('foo') finally: apps.apps_ready = True class Stub(object): def __init__(self, **kwargs): Loading Loading
django/apps/registry.py +1 −3 Original line number Diff line number Diff line Loading @@ -227,9 +227,7 @@ class Apps(object): Returns the app config for the inner application in case of nesting. Returns None if the object isn't in any registered app config. """ # In Django 1.7 and 1.8, it's allowed to call this method at import # time, even while the registry is being populated. In Django 1.9 and # later, that should be forbidden with `self.check_apps_ready()`. self.check_apps_ready() candidates = [] for app_config in self.app_configs.values(): if object_name.startswith(app_config.name): Loading
tests/apps/tests.py +13 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ from unittest import skipUnless from django.apps import AppConfig, apps from django.apps.registry import Apps from django.contrib.admin.models import LogEntry from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import AppRegistryNotReady, ImproperlyConfigured from django.db import models from django.test import TestCase, override_settings from django.test.utils import extend_sys_path Loading Loading @@ -247,6 +247,18 @@ class AppsTests(TestCase): "Conflicting 'southponies' models in application 'apps':.*"): type(str("SouthPonies"), (models.Model,), body) def test_get_containing_app_config_apps_not_ready(self): """ apps.get_containing_app_config() should raise an exception if apps.apps_ready isn't True. """ apps.apps_ready = False try: with self.assertRaisesMessage(AppRegistryNotReady, "Apps aren't loaded yet"): apps.get_containing_app_config('foo') finally: apps.apps_ready = True class Stub(object): def __init__(self, **kwargs): Loading