diff options
| author | Hasan Ramezani <hasan.r67@gmail.com> | 2020-09-29 15:51:42 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-09-30 20:10:38 +0200 |
| commit | 6eb3f53bdd5089e3ab229780fe339fecfc30a7ee (patch) | |
| tree | 3e8eb9ba5b5f25f2dddde27dcfd85c50bf28274f /django | |
| parent | 11c4a4412b74bb1dfe52d706a58f230066821c33 (diff) | |
Fixed #32047 -- Fixed call_command() crash if a constant option from required mutually exclusive group is passed in options.
Diffstat (limited to 'django')
| -rw-r--r-- | django/core/management/__init__.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/django/core/management/__init__.py b/django/core/management/__init__.py index cf6b60c93e..aff9be4e85 100644 --- a/django/core/management/__init__.py +++ b/django/core/management/__init__.py @@ -2,7 +2,9 @@ import functools import os import pkgutil import sys -from argparse import _SubParsersAction +from argparse import ( + _AppendConstAction, _CountAction, _StoreConstAction, _SubParsersAction, +) from collections import defaultdict from difflib import get_close_matches from importlib import import_module @@ -138,7 +140,9 @@ def call_command(command_name, *args, **options): # Any required arguments which are passed in via **options must be passed # to parse_args(). parse_args += [ - '{}={}'.format(min(opt.option_strings), arg_options[opt.dest]) + min(opt.option_strings) + if isinstance(opt, (_AppendConstAction, _CountAction, _StoreConstAction)) + else '{}={}'.format(min(opt.option_strings), arg_options[opt.dest]) for opt in parser_actions if ( opt.dest in options and (opt.required or opt in mutually_exclusive_required_options) |
