1
0
mirror of https://github.com/django/django.git synced 2025-10-24 06:06:09 +00:00

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.
This commit is contained in:
Aymeric Augustin
2013-12-12 21:34:39 +01:00
parent 2c9e84af4a
commit b55282b98b
10 changed files with 87 additions and 73 deletions

View File

@@ -2,7 +2,6 @@
from __future__ import unicode_literals
import codecs
import copy
import os
import shutil
@@ -132,10 +131,10 @@ class MakeMigrationsTests(MigrationTestBase):
self.test_dir = os.path.abspath(os.path.dirname(upath(__file__)))
self.migration_dir = os.path.join(self.test_dir, 'migrations_%d' % self.creation_counter)
self.migration_pkg = "migrations.migrations_%d" % self.creation_counter
self._old_app_models = copy.deepcopy(app_cache.app_models)
self._old_models = app_cache.app_configs['migrations'].models.copy()
def tearDown(self):
app_cache.app_models = self._old_app_models
app_cache.app_configs['migrations'].models = self._old_models
app_cache._get_models_cache = {}
os.chdir(self.test_dir)