Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

[soc2010/app-loading] store normalized version of INSTALLED_APPS in a…

…ppcache

git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2010/app-loading@13573 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 81dc5079638a27853f5c92254133c59956e5f28f 1 parent 4674415
@arthurk arthurk authored
Showing with 17 additions and 0 deletions.
  1. +7 −0 django/core/apps.py
  2. +10 −0 tests/appcachetests/runtests.py
View
7 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 @@ def load_app(self, app_name, can_postpone=False):
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
View
10 tests/appcachetests/runtests.py
@@ -42,6 +42,7 @@ def tearDown(self):
# 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 @@ def test_importerror(self):
"""
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"""
Please sign in to comment.
Something went wrong with that request. Please try again.