mirror of
https://github.com/django/django.git
synced 2025-10-24 14:16:09 +00:00
Fixed #5825 -- Modified the custom command loader to allow for explicit specification of the project name, even if the project directory isn't in the python path. This brings custom command loading into alignment with application loading. Thanks to jdetaeye@frepple.com for the original report, and to abozanich for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8227 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -37,7 +37,21 @@ def find_management_module(app_name):
|
||||
parts = app_name.split('.')
|
||||
parts.append('management')
|
||||
parts.reverse()
|
||||
part = parts.pop()
|
||||
path = None
|
||||
|
||||
# When using manage.py, the project module is added to the path,
|
||||
# loaded, then removed from the path. This means that
|
||||
# testproject.testapp.models can be loaded in future, even if
|
||||
# testproject isn't in the path. When looking for the management
|
||||
# module, we need look for the case where the project name is part
|
||||
# of the app_name but the project directory itself isn't on the path.
|
||||
try:
|
||||
f, path, descr = find_module(part,path)
|
||||
except ImportError,e:
|
||||
if os.path.basename(os.getcwd()) != part:
|
||||
raise e
|
||||
|
||||
while parts:
|
||||
part = parts.pop()
|
||||
f, path, descr = find_module(part, path and [path] or None)
|
||||
|
||||
Reference in New Issue
Block a user