Added get_app_configs() to iterate on app_config instances.
Refactored get_apps() to rely on that method. This commit is fully backwards-compatible.
This commit is contained in:
parent
a4cb140004
commit
da36d03fe6
|
@ -153,6 +153,21 @@ class BaseAppCache(object):
|
||||||
"""
|
"""
|
||||||
return self.loaded
|
return self.loaded
|
||||||
|
|
||||||
|
def get_app_configs(self, only_installed=True):
|
||||||
|
"""
|
||||||
|
Return an iterable of application configurations.
|
||||||
|
|
||||||
|
If only_installed is True (default), only applications explicitly
|
||||||
|
listed in INSTALLED_APPS are considered.
|
||||||
|
"""
|
||||||
|
self._populate()
|
||||||
|
for app_config in self.app_configs.values():
|
||||||
|
if only_installed and not app_config.installed:
|
||||||
|
continue
|
||||||
|
if self.available_apps is not None and app_config.label not in self.available_apps:
|
||||||
|
continue
|
||||||
|
yield app_config
|
||||||
|
|
||||||
def get_app_config(self, app_label, only_installed=True):
|
def get_app_config(self, app_label, only_installed=True):
|
||||||
"""
|
"""
|
||||||
Returns the application configuration for the given app_label.
|
Returns the application configuration for the given app_label.
|
||||||
|
@ -177,15 +192,7 @@ class BaseAppCache(object):
|
||||||
"""
|
"""
|
||||||
Returns a list of all installed modules that contain models.
|
Returns a list of all installed modules that contain models.
|
||||||
"""
|
"""
|
||||||
self._populate()
|
return [app_config.models_module for app_config in self.get_app_configs()]
|
||||||
|
|
||||||
# app_configs 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 = [app for app in self.app_configs.items() if app[1].installed]
|
|
||||||
if self.available_apps is not None:
|
|
||||||
apps = [app for app in apps if app[0] in self.available_apps]
|
|
||||||
return [app[1].models_module for app in apps]
|
|
||||||
|
|
||||||
def _get_app_package(self, app):
|
def _get_app_package(self, app):
|
||||||
return '.'.join(app.__name__.split('.')[:-1])
|
return '.'.join(app.__name__.split('.')[:-1])
|
||||||
|
|
Loading…
Reference in New Issue