Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Zope 2 publisher validation hook

Project Description


This package provides a hook into Zope’s ZPublisher that is run after the publisher has completed traversal and authentication, but before it tries to publish an object. This is practical for tasks such as tracking user activity.

Hooks use zope.event’s event mechanism using the plone.validatehook.interfaces.IPostValidationEvent. This is based on the standard ObjectEvent form zope.component.

The IPostValidationEvent event has two attributes: user which is the currently authenticated user object and request, which is the current request object.

Keep in mind that even unauthenticated requests have a user object. If you only want to deal with ‘normal’ users make sure you ignore any instances of AccessControl.User.SpecialUser.


As an example we will write a bit of code which logs the id of the current user and the path to the current code. This is the code for the event handler:

from zope.interface import Interface
from zope.component import adapter
from plone.validatehook.interfaces import IPostValidationEvent
import logging

logger = logging.getLogger("LogRequest")

@adapter(Interface, IPostValidationEvent)
def LogRequest(object, event):
    if getattr(object, "getPhysicalPath", None) is None:
        path="Unknown path"
        path="/".join(object.getPhysicalPath()"Request from user '%s' for object %s" %
            event.user.getId(), path)

To use this code you need to register it in zcml:

<subscriber handler=".events.LogRequest" />


1.0 - October 15, 2008

  • Move to and relicense under ZPL. [wichert]

1.0rc1 - July 15, 2008

  • Initial release [wichert]
Release History

Release History

This version
History Node


History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date (10.2 kB) Copy SHA256 Checksum SHA256 Source Oct 15, 2008

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting