diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2007-09-21 17:52:36 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2007-09-21 17:52:36 +0000 |
| commit | 901c3708fb8a2e51bddd37358f8e536282a8c266 (patch) | |
| tree | 7914e67bccbeadc8e9efcff668160e372e1096f1 | |
| parent | 626a3415870a5606ac7c4989c1661a8e46ddb852 (diff) | |
Fixed #5564 -- Fixed handling of the ProjectCommand used by startapp.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@6402 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/core/management/__init__.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/django/core/management/__init__.py b/django/core/management/__init__.py index 0b1cb490fa..b968247647 100644 --- a/django/core/management/__init__.py +++ b/django/core/management/__init__.py @@ -65,6 +65,10 @@ def get_commands(load_user_commands=True, project_directory=None): pairs from this dictionary can then be used in calls to load_command_class(app_name, command_name) + If a specific version of a command must be loaded (e.g., with the + startapp command), the instantiated module can be placed in the + dictionary in place of the application name. + The dictionary is cached on the first call, and reused on subsequent calls. """ @@ -109,7 +113,11 @@ def call_command(name, *args, **options): """ try: app_name = get_commands()[name] - klass = load_command_class(app_name, name) + if isinstance(app_name, BaseCommand): + # If the command is already loaded, use it directly. + klass = app_name + else: + klass = load_command_class(app_name, subcommand) except KeyError: raise CommandError, "Unknown command: %r" % name return klass.execute(*args, **options) @@ -159,7 +167,11 @@ class ManagementUtility(object): """ try: app_name = get_commands(self.user_commands, self.project_directory)[subcommand] - klass = load_command_class(app_name, subcommand) + if isinstance(app_name, BaseCommand): + # If the app_name is already loaded, use it directly. + klass = app_name + else: + klass = load_command_class(app_name, subcommand) except KeyError: sys.stderr.write("Unknown command: %r\nType '%s help' for usage.\n" % (subcommand, self.prog_name)) sys.exit(1) |
