diff options
| author | Rivo Laks <rivolaks@gmail.com> | 2015-06-04 18:03:28 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-06-09 19:05:16 -0400 |
| commit | 76c526f80e43b0bf5199dfe33b1ce31e813fa2fb (patch) | |
| tree | d1fa094a5670e658b3fa70f3ee90ff86b3203bde /django | |
| parent | 8bc18ebf0fc7d82dda266812a1920d179c54223c (diff) | |
[1.8.x] Fixed #24769 -- Cast optparse verbosity argument to an integer for better backwards compatibility.
Using `BaseCommand.options_list` makes Django use the legacy optparse
parser, which does not set the verbosity attribute correctly. Now the
verbosity argument is always cast to int. Regression in 8568638 (#19973).
Initial report and patch from blueyed.
Backport of a0047c6242fd48068eb444e0a58f7a5d2bc1bcd3 from master
Diffstat (limited to 'django')
| -rw-r--r-- | django/core/management/base.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/django/core/management/base.py b/django/core/management/base.py index 0a4a1ee2f3..3c3e5948aa 100644 --- a/django/core/management/base.py +++ b/django/core/management/base.py @@ -300,6 +300,9 @@ class BaseCommand(object): """ if not self.use_argparse: + def store_as_int(option, opt_str, value, parser): + setattr(parser.values, option.dest, int(value)) + # Backwards compatibility: use deprecated optparse module warnings.warn("OptionParser usage for Django management commands " "is deprecated, use ArgumentParser instead", @@ -307,8 +310,8 @@ class BaseCommand(object): parser = OptionParser(prog=prog_name, usage=self.usage(subcommand), version=self.get_version()) - parser.add_option('-v', '--verbosity', action='store', dest='verbosity', default='1', - type='choice', choices=['0', '1', '2', '3'], + parser.add_option('-v', '--verbosity', action='callback', dest='verbosity', default=1, + type='choice', choices=['0', '1', '2', '3'], callback=store_as_int, help='Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output') parser.add_option('--settings', help=( |
