summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorJames Bennett <james@b-list.org>2014-07-26 14:39:14 +0200
committerJames Bennett <james@b-list.org>2014-07-26 14:39:14 +0200
commit63058786882f6a32649a0fdafae9cb425c95cd4e (patch)
treebc88f57d67aa0614171a478b5e13b1549c95187e /django
parent6eed751162f10a3e93f4fa7c1eed2c43b70bb0ca (diff)
parentd0889863de50d65659f56f0b9ea0672a8b6482a1 (diff)
Merge pull request #2967 from hirokiky/fix23070
Fixed #23070 -- not to break the debug page by callable setting with __slots__
Diffstat (limited to 'django')
-rw-r--r--django/views/debug.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/django/views/debug.py b/django/views/debug.py
index ac81ecaf9e..23bf16604d 100644
--- a/django/views/debug.py
+++ b/django/views/debug.py
@@ -33,6 +33,19 @@ def linebreak_iter(template_source):
yield len(template_source) + 1
+class CallableSettingWrapper(object):
+ """ Object to wrap callable appearing in settings
+
+ * Not to call in the debug page (#21345).
+ * Not to break the debug page if the callable forbidding to set attributes (#23070).
+ """
+ def __init__(self, callable_setting):
+ self._wrapped = callable_setting
+
+ def __repr__(self):
+ return repr(self._wrapped)
+
+
def cleanse_setting(key, value):
"""Cleanse an individual setting key/value of sensitive content.
@@ -52,7 +65,8 @@ def cleanse_setting(key, value):
cleansed = value
if callable(cleansed):
- cleansed.do_not_call_in_templates = True
+ # For fixing #21345 and #23070
+ cleansed = CallableSettingWrapper(cleansed)
return cleansed