Reverse order of execution of post-request handlers. This fixes #82

This commit is contained in:
Armin Ronacher 2010-07-12 18:04:10 +02:00
parent f1a6fbe250
commit d12d73263f
4 changed files with 44 additions and 2 deletions

View file

@ -707,6 +707,10 @@ class Flask(_PackageBoundObject):
before it's sent to the WSGI server. By default this will
call all the :meth:`after_request` decorated functions.
.. versionchanged:: 0.5
As of Flask 0.5 the functions registered for after request
execution are called in reverse order of registration.
:param response: a :attr:`response_class` object.
:return: a new response object or the same, has to be an
instance of :attr:`response_class`.
@ -717,9 +721,9 @@ class Flask(_PackageBoundObject):
self.save_session(ctx.session, response)
funcs = ()
if mod and mod in self.after_request_funcs:
funcs = chain(funcs, self.after_request_funcs[mod])
funcs = reversed(self.after_request_funcs[mod])
if None in self.after_request_funcs:
funcs = chain(funcs, self.after_request_funcs[None])
funcs = chain(funcs, reversed(self.after_request_funcs[None]))
for handler in funcs:
response = handler(response)
return response