Fixed #19724 -- Output note when showing only core management commands
When listing available management commands, only core commands are listed if settings have any error. This commit adds a note in this case so errors are not totally silently skipped. Thanks Peter Davis for the report.
This commit is contained in:
parent
86c248aa64
commit
a098bee1b9
|
@ -249,6 +249,15 @@ class ManagementUtility(object):
|
||||||
usage.append(style.NOTICE("[%s]" % app))
|
usage.append(style.NOTICE("[%s]" % app))
|
||||||
for name in sorted(commands_dict[app]):
|
for name in sorted(commands_dict[app]):
|
||||||
usage.append(" %s" % name)
|
usage.append(" %s" % name)
|
||||||
|
# Output an extra note if settings are not properly configured
|
||||||
|
try:
|
||||||
|
from django.conf import settings
|
||||||
|
settings.INSTALLED_APPS
|
||||||
|
except ImproperlyConfigured as e:
|
||||||
|
usage.append(style.NOTICE(
|
||||||
|
"Note that only Django core commands are listed as settings "
|
||||||
|
"are not properly configured (error: %s)." % e))
|
||||||
|
|
||||||
return '\n'.join(usage)
|
return '\n'.join(usage)
|
||||||
|
|
||||||
def fetch_command(self, subcommand):
|
def fetch_command(self, subcommand):
|
||||||
|
|
|
@ -1055,6 +1055,17 @@ class ManageSettingsWithSettingsErrors(AdminScriptTestCase):
|
||||||
self.assertNoOutput(out)
|
self.assertNoOutput(out)
|
||||||
self.assertOutput(err, "KeyError: 'blah'")
|
self.assertOutput(err, "KeyError: 'blah'")
|
||||||
|
|
||||||
|
def test_help(self):
|
||||||
|
"""
|
||||||
|
Test listing available commands output note when only core commands are
|
||||||
|
available.
|
||||||
|
"""
|
||||||
|
self.write_settings('settings.py', sdict={'MEDIA_URL': '"/no_ending_slash"'})
|
||||||
|
args = ['help']
|
||||||
|
out, err = self.run_manage(args)
|
||||||
|
self.assertOutput(out, 'only Django core commands are listed')
|
||||||
|
self.assertNoOutput(err)
|
||||||
|
|
||||||
|
|
||||||
class ManageValidate(AdminScriptTestCase):
|
class ManageValidate(AdminScriptTestCase):
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
|
|
Loading…
Reference in New Issue