Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #17037 -- Added a --all option to diffsettings.

  • Loading branch information...
commit 20a91cce04c72bc8c64a1c43b7398edac7b709cc 1 parent 6890569
Aymeric Augustin aaugustin authored
16 django/core/management/commands/diffsettings.py
View
@@ -1,14 +1,22 @@
+from optparse import make_option
+
from django.core.management.base import NoArgsCommand
def module_to_dict(module, omittable=lambda k: k.startswith('_')):
- "Converts a module namespace to a Python dictionary. Used by get_settings_diff."
- return dict([(k, repr(v)) for k, v in module.__dict__.items() if not omittable(k)])
+ """Converts a module namespace to a Python dictionary."""
+ return dict((k, repr(v)) for k, v in module.__dict__.items() if not omittable(k))
class Command(NoArgsCommand):
help = """Displays differences between the current settings.py and Django's
default settings. Settings that don't appear in the defaults are
followed by "###"."""
+ option_list = NoArgsCommand.option_list + (
+ make_option('--all', action='store_true', dest='all', default=False,
+ help='Display all settings, regardless of their value. '
+ 'Default values are prefixed by "###".'),
+ )
+
requires_model_validation = False
def handle_noargs(self, **options):
@@ -22,9 +30,11 @@ def handle_noargs(self, **options):
default_settings = module_to_dict(global_settings)
output = []
- for key in sorted(user_settings.keys()):
+ for key in sorted(user_settings):
if key not in default_settings:
output.append("%s = %s ###" % (key, user_settings[key]))
elif user_settings[key] != default_settings[key]:
output.append("%s = %s" % (key, user_settings[key]))
+ elif options['all']:
+ output.append("### %s = %s" % (key, user_settings[key]))
return '\n'.join(output)
7 docs/ref/django-admin.txt
View
@@ -168,8 +168,11 @@ example, the default settings don't define :setting:`ROOT_URLCONF`, so
:setting:`ROOT_URLCONF` is followed by ``"###"`` in the output of
``diffsettings``.
-Note that Django's default settings live in ``django/conf/global_settings.py``,
-if you're ever curious to see the full list of defaults.
+The :djadminopt:`--all` option may be provided to display all settings, even
+if they have Django's default value. Such settings are prefixed by ``"###"``.
+
+.. versionadded:: 1.6
+ The :djadminopt:`--all` option was added.
dumpdata <appname appname appname.Model ...>
--------------------------------------------
2  docs/releases/1.6.txt
View
@@ -157,6 +157,8 @@ Minor features
* The documentation contains a :doc:`deployment checklist
</howto/deployment/checklist>`.
+* The :djadmin:`diffsettings` comand gained a ``--all`` option.
+
Backwards incompatible changes in 1.6
=====================================
12 tests/admin_scripts/tests.py
View
@@ -1661,11 +1661,21 @@ def test_custom_project_template_with_non_ascii_templates(self):
class DiffSettings(AdminScriptTestCase):
"""Tests for diffsettings management command."""
+
def test_basic(self):
- "Runs without error and emits settings diff."
+ """Runs without error and emits settings diff."""
self.write_settings('settings_to_diff.py', sdict={'FOO': '"bar"'})
self.addCleanup(self.remove_settings, 'settings_to_diff.py')
args = ['diffsettings', '--settings=settings_to_diff']
out, err = self.run_manage(args)
self.assertNoOutput(err)
self.assertOutput(out, "FOO = 'bar' ###")
+
+ def test_all(self):
+ """The all option also shows settings with the default value."""
+ self.write_settings('settings_to_diff.py', sdict={'STATIC_URL': 'None'})
+ self.addCleanup(self.remove_settings, 'settings_to_diff.py')
+ args = ['diffsettings', '--settings=settings_to_diff', '--all']
+ out, err = self.run_manage(args)
+ self.assertNoOutput(err)
+ self.assertOutput(out, "### STATIC_URL = None")
Please sign in to comment.
Something went wrong with that request. Please try again.