diff options
author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-12-12 21:34:39 +0100 |
---|---|---|
committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-12-17 10:17:44 +0100 |
commit | b55282b98bf7883490fcc586d501e1b36c7a1c9c (patch) | |
tree | 43afde0c58dc9e0ecde78aecab4efb0433d30c2b /tests/proxy_models | |
parent | 2c9e84af4a08096c47ebd3d54b463af1a3c7de77 (diff) | |
download | django-b55282b98bf7883490fcc586d501e1b36c7a1c9c.tar.gz |
Moved list of models inside AppConfig instances.
This commit is a refactoring with no change of functionality, according
to the following invariants:
- An app_label that was in app_configs and app_models stays in
app_config and has its 'installed' attribute set to True.
- An app_label that was in app_models but not in app_configs is added to
app_configs and has its 'installed' attribute set to True.
As a consequence, all the code that iterated on app_configs is modified
to check for the 'installed' attribute. Code that iterated on app_models
is rewritten in terms of app_configs.
Many tests that stored and restored the state of the app cache were
updated.
In the long term, we should reconsider the usefulness of allowing
importing models from non-installed applications. This doesn't sound
particularly useful, can be a trap in some circumstances, and causes
significant complexity in sensitive areas of Django.
Diffstat (limited to 'tests/proxy_models')
-rw-r--r-- | tests/proxy_models/tests.py | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/tests/proxy_models/tests.py b/tests/proxy_models/tests.py index cdd979a399..0c643991a7 100644 --- a/tests/proxy_models/tests.py +++ b/tests/proxy_models/tests.py @@ -1,5 +1,4 @@ from __future__ import unicode_literals -import copy from django.apps import app_cache from django.contrib import admin @@ -155,12 +154,11 @@ class ProxyModelTests(TestCase): @override_settings(TEST_SWAPPABLE_MODEL='proxy_models.AlternateModel') def test_swappable(self): - try: - # This test adds dummy applications to the app cache. These - # need to be removed in order to prevent bad interactions - # with the flush operation in other tests. - old_app_models = copy.deepcopy(app_cache.app_models) + # The models need to be removed after the test in order to prevent bad + # interactions with the flush operation in other tests. + _old_models = app_cache.app_configs['proxy_models'].models.copy() + try: class SwappableModel(models.Model): class Meta: @@ -176,7 +174,8 @@ class ProxyModelTests(TestCase): class Meta: proxy = True finally: - app_cache.app_models = old_app_models + app_cache.app_configs['proxy_models'].models = _old_models + app_cache._get_models_cache = {} def test_myperson_manager(self): Person.objects.create(name="fred") |