Loading django/apps/base.py +10 −7 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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) django/contrib/comments/__init__.py +1 −1 Original line number Diff line number Diff line Loading @@ -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(): """ Loading django/core/management/commands/migrate.py +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading django/test/simple.py +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading django/utils/module_loading.py +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
django/apps/base.py +10 −7 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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)
django/contrib/comments/__init__.py +1 −1 Original line number Diff line number Diff line Loading @@ -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(): """ Loading
django/core/management/commands/migrate.py +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
django/test/simple.py +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
django/utils/module_loading.py +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading