From a098bee1b9fa4df64f3fd72ff5cbae43bf27e539 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Mon, 21 Oct 2013 21:21:49 +0200 Subject: [PATCH] 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. --- django/core/management/__init__.py | 9 +++++++++ tests/admin_scripts/tests.py | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/django/core/management/__init__.py b/django/core/management/__init__.py index 5687cb2bc0..373f9e927e 100644 --- a/django/core/management/__init__.py +++ b/django/core/management/__init__.py @@ -249,6 +249,15 @@ class ManagementUtility(object): usage.append(style.NOTICE("[%s]" % app)) for name in sorted(commands_dict[app]): 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) def fetch_command(self, subcommand): diff --git a/tests/admin_scripts/tests.py b/tests/admin_scripts/tests.py index e5d2acd3a5..7837a60003 100644 --- a/tests/admin_scripts/tests.py +++ b/tests/admin_scripts/tests.py @@ -1055,6 +1055,17 @@ class ManageSettingsWithSettingsErrors(AdminScriptTestCase): self.assertNoOutput(out) 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): def tearDown(self):