summaryrefslogtreecommitdiff
path: root/tests/proxy_models
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2013-12-12 21:34:39 +0100
committerAymeric Augustin <aymeric.augustin@m4x.org>2013-12-17 10:17:44 +0100
commitb55282b98bf7883490fcc586d501e1b36c7a1c9c (patch)
tree43afde0c58dc9e0ecde78aecab4efb0433d30c2b /tests/proxy_models
parent2c9e84af4a08096c47ebd3d54b463af1a3c7de77 (diff)
downloaddjango-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.py13
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")