Metadata-Version: 1.0
Name: plone.validatehook
Version: 1.0
Summary: Zope 2 publisher validation hook
Home-page: UNKNOWN
Author: Wichert Akkerman
Author-email: wichert@wiggy.net
License: ZPL
Description: Introduction
        ============
        
        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.*
        
        
        Example
        =======
        
        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"
        else:
        path="/".join(object.getPhysicalPath()
        
        logger.info("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" />
        
        
        .. _zope.component: http://pypi.python.org/pypi/zope.component
        .. _zope.event: http://pypi.python.org/pypi/zope.event
        
        
        Changelog
        =========
        
        1.0 - October 15, 2008
        ----------------------
        
        * Move to svn.zope.org and relicense under ZPL.
        [wichert]
        
        
        1.0rc1 - July 15, 2008
        ----------------------
        
        * Initial release
        [wichert]
        
        
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Framework :: Zope2
Classifier: License :: OSI Approved :: Zope Public License
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Python Modules
