Commit a098bee1 authored by Claude Paroz's avatar Claude Paroz
Browse files

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.
parent 86c248aa
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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):
+11 −0
Original line number Diff line number Diff line
@@ -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):