Fixed #29152 -- Allowed passing kwargs to ArgumentParser initialization in management commands.
This commit is contained in:
parent
11bfe3a83d
commit
e95008f241
|
@ -244,7 +244,7 @@ class BaseCommand:
|
||||||
"""
|
"""
|
||||||
return django.get_version()
|
return django.get_version()
|
||||||
|
|
||||||
def create_parser(self, prog_name, subcommand):
|
def create_parser(self, prog_name, subcommand, **kwargs):
|
||||||
"""
|
"""
|
||||||
Create and return the ``ArgumentParser`` which will be used to
|
Create and return the ``ArgumentParser`` which will be used to
|
||||||
parse the arguments to this command.
|
parse the arguments to this command.
|
||||||
|
@ -255,6 +255,7 @@ class BaseCommand:
|
||||||
formatter_class=DjangoHelpFormatter,
|
formatter_class=DjangoHelpFormatter,
|
||||||
missing_args_message=getattr(self, 'missing_args_message', None),
|
missing_args_message=getattr(self, 'missing_args_message', None),
|
||||||
called_from_command_line=getattr(self, '_called_from_command_line', None),
|
called_from_command_line=getattr(self, '_called_from_command_line', None),
|
||||||
|
**kwargs
|
||||||
)
|
)
|
||||||
parser.add_argument('--version', action='version', version=self.get_version())
|
parser.add_argument('--version', action='version', version=self.get_version())
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
|
|
|
@ -255,6 +255,19 @@ the :meth:`~BaseCommand.handle` method must be implemented.
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
# ...
|
# ...
|
||||||
|
|
||||||
|
.. method:: BaseCommand.create_parser(prog_name, subcommand, **kwargs)
|
||||||
|
|
||||||
|
Returns a ``CommandParser`` instance, which is an
|
||||||
|
:class:`~argparse.ArgumentParser` subclass with a few customizations for
|
||||||
|
Django.
|
||||||
|
|
||||||
|
You can customize the instance by overriding this method and calling
|
||||||
|
``super()`` with ``kwargs`` of :class:`~argparse.ArgumentParser` parameters.
|
||||||
|
|
||||||
|
.. versionchanged:: 2.2
|
||||||
|
|
||||||
|
``kwargs`` was added.
|
||||||
|
|
||||||
.. method:: BaseCommand.add_arguments(parser)
|
.. method:: BaseCommand.add_arguments(parser)
|
||||||
|
|
||||||
Entry point to add parser arguments to handle command line arguments passed
|
Entry point to add parser arguments to handle command line arguments passed
|
||||||
|
|
|
@ -220,6 +220,12 @@ class CommandTests(SimpleTestCase):
|
||||||
with self.assertRaisesMessage(CommandError, msg):
|
with self.assertRaisesMessage(CommandError, msg):
|
||||||
management.call_command('subparser', 'test', 12)
|
management.call_command('subparser', 'test', 12)
|
||||||
|
|
||||||
|
def test_create_parser_kwargs(self):
|
||||||
|
"""BaseCommand.create_parser() passes kwargs to CommandParser."""
|
||||||
|
epilog = 'some epilog text'
|
||||||
|
parser = BaseCommand().create_parser('prog_name', 'subcommand', epilog=epilog)
|
||||||
|
self.assertEqual(parser.epilog, epilog)
|
||||||
|
|
||||||
|
|
||||||
class CommandRunTests(AdminScriptTestCase):
|
class CommandRunTests(AdminScriptTestCase):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue