summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2013-10-21 21:21:49 +0200
committerClaude Paroz <claude@2xlibre.net>2013-10-21 21:26:48 +0200
commita098bee1b9fa4df64f3fd72ff5cbae43bf27e539 (patch)
tree9827b4cd49439643287a4ecb365f7a42fe17383d
parent86c248aa646183ef4a1cb407bb3e4cb597272f63 (diff)
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.
-rw-r--r--django/core/management/__init__.py9
-rw-r--r--tests/admin_scripts/tests.py11
2 files changed, 20 insertions, 0 deletions
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):