diff options
| author | Michael Merickel <michael@merickel.org> | 2015-04-17 23:13:14 -0500 |
|---|---|---|
| committer | Michael Merickel <michael@merickel.org> | 2015-04-17 23:20:49 -0500 |
| commit | 37f3ed08e55704012b5c3b7b9e77b684c28d81b2 (patch) | |
| tree | 82e7d00582f72533488e10b964e18d3b615c0035 | |
| parent | 090a8c273e6cdb3699ddf0f2710dcfa3dac92236 (diff) | |
| download | pyramid-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.txt | 4 | ||||
| -rw-r--r-- | pyramid/request.py | 23 | ||||
| -rw-r--r-- | pyramid/tests/test_request.py | 4 |
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) |
