Skip to content

Commit

Permalink
Added PubStart, PubBeforeCommit and PubAfterTraversal events to the W…
Browse files Browse the repository at this point in the history
…SGI publisher.
  • Loading branch information
hannosch committed May 24, 2012
1 parent 088ad44 commit 0871742
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
3 changes: 3 additions & 0 deletions doc/CHANGES.rst
Expand Up @@ -8,6 +8,9 @@ http://docs.zope.org/zope2/releases/.
2.13.14 (unreleased)
--------------------

- Added PubStart, PubBeforeCommit and PubAfterTraversal events to the
WSGI publisher.

- ZPublisher: Fixed a traversal regression introduced in 2.13.12.

- Updated distributions:
Expand Down
10 changes: 8 additions & 2 deletions src/ZPublisher/WSGIPublisher.py
Expand Up @@ -30,6 +30,7 @@
from ZPublisher.Publish import dont_publish_class
from ZPublisher.Publish import get_module_info
from ZPublisher.Publish import missing_name
from ZPublisher.pubevents import PubStart, PubBeforeCommit, PubAfterTraversal
from ZPublisher.Iterators import IStreamIterator

_NOW = None # overwrite for testing
Expand Down Expand Up @@ -149,6 +150,7 @@ def __str__(self):
# return ''
raise NotImplementedError


def publish(request, module_name,
_get_module_info=get_module_info, # only for testing
):
Expand All @@ -160,8 +162,9 @@ def publish(request, module_name,
err_hook,
validated_hook,
transactions_manager,
)= _get_module_info(module_name)
) = _get_module_info(module_name)

notify(PubStart(request))
request.processInputs()
response = request.response

Expand All @@ -181,8 +184,9 @@ def publish(request, module_name,
# According to RFC1738 a trailing space in the path is valid.
path = request.get('PATH_INFO')

request['PARENTS'] = parents = [object]
request['PARENTS'] = [object]
object = request.traverse(path, validated_hook=validated_hook)
notify(PubAfterTraversal(request))

if transactions_manager:
transactions_manager.recordMetaData(object, request)
Expand All @@ -201,8 +205,10 @@ def publish(request, module_name,
if result is not response:
response.setBody(result)

notify(PubBeforeCommit(request))
return response


class _RequestCloserForTransaction(object):
"""Unconditionally close the request at the end of a transaction.
Expand Down

0 comments on commit 0871742

Please sign in to comment.