summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2015-04-17 23:13:14 -0500
committerMichael Merickel <michael@merickel.org>2015-04-17 23:20:49 -0500
commit37f3ed08e55704012b5c3b7b9e77b684c28d81b2 (patch)
tree82e7d00582f72533488e10b964e18d3b615c0035
parent090a8c273e6cdb3699ddf0f2710dcfa3dac92236 (diff)
downloadpyramid-37f3ed08e55704012b5c3b7b9e77b684c28d81b2.tar.gz
pyramid-37f3ed08e55704012b5c3b7b9e77b684c28d81b2.tar.bz2
pyramid-37f3ed08e55704012b5c3b7b9e77b684c28d81b2.zip
default response_callback and finished_callback to an empty deque instead of None
fixes #1600
-rw-r--r--CHANGES.txt4
-rw-r--r--pyramid/request.py23
-rw-r--r--pyramid/tests/test_request.py4
3 files changed, 16 insertions, 15 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index a9e159275..87e9f1f3a 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -191,6 +191,10 @@ Bug Fixes
- Avoiding timing attacks against CSRF tokens.
See https://github.com/Pylons/pyramid/pull/1574
+- ``request.finished_callbacks`` and ``request.response_callbacks`` now
+ default to an iterable instead of ``None``. It may be checked for a length
+ of 0. This was the behavior in 1.5.
+
Deprecations
------------
diff --git a/pyramid/request.py b/pyramid/request.py
index 13b8cd339..5739e6311 100644
--- a/pyramid/request.py
+++ b/pyramid/request.py
@@ -37,8 +37,14 @@ class TemplateContext(object):
pass
class CallbackMethodsMixin(object):
- response_callbacks = None
- finished_callbacks = None
+ @reify
+ def finished_callbacks(self):
+ return deque()
+
+ @reify
+ def response_callbacks(self):
+ return deque()
+
def add_response_callback(self, callback):
"""
Add a callback to the set of callbacks to be called by the
@@ -76,11 +82,7 @@ class CallbackMethodsMixin(object):
See also :ref:`using_response_callbacks`.
"""
- callbacks = self.response_callbacks
- if callbacks is None:
- callbacks = deque()
- callbacks.append(callback)
- self.response_callbacks = callbacks
+ self.response_callbacks.append(callback)
def _process_response_callbacks(self, response):
callbacks = self.response_callbacks
@@ -135,12 +137,7 @@ class CallbackMethodsMixin(object):
See also :ref:`using_finished_callbacks`.
"""
-
- callbacks = self.finished_callbacks
- if callbacks is None:
- callbacks = deque()
- callbacks.append(callback)
- self.finished_callbacks = callbacks
+ self.finished_callbacks.append(callback)
def _process_finished_callbacks(self):
callbacks = self.finished_callbacks
diff --git a/pyramid/tests/test_request.py b/pyramid/tests/test_request.py
index 2c2298f26..c528b9174 100644
--- a/pyramid/tests/test_request.py
+++ b/pyramid/tests/test_request.py
@@ -120,7 +120,7 @@ class TestRequest(unittest.TestCase):
def test_add_response_callback(self):
inst = self._makeOne()
- self.assertEqual(inst.response_callbacks, None)
+ self.assertEqual(len(inst.response_callbacks), 0)
def callback(request, response):
""" """
inst.add_response_callback(callback)
@@ -171,7 +171,7 @@ class TestRequest(unittest.TestCase):
def test_add_finished_callback(self):
inst = self._makeOne()
- self.assertEqual(inst.finished_callbacks, None)
+ self.assertEqual(len(inst.finished_callbacks), 0)
def callback(request):
""" """
inst.add_finished_callback(callback)