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 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.expressions import F
|
||||
from django.db.models.manager import Manager
|
||||
|
|
|
@ -130,7 +130,9 @@ class AppCache(object):
|
|||
return self.loaded
|
||||
|
||||
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()
|
||||
|
||||
# Ensure the returned list is always in the same order (with new apps
|
||||
|
@ -140,6 +142,23 @@ class AppCache(object):
|
|||
apps.sort()
|
||||
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):
|
||||
"""
|
||||
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
|
||||
# compatibility.
|
||||
get_apps = cache.get_apps
|
||||
get_app_paths = cache.get_app_paths
|
||||
get_app = cache.get_app
|
||||
get_app_errors = cache.get_app_errors
|
||||
get_models = cache.get_models
|
||||
|
|
Loading…
Reference in New Issue