Loading django/apps/base.py +42 −31 Original line number Diff line number Diff line Loading @@ -61,13 +61,12 @@ class AppConfig(object): Factory that creates an app config from an entry in INSTALLED_APPS. """ try: # If import_module succeeds, entry is a path to an app module. # If import_module succeeds, entry is a path to an app module, # which may specify an app config class with default_app_config. # Otherwise, entry is a path to an app config class or an error. module = import_module(entry) except ImportError: # Avoid django.utils.module_loading.import_by_path because it # masks errors -- it reraises ImportError as ImproperlyConfigured. mod_path, _, cls_name = entry.rpartition('.') # Raise the original exception when entry cannot be a path to an Loading @@ -75,6 +74,21 @@ class AppConfig(object): if not mod_path: raise else: try: # If this works, the app module specifies an app config class. entry = module.default_app_config except AttributeError: # Otherwise, it simply uses the default app config class. return cls(entry, module) else: mod_path, _, cls_name = entry.rpartition('.') # If we're reaching this point, we must load the app config class # located at <mod_path>.<cls_name>. # Avoid django.utils.module_loading.import_by_path because it # masks errors -- it reraises ImportError as ImproperlyConfigured. mod = import_module(mod_path) try: cls = getattr(mod, cls_name) Loading Loading @@ -105,9 +119,6 @@ class AppConfig(object): # Entry is a path to an app config class. return cls(app_name, app_module) else: # Entry is a path to an app module. return cls(entry, module) def get_model(self, model_name): """ Loading django/conf/project_template/project_name/settings.py +1 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = ( 'django.contrib.admin.apps.AdminConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', Loading django/contrib/admin/__init__.py +2 −3 Original line number Diff line number Diff line # ACTION_CHECKBOX_NAME is unused, but should stay since its import from here # has been referenced in documentation. from django.contrib.admin.checks import check_admin_app from django.contrib.admin.decorators import register from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME from django.contrib.admin.options import ModelAdmin, HORIZONTAL, VERTICAL Loading @@ -9,7 +8,6 @@ from django.contrib.admin.filters import (ListFilter, SimpleListFilter, FieldListFilter, BooleanFieldListFilter, RelatedFieldListFilter, ChoicesFieldListFilter, DateFieldListFilter, AllValuesFieldListFilter) from django.contrib.admin.sites import AdminSite, site from django.core import checks from django.utils.module_loading import autodiscover_modules __all__ = [ Loading @@ -24,4 +22,5 @@ __all__ = [ def autodiscover(): autodiscover_modules('admin', register_to=site) checks.register('admin')(check_admin_app) default_app_config = 'django.contrib.admin.apps.AdminConfig' django/contrib/admin/apps.py +13 −2 Original line number Diff line number Diff line from django.apps import AppConfig from django.core import checks from django.contrib.admin.checks import check_admin_app from django.utils.translation import ugettext_lazy as _ class AdminConfig(AppConfig): class SimpleAdminConfig(AppConfig): """Simple AppConfig which does not do automatic discovery.""" name = 'django.contrib.admin' verbose_name = _("administration") def ready(self): checks.register('admin')(check_admin_app) class AdminConfig(SimpleAdminConfig): """The default AppConfig for admin which does autodiscovery.""" def ready(self): super(AdminConfig, self).ready() self.module.autodiscover() django/contrib/admin/sites.py +1 −1 Original line number Diff line number Diff line Loading @@ -161,7 +161,7 @@ class AdminSite(object): installed, as well as the auth context processor. """ if not apps.is_installed('django.contrib.admin'): raise ImproperlyConfigured("Put 'django.contrib.admin.apps.AdminConfig' in " raise ImproperlyConfigured("Put 'django.contrib.admin' in " "your INSTALLED_APPS setting in order to use the admin application.") if not apps.is_installed('django.contrib.contenttypes'): raise ImproperlyConfigured("Put 'django.contrib.contenttypes' in " Loading Loading
django/apps/base.py +42 −31 Original line number Diff line number Diff line Loading @@ -61,13 +61,12 @@ class AppConfig(object): Factory that creates an app config from an entry in INSTALLED_APPS. """ try: # If import_module succeeds, entry is a path to an app module. # If import_module succeeds, entry is a path to an app module, # which may specify an app config class with default_app_config. # Otherwise, entry is a path to an app config class or an error. module = import_module(entry) except ImportError: # Avoid django.utils.module_loading.import_by_path because it # masks errors -- it reraises ImportError as ImproperlyConfigured. mod_path, _, cls_name = entry.rpartition('.') # Raise the original exception when entry cannot be a path to an Loading @@ -75,6 +74,21 @@ class AppConfig(object): if not mod_path: raise else: try: # If this works, the app module specifies an app config class. entry = module.default_app_config except AttributeError: # Otherwise, it simply uses the default app config class. return cls(entry, module) else: mod_path, _, cls_name = entry.rpartition('.') # If we're reaching this point, we must load the app config class # located at <mod_path>.<cls_name>. # Avoid django.utils.module_loading.import_by_path because it # masks errors -- it reraises ImportError as ImproperlyConfigured. mod = import_module(mod_path) try: cls = getattr(mod, cls_name) Loading Loading @@ -105,9 +119,6 @@ class AppConfig(object): # Entry is a path to an app config class. return cls(app_name, app_module) else: # Entry is a path to an app module. return cls(entry, module) def get_model(self, model_name): """ Loading
django/conf/project_template/project_name/settings.py +1 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = ( 'django.contrib.admin.apps.AdminConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', Loading
django/contrib/admin/__init__.py +2 −3 Original line number Diff line number Diff line # ACTION_CHECKBOX_NAME is unused, but should stay since its import from here # has been referenced in documentation. from django.contrib.admin.checks import check_admin_app from django.contrib.admin.decorators import register from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME from django.contrib.admin.options import ModelAdmin, HORIZONTAL, VERTICAL Loading @@ -9,7 +8,6 @@ from django.contrib.admin.filters import (ListFilter, SimpleListFilter, FieldListFilter, BooleanFieldListFilter, RelatedFieldListFilter, ChoicesFieldListFilter, DateFieldListFilter, AllValuesFieldListFilter) from django.contrib.admin.sites import AdminSite, site from django.core import checks from django.utils.module_loading import autodiscover_modules __all__ = [ Loading @@ -24,4 +22,5 @@ __all__ = [ def autodiscover(): autodiscover_modules('admin', register_to=site) checks.register('admin')(check_admin_app) default_app_config = 'django.contrib.admin.apps.AdminConfig'
django/contrib/admin/apps.py +13 −2 Original line number Diff line number Diff line from django.apps import AppConfig from django.core import checks from django.contrib.admin.checks import check_admin_app from django.utils.translation import ugettext_lazy as _ class AdminConfig(AppConfig): class SimpleAdminConfig(AppConfig): """Simple AppConfig which does not do automatic discovery.""" name = 'django.contrib.admin' verbose_name = _("administration") def ready(self): checks.register('admin')(check_admin_app) class AdminConfig(SimpleAdminConfig): """The default AppConfig for admin which does autodiscovery.""" def ready(self): super(AdminConfig, self).ready() self.module.autodiscover()
django/contrib/admin/sites.py +1 −1 Original line number Diff line number Diff line Loading @@ -161,7 +161,7 @@ class AdminSite(object): installed, as well as the auth context processor. """ if not apps.is_installed('django.contrib.admin'): raise ImproperlyConfigured("Put 'django.contrib.admin.apps.AdminConfig' in " raise ImproperlyConfigured("Put 'django.contrib.admin' in " "your INSTALLED_APPS setting in order to use the admin application.") if not apps.is_installed('django.contrib.contenttypes'): raise ImproperlyConfigured("Put 'django.contrib.contenttypes' in " Loading