Commit 9217b89d authored by Aymeric Augustin's avatar Aymeric Augustin
Browse files

Removed BaseAppCache.app_store.

It was only storing redundant information. This is part of the effort to
allow applications without a models module.
parent 860c2c8b
Loading
Loading
Loading
Loading
+13 −19
Original line number Diff line number Diff line
@@ -39,11 +39,8 @@ def _initialize():
    [shared] state of the app cache.
    """
    return dict(
        # Keys of app_store are the model modules for each application.
        app_store=ModelDict(),

        # Mapping of installed app_labels to model modules for that app.
        app_labels={},
        app_labels=OrderedDict(),

        # Mapping of app_labels to a dictionary of model names to model code.
        # May contain apps that are not installed.
@@ -154,9 +151,9 @@ class BaseAppCache(object):
                    raise

        self.nesting_level -= 1
        if models not in self.app_store:
            self.app_store[models] = len(self.app_store)
            self.app_labels[self._label_for(models)] = models
        label = self._label_for(models)
        if label not in self.app_labels:
            self.app_labels[label] = models
        return models

    def app_cache_ready(self):
@@ -174,17 +171,13 @@ class BaseAppCache(object):
        """
        self._populate()

        apps = self.app_store.items()
        # app_labels is an OrderedDict, which ensures that the returned list
        # is always in the same order (with new apps added at the end). This
        # avoids unstable ordering on the admin app list page, for example.
        apps = self.app_labels.items()
        if self.available_apps is not None:
            apps = [elt for elt in apps
                    if self._label_for(elt[0]) in self.available_apps]

        # Ensure the returned list is always in the same order (with new apps
        # added at the end). This avoids unstable ordering on the admin app
        # list page, for example.
        apps = sorted(apps, key=lambda elt: elt[1])

        return [elt[0] for elt in apps]
            apps = [app for app in apps if app[0] in self.available_apps]
        return [app[1] for app in apps]

    def _get_app_package(self, app):
        return '.'.join(app.__name__.split('.')[:-1])
@@ -282,8 +275,9 @@ class BaseAppCache(object):
            pass
        self._populate()
        if app_mod:
            if app_mod in self.app_store:
                app_list = [self.app_models.get(self._label_for(app_mod), ModelDict())]
            app_label = self._label_for(app_mod)
            if app_label in self.app_labels:
                app_list = [self.app_models.get(app_label, ModelDict())]
            else:
                app_list = []
        else:
+0 −2
Original line number Diff line number Diff line
@@ -20,12 +20,10 @@ class EggLoadingTest(TestCase):
        # need to be removed in order to prevent bad interactions
        # with the flush operation in other tests.
        self.old_app_models = copy.deepcopy(cache.app_models)
        self.old_app_store = copy.deepcopy(cache.app_store)

    def tearDown(self):
        sys.path = self.old_path
        cache.app_models = self.old_app_models
        cache.app_store = self.old_app_store

    def test_egg1(self):
        """Models module can be loaded from an app in an egg"""
+0 −2
Original line number Diff line number Diff line
@@ -23,11 +23,9 @@ class InvalidModelTestCase(unittest.TestCase):
        # need to be removed in order to prevent bad interactions
        # with the flush operation in other tests.
        self.old_app_models = copy.deepcopy(cache.app_models)
        self.old_app_store = copy.deepcopy(cache.app_store)

    def tearDown(self):
        cache.app_models = self.old_app_models
        cache.app_store = self.old_app_store
        cache._get_models_cache = {}
        sys.stdout = self.old_stdout

+0 −6
Original line number Diff line number Diff line
@@ -115,7 +115,6 @@ class ManagersRegressionTests(TestCase):
            # need to be removed in order to prevent bad interactions
            # with the flush operation in other tests.
            old_app_models = copy.deepcopy(cache.app_models)
            old_app_store = copy.deepcopy(cache.app_store)

            class SwappableModel(models.Model):
                class Meta:
@@ -131,7 +130,6 @@ class ManagersRegressionTests(TestCase):

        finally:
            cache.app_models = old_app_models
            cache.app_store = old_app_store

    @override_settings(TEST_SWAPPABLE_MODEL='managers_regress.Parent')
    def test_custom_swappable_manager(self):
@@ -140,7 +138,6 @@ class ManagersRegressionTests(TestCase):
            # need to be removed in order to prevent bad interactions
            # with the flush operation in other tests.
            old_app_models = copy.deepcopy(cache.app_models)
            old_app_store = copy.deepcopy(cache.app_store)

            class SwappableModel(models.Model):

@@ -160,7 +157,6 @@ class ManagersRegressionTests(TestCase):

        finally:
            cache.app_models = old_app_models
            cache.app_store = old_app_store

    @override_settings(TEST_SWAPPABLE_MODEL='managers_regress.Parent')
    def test_explicit_swappable_manager(self):
@@ -169,7 +165,6 @@ class ManagersRegressionTests(TestCase):
            # need to be removed in order to prevent bad interactions
            # with the flush operation in other tests.
            old_app_models = copy.deepcopy(cache.app_models)
            old_app_store = copy.deepcopy(cache.app_store)

            class SwappableModel(models.Model):

@@ -189,7 +184,6 @@ class ManagersRegressionTests(TestCase):

        finally:
            cache.app_models = old_app_models
            cache.app_store = old_app_store

    def test_regress_3871(self):
        related = RelatedModel.objects.create()
+0 −2
Original line number Diff line number Diff line
@@ -133,11 +133,9 @@ class MakeMigrationsTests(MigrationTestBase):
        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(cache.app_models)
        self._old_app_store = copy.deepcopy(cache.app_store)

    def tearDown(self):
        cache.app_models = self._old_app_models
        cache.app_store = self._old_app_store
        cache._get_models_cache = {}

        os.chdir(self.test_dir)
Loading