summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/core/management/base.py7
-rw-r--r--docs/releases/1.8.3.txt4
-rw-r--r--tests/user_commands/management/commands/optparse_cmd.py1
3 files changed, 10 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=(
diff --git a/docs/releases/1.8.3.txt b/docs/releases/1.8.3.txt
index 653df608cc..d7e063b397 100644
--- a/docs/releases/1.8.3.txt
+++ b/docs/releases/1.8.3.txt
@@ -62,3 +62,7 @@ Bugfixes
* Fixed ``SimpleTestCase.assertRaisesMessage()`` on Python 2.7.10
(:ticket:`24903`).
+
+* Provided better backwards compatibility for the ``verbosity`` argument in
+ ``optparse`` management commands by casting it to an integer
+ (:ticket:`24769`).
diff --git a/tests/user_commands/management/commands/optparse_cmd.py b/tests/user_commands/management/commands/optparse_cmd.py
index b92e90ee31..0ab74837d8 100644
--- a/tests/user_commands/management/commands/optparse_cmd.py
+++ b/tests/user_commands/management/commands/optparse_cmd.py
@@ -16,4 +16,5 @@ class Command(BaseCommand):
options["example"]
# BaseCommand default option is available
options['verbosity']
+ assert isinstance(options['verbosity'], int), "verbosity option is not int, but %s" % type(options['verbosity'])
self.stdout.write("All right, let's dance %s." % options["style"])