summaryrefslogtreecommitdiffstats
path: root/webapp/django/core/management/commands/diffsettings.py
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/django/core/management/commands/diffsettings.py')
-rw-r--r--webapp/django/core/management/commands/diffsettings.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/webapp/django/core/management/commands/diffsettings.py b/webapp/django/core/management/commands/diffsettings.py
new file mode 100644
index 0000000000..2459f11700
--- /dev/null
+++ b/webapp/django/core/management/commands/diffsettings.py
@@ -0,0 +1,32 @@
+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)])
+
+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 "###"."""
+
+ requires_model_validation = False
+
+ def handle_noargs(self, **options):
+ # Inspired by Postfix's "postconf -n".
+ from django.conf import settings, global_settings
+
+ # Because settings are imported lazily, we need to explicitly load them.
+ settings._import_settings()
+
+ user_settings = module_to_dict(settings._target)
+ default_settings = module_to_dict(global_settings)
+
+ output = []
+ keys = user_settings.keys()
+ keys.sort()
+ for key in keys:
+ 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]))
+ print '\n'.join(output)