﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
26597	Optparse for `noinput` and `interactive` can produce unwanted results when passed togeather	Joseph Kahn	nobody	"Because of the way options are parsed on:
https://github.com/django/django/blob/1.8.13/django/core/management/__init__.py#L106-L108

You can end up with the dictionary returning `.item` back in one of two orders when you pass both `interactive` and `noinput`.

I assume this is present on other management commands, but I have not tested them.

The following command:
`arg_options = {opt_mapping.get(key, key): value for key, value in options.items()}`
can be run as:
`{{'noinput': 'interactive'}.get(key, key): value for key, value in [('verbosity', 0), ('fake', True), ('list', True), ('fake_initial', True), ('app_label', 'tests'), ('noinput', True), ('interactive', False)]}`
or 
`{{'noinput': 'interactive'}.get(key, key): value for key, value in [('verbosity', 0), ('fake', True), ('list', True), ('fake_initial', True), ('app_label', 'tests'), ('interactive', False), ('noinput', True)]}`

leading to `interactive` being False or True, respectively.

The weird thing, is that `noinput` and `interactive` are opposite commands and yet this code uses it for the same value. Makes my scripts sometimes fail."	Bug	new	Migrations	1.8	Normal		migrate argparse command		Unreviewed	0	0	0	0	0	0
