mirror of https://github.com/django/django.git
Made the AppConfig API marginally more consistent.
Eliminated the app_ prefix that was more confusing than useful.
This commit is contained in:
parent
fec5330c79
commit
ce1bc2c94b
|
@ -13,13 +13,13 @@ class AppConfig(object):
|
|||
Class representing a Django application and its configuration.
|
||||
"""
|
||||
|
||||
def __init__(self, app_name):
|
||||
def __init__(self, app_name, app_module):
|
||||
# Full Python path to the application eg. 'django.contrib.admin'.
|
||||
self.name = app_name
|
||||
|
||||
# Root module for the application eg. <module 'django.contrib.admin'
|
||||
# from 'django/contrib/admin/__init__.pyc'>.
|
||||
self.app_module = import_module(app_name)
|
||||
self.module = app_module
|
||||
|
||||
# The following attributes could be defined at the class level in a
|
||||
# subclass, hence the test-and-set pattern.
|
||||
|
@ -39,7 +39,7 @@ class AppConfig(object):
|
|||
# egg. Otherwise it's a unicode on Python 2 and a str on Python 3.
|
||||
if not hasattr(self, 'path'):
|
||||
try:
|
||||
self.path = upath(self.app_module.__path__[0])
|
||||
self.path = upath(app_module.__path__[0])
|
||||
except AttributeError:
|
||||
self.path = None
|
||||
|
||||
|
@ -63,7 +63,7 @@ class AppConfig(object):
|
|||
try:
|
||||
# If import_module succeeds, entry is a path to an app module.
|
||||
# Otherwise, entry is a path to an app config class or an error.
|
||||
import_module(entry)
|
||||
module = import_module(entry)
|
||||
|
||||
except ImportError:
|
||||
# Raise the original exception when entry cannot be a path to an
|
||||
|
@ -88,12 +88,15 @@ class AppConfig(object):
|
|||
raise ImproperlyConfigured(
|
||||
"%r must supply a name attribute." % entry)
|
||||
|
||||
# Ensure app_names points to a valid module.
|
||||
app_module = import_module(app_name)
|
||||
|
||||
# Entry is a path to an app config class.
|
||||
return cls(app_name)
|
||||
return cls(app_name, app_module)
|
||||
|
||||
else:
|
||||
# Entry is a path to an app module.
|
||||
return cls(entry)
|
||||
return cls(entry, module)
|
||||
|
||||
def import_models(self, all_models):
|
||||
# Dictionary of models for this app, primarily maintained in the
|
||||
|
@ -102,6 +105,6 @@ class AppConfig(object):
|
|||
# imported, which may happen before populate_models() runs.
|
||||
self.models = all_models
|
||||
|
||||
if module_has_submodule(self.app_module, MODELS_MODULE_NAME):
|
||||
if module_has_submodule(self.module, MODELS_MODULE_NAME):
|
||||
models_module_name = '%s.%s' % (self.name, MODELS_MODULE_NAME)
|
||||
self.models_module = import_module(models_module_name)
|
||||
|
|
|
@ -20,7 +20,7 @@ def get_comment_app():
|
|||
except LookupError:
|
||||
raise ImproperlyConfigured("The COMMENTS_APP (%r) "
|
||||
"must be in INSTALLED_APPS" % settings.COMMENTS_APP)
|
||||
return app_config.app_module
|
||||
return app_config.module
|
||||
|
||||
def get_comment_app_name():
|
||||
"""
|
||||
|
|
|
@ -47,7 +47,7 @@ class Command(BaseCommand):
|
|||
# Import the 'management' module within each installed app, to register
|
||||
# dispatcher events.
|
||||
for app_config in apps.get_app_configs():
|
||||
if module_has_submodule(app_config.app_module, "management"):
|
||||
if module_has_submodule(app_config.module, "management"):
|
||||
import_module('.management', app_config.name)
|
||||
|
||||
# Get the database we're operating from
|
||||
|
|
|
@ -102,7 +102,7 @@ def get_tests(app_config):
|
|||
except ImportError:
|
||||
# Couldn't import tests.py. Was it due to a missing file, or
|
||||
# due to an import error in a tests.py that actually exists?
|
||||
if not module_has_submodule(app_config.app_module, TEST_MODULE):
|
||||
if not module_has_submodule(app_config.module, TEST_MODULE):
|
||||
test_module = None
|
||||
else:
|
||||
# The module exists, so there must be an import error in the test
|
||||
|
|
|
@ -80,7 +80,7 @@ def autodiscover_modules(*args, **kwargs):
|
|||
# Decide whether to bubble up this error. If the app just
|
||||
# doesn't have an admin module, we can ignore the error
|
||||
# attempting to import it, otherwise we want it to bubble up.
|
||||
if module_has_submodule(app_config.app_module, module_to_search):
|
||||
if module_has_submodule(app_config.module, module_to_search):
|
||||
raise
|
||||
|
||||
|
||||
|
|
|
@ -141,7 +141,7 @@ Read-only attributes
|
|||
It may be ``None`` if the application isn't stored in a directory, for
|
||||
instance if it's loaded from an egg.
|
||||
|
||||
.. attribute:: AppConfig.app_module
|
||||
.. attribute:: AppConfig.module
|
||||
|
||||
Root module for the application, e.g. ``<module 'django.contrib.admin' from
|
||||
'django/contrib/admin/__init__.pyc'>``.
|
||||
|
|
Loading…
Reference in New Issue