summaryrefslogtreecommitdiff
path: root/repoze
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2010-09-13 04:05:33 +0000
committerChris McDonough <chrism@agendaless.com>2010-09-13 04:05:33 +0000
commitb847e0b4030ab6797ed8d996d133d1d8068aba83 (patch)
tree9443a030d517b062e258c9fa6a2e63fdc2c04403 /repoze
parent81d3b5412b43e4a104d0118ad4147402d787220e (diff)
downloadpyramid-b847e0b4030ab6797ed8d996d133d1d8068aba83.tar.gz
pyramid-b847e0b4030ab6797ed8d996d133d1d8068aba83.tar.bz2
pyramid-b847e0b4030ab6797ed8d996d133d1d8068aba83.zip
allow callbacks to add other callbacks
Diffstat (limited to 'repoze')
-rw-r--r--repoze/bfg/request.py10
-rw-r--r--repoze/bfg/tests/test_request.py4
2 files changed, 8 insertions, 6 deletions
diff --git a/repoze/bfg/request.py b/repoze/bfg/request.py
index 84a5660ef..6a7ce14ac 100644
--- a/repoze/bfg/request.py
+++ b/repoze/bfg/request.py
@@ -88,9 +88,10 @@ class Request(WebobRequest):
self.response_callbacks = callbacks
def _process_response_callbacks(self, response):
- for callback in self.response_callbacks:
+ callbacks = self.response_callbacks
+ while callbacks:
+ callback = callbacks.pop(0)
callback(self, response)
- self.response_callbacks = ()
def add_finished_callback(self, callback):
"""
@@ -148,9 +149,10 @@ class Request(WebobRequest):
self.finished_callbacks = callbacks
def _process_finished_callbacks(self):
- for callback in self.finished_callbacks:
+ callbacks = self.finished_callbacks
+ while callbacks:
+ callback = callbacks.pop(0)
callback(self)
- self.finished_callbacks = ()
# override default WebOb "environ['adhoc_attr']" mutation behavior
__getattr__ = object.__getattribute__
diff --git a/repoze/bfg/tests/test_request.py b/repoze/bfg/tests/test_request.py
index ae52f8420..87585c301 100644
--- a/repoze/bfg/tests/test_request.py
+++ b/repoze/bfg/tests/test_request.py
@@ -186,7 +186,7 @@ class TestRequest(unittest.TestCase):
self.assertEqual(inst.called2, True)
self.assertEqual(response.called1, True)
self.assertEqual(response.called2, True)
- self.assertEqual(inst.response_callbacks, ())
+ self.assertEqual(inst.response_callbacks, [])
def test_add_finished_callback(self):
inst = self._makeOne({})
@@ -208,7 +208,7 @@ class TestRequest(unittest.TestCase):
inst._process_finished_callbacks()
self.assertEqual(inst.called1, True)
self.assertEqual(inst.called2, True)
- self.assertEqual(inst.finished_callbacks, ())
+ self.assertEqual(inst.finished_callbacks, [])
class Test_route_request_iface(unittest.TestCase):
def _callFUT(self, name):