Zope 2发布后钩子
项目描述
注意
此软件包提供向后兼容性。新代码应直接使用Zope 2.12中引入的发布事件。
对于Zope 2.10,发布事件的回滚版本可在ZPublisherEventsBackport中找到。此软件包需要此版本,并且可以直接添加到您的buildout中,或通过指定“Zope2.10”额外选项。
eggs = Plone plone.postpublicationhook [Zope2.10]
简介
此软件包提供对Zope的ZPublisher的钩子,在发布者完成发布后但事务提交和响应返回给请求的浏览器之前运行。这对于缓存目的很有用:这是确定和插入缓存头到响应的理想位置。
钩子使用zope.event的事件机制,通过plone.validatehook.interfaces.IPostValidationEvent。这基于来自zope.component的标准ObjectEvent。
示例
例如,我们将编写一小段代码来记录每个已发布对象的路径。这是事件处理器的代码
from zope.interface import Interface from zope.component import adapter from plone.postpublicationhook.interfaces import IAfterPublicationEvent import logging logger = logging.getLogger("LogRequest") @adapter(Interface, IAfterPublicationEvent) def LogRequest(object, event): if getattr(object, "getPhysicalPath", None) is None: path="Unknown path" else: path="/".join(object.getPhysicalPath() logger.info("Request for object %s" % path)
要使用此代码,您需要将其注册在zcml中
<subscriber handler=".events.LogRequest" />
直接使用ZPublisher事件
IPubBeforeCommit事件等同于IAfterPublicationEvent,但它不是一个ObjectEvent,因此有一些变化
from zope.component import adapter from ZPublisher.interfaces import IPubBeforeCommit import logging logger = logging.getLogger("LogRequest") @adapter(IPubBeforeCommit) def LogRequest(event): request = event.request object = request['PUBLISHED'] if getattr(object, "getPhysicalPath", None) is None: path="Unknown path" else: path="/".join(object.getPhysicalPath() logger.info("Request for object %s" % path)
以相同的方式在zcml中注册它
<subscriber handler=".events.LogRequest" />
变更日志
1.1 - 2010-06-08
一般和元数据清理。[hannosch]
重构以使用ZPublisher发布事件(在Zope 2.10及ZPublisherEventsBackport中可用)。[lrowe]
1.0rc1 - 2008-10-15
首次发布 [wichert]
项目详情
关闭
plone.postpublicationhook-1.1.zip的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6a8b7f217cfdcbe181efe14be08579587bf7be8b81ed90295f067a4689b6fb09 |
|
MD5 | a6dc8132da3153a2d439abb972db3c9e |
|
BLAKE2b-256 | 901657a5a38e1c89058abcef0b4c8a0cff8c9a09ebd7f356fe3ea1c5b9c8fc06 |