mirror of https://github.com/django/django.git
Added get_app_paths() to the AppCache.
This method is useful to discover files inside apps.
This commit is contained in:
parent
09d0568697
commit
b55624a026
|
@ -1,7 +1,7 @@
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
|
||||||
from django.core.exceptions import ObjectDoesNotExist, ImproperlyConfigured
|
from django.core.exceptions import ObjectDoesNotExist, ImproperlyConfigured
|
||||||
from django.db.models.loading import get_apps, get_app, get_models, get_model, register_models
|
from django.db.models.loading import get_apps, get_app_paths, get_app, get_models, get_model, register_models
|
||||||
from django.db.models.query import Q
|
from django.db.models.query import Q
|
||||||
from django.db.models.expressions import F
|
from django.db.models.expressions import F
|
||||||
from django.db.models.manager import Manager
|
from django.db.models.manager import Manager
|
||||||
|
|
|
@ -130,7 +130,9 @@ class AppCache(object):
|
||||||
return self.loaded
|
return self.loaded
|
||||||
|
|
||||||
def get_apps(self):
|
def get_apps(self):
|
||||||
"Returns a list of all installed modules that contain models."
|
"""
|
||||||
|
Returns a list of all installed modules that contain models.
|
||||||
|
"""
|
||||||
self._populate()
|
self._populate()
|
||||||
|
|
||||||
# Ensure the returned list is always in the same order (with new apps
|
# Ensure the returned list is always in the same order (with new apps
|
||||||
|
@ -140,6 +142,23 @@ class AppCache(object):
|
||||||
apps.sort()
|
apps.sort()
|
||||||
return [elt[1] for elt in apps]
|
return [elt[1] for elt in apps]
|
||||||
|
|
||||||
|
def get_app_paths(self):
|
||||||
|
"""
|
||||||
|
Returns a list of paths to all installed apps.
|
||||||
|
|
||||||
|
Useful for discovering files at conventional locations inside apps
|
||||||
|
(static files, templates, etc.)
|
||||||
|
"""
|
||||||
|
self._populate()
|
||||||
|
|
||||||
|
app_paths = []
|
||||||
|
for app in self.get_apps():
|
||||||
|
if hasattr(app, '__path__'): # models/__init__.py package
|
||||||
|
app_paths.extend([upath(path) for path in app.__path__])
|
||||||
|
else: # models.py module
|
||||||
|
app_paths.append(upath(app.__file__))
|
||||||
|
return app_paths
|
||||||
|
|
||||||
def get_app(self, app_label, emptyOK=False):
|
def get_app(self, app_label, emptyOK=False):
|
||||||
"""
|
"""
|
||||||
Returns the module containing the models for the given app_label. If
|
Returns the module containing the models for the given app_label. If
|
||||||
|
@ -260,6 +279,7 @@ cache = AppCache()
|
||||||
# These methods were always module level, so are kept that way for backwards
|
# These methods were always module level, so are kept that way for backwards
|
||||||
# compatibility.
|
# compatibility.
|
||||||
get_apps = cache.get_apps
|
get_apps = cache.get_apps
|
||||||
|
get_app_paths = cache.get_app_paths
|
||||||
get_app = cache.get_app
|
get_app = cache.get_app
|
||||||
get_app_errors = cache.get_app_errors
|
get_app_errors = cache.get_app_errors
|
||||||
get_models = cache.get_models
|
get_models = cache.get_models
|
||||||
|
|
Loading…
Reference in New Issue