diff options
| author | Paweł Marczewski <pwmarcz@gmail.com> | 2016-11-05 12:31:37 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-11-10 07:50:49 -0500 |
| commit | 50f9e736fa701664c5659d0653aff75b7f4489b6 (patch) | |
| tree | d19a19558e570cef0d6f24786214eb421a69f304 | |
| parent | 373c6c409c310cb61e1e9c9aff4adba379ffd0b4 (diff) | |
Fixed #27438 -- Added the diffsettings --default option.
| -rw-r--r-- | django/core/management/commands/diffsettings.py | 12 | ||||
| -rw-r--r-- | docs/ref/django-admin.txt | 9 | ||||
| -rw-r--r-- | docs/releases/1.11.txt | 3 | ||||
| -rw-r--r-- | tests/admin_scripts/tests.py | 14 |
4 files changed, 35 insertions, 3 deletions
diff --git a/django/core/management/commands/diffsettings.py b/django/core/management/commands/diffsettings.py index 7bae48c218..3a5ebcf845 100644 --- a/django/core/management/commands/diffsettings.py +++ b/django/core/management/commands/diffsettings.py @@ -18,16 +18,24 @@ class Command(BaseCommand): '--all', action='store_true', dest='all', default=False, help='Display all settings, regardless of their value. Default values are prefixed by "###".', ) + parser.add_argument( + '--default', dest='default', metavar='MODULE', default=None, + help=( + "The settings module to compare the current settings against. Leave empty to " + "compare against Django's default settings." + ), + ) def handle(self, **options): # Inspired by Postfix's "postconf -n". - from django.conf import settings, global_settings + from django.conf import settings, Settings, global_settings # Because settings are imported lazily, we need to explicitly load them. settings._setup() user_settings = module_to_dict(settings._wrapped) - default_settings = module_to_dict(global_settings) + default = options['default'] + default_settings = module_to_dict(Settings(default) if default else global_settings) output = [] for key in sorted(user_settings): diff --git a/docs/ref/django-admin.txt b/docs/ref/django-admin.txt index 86b5e724fa..c35e728f26 100644 --- a/docs/ref/django-admin.txt +++ b/docs/ref/django-admin.txt @@ -223,7 +223,7 @@ Specifies the database onto which to open a shell. Defaults to ``default``. .. django-admin:: diffsettings Displays differences between the current settings file and Django's default -settings. +settings (or another settings file specified by :option:`--default`). Settings that don't appear in the defaults are followed by ``"###"``. For example, the default settings don't define :setting:`ROOT_URLCONF`, so @@ -235,6 +235,13 @@ example, the default settings don't define :setting:`ROOT_URLCONF`, so Displays all settings, even if they have Django's default value. Such settings are prefixed by ``"###"``. +.. django-admin-option:: --default MODULE + +.. versionadded:: 1.11 + +The settings module to compare the current settings against. Leave empty to +compare against Django's default settings. + ``dumpdata`` ------------ diff --git a/docs/releases/1.11.txt b/docs/releases/1.11.txt index bbe1d63028..a612cb0e12 100644 --- a/docs/releases/1.11.txt +++ b/docs/releases/1.11.txt @@ -281,6 +281,9 @@ Management Commands * The new :option:`loaddata --exclude` option allows excluding models and apps while loading data from fixtures. +* The new :option:`diffsettings --default` option allows specifying a settings + module other than Django's default settings to compare against. + Migrations ~~~~~~~~~~ diff --git a/tests/admin_scripts/tests.py b/tests/admin_scripts/tests.py index 84b44931b3..329263db0a 100644 --- a/tests/admin_scripts/tests.py +++ b/tests/admin_scripts/tests.py @@ -2128,6 +2128,20 @@ class DiffSettings(AdminScriptTestCase): self.assertNoOutput(err) self.assertOutput(out, "### STATIC_URL = None") + def test_custom_default(self): + """ + The --default option specifies an alternate settings module for + comparison. + """ + self.write_settings('settings_default.py', sdict={'FOO': '"foo"', 'BAR': '"bar1"'}) + self.addCleanup(self.remove_settings, 'settings_default.py') + self.write_settings('settings_to_diff.py', sdict={'FOO': '"foo"', 'BAR': '"bar2"'}) + self.addCleanup(self.remove_settings, 'settings_to_diff.py') + out, err = self.run_manage(['diffsettings', '--settings=settings_to_diff', '--default=settings_default']) + self.assertNoOutput(err) + self.assertNotInOutput(out, "FOO") + self.assertOutput(out, "BAR = 'bar2'") + class Dumpdata(AdminScriptTestCase): """Tests for dumpdata management command.""" |
