diff options
-rw-r--r-- | django/core/apps.py | 7 | ||||
-rw-r--r-- | tests/appcachetests/runtests.py | 10 |
2 files changed, 17 insertions, 0 deletions
diff --git a/django/core/apps.py b/django/core/apps.py index 5f37d8d879..b6435fd4e8 100644 --- a/django/core/apps.py +++ b/django/core/apps.py @@ -40,6 +40,11 @@ class AppCache(object): # List of App instances app_instances = [], + # Normalized list of INSTALLED_APPS + # This stores the module name of settings.INSTALLED_APPS + # e.g. 'django.contrib.auth' for 'django.contrib.auth.AuthApp' + installed_apps = [], + # Mapping of app_labels to a dictionary of model names to model code. app_models = SortedDict(), @@ -105,11 +110,13 @@ class AppCache(object): app_instance = self.find_app(app_name) if not app_instance: if '.' in app_name: + # get the app label from the full path app_instance_name = app_name.rsplit('.', 1)[1] else: app_instance_name = app_name app_instance = app_class(app_instance_name) self.app_instances.append(app_instance) + self.installed_apps.append(app_name) # check if the app instance specifies a path to models # if not, we use the models.py file from the package dir diff --git a/tests/appcachetests/runtests.py b/tests/appcachetests/runtests.py index b9a34c4e4c..8b62e7e0dc 100644 --- a/tests/appcachetests/runtests.py +++ b/tests/appcachetests/runtests.py @@ -42,6 +42,7 @@ class AppCacheTestCase(unittest.TestCase): # because thread.RLock is un(deep)copyable cache.app_models = SortedDict() cache.app_instances = [] + cache.installed_apps = [] cache.loaded = False cache.handled = {} @@ -272,6 +273,15 @@ class LoadAppTests(AppCacheTestCase): """ self.assertRaises(ImportError, cache.load_app, 'garageland') + def test_installed_apps(self): + """ + Test that the installed_apps attribute is populated correctly + """ + settings.INSTALLED_APPS = ('model_app', 'nomodel_app.MyApp',) + # populate cache + cache.get_app_errors() + self.assertEqual(cache.installed_apps, ['model_app', 'nomodel_app',]) + class RegisterModelsTests(AppCacheTestCase): """Tests for the register_models function""" |