放大镜

plone.postpublicationhook的Python项目详细描述


注意

提供此包是为了向后兼容新代码应该使用 Zope2.12中直接引入的发布事件。

对于Zope2.10,发布事件的后台端口在 ZPublisherEventsBackport。这是此包所必需的,可以添加 直接生成,或通过指定“Zope2.10”附加值:

eggs =
    Plone
    plone.postpublicationhook [Zope2.10]

导言

这个包提供了一个到zope的zpublisher的钩子,它在 publisher已完成发布,但在提交事务之前 并将响应返回到请求的浏览器这对 缓存目的:它是确定和插入缓存头的理想位置 在回应中

钩子使用zope.event的事件机制,使用 plone.validatehook.interfaces.ipostValidationEvent。这是基于 来自zope.component的标准对象事件。

示例

作为一个例子,我们将编写一些代码来记录每个发布的 反对。这是事件处理程序的代码:

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

  • 常规和元数据清理。 [汉诺什]
  • 重构以使用ZPublisher发布事件(在Zope 2.10中提供 ZpublisherEventsBackport.) [欠]

1.0rc1-2008年10月15日

  • 初次发行 [威瑟特]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用“Google Play Api Client Library for Java”时,Google Play Api默认为“仅限我”   Java REST web服务如何使用复杂的XML   java提供了这个供应链问题的递归解决方案   java找不到适合jdbc的驱动程序?   java IntelliJ Git集成插件>“新分支”将大写字母F放在“功能/abc”中   多线程Java线程间共享变量   HibernateJava。util。自定义包装枚举类型不支持TreeSet集合类型   JAVAsocket调用次数过多   java有没有办法在没有附加库的情况下启动代理?   javaudp优化   java动态检索rj的路径。jar(OS X中的classes.jar)   在Java中解析DTD   playframework 2.1.4java如何使用@options helper,并将Map<String,String>作为参数   java rest web服务中的web服务异步任务   java使用数组创建密码和用户名   java获取OnCheckedChangedListener中的视图位置   java如果我搞砸了登录,它将直接进入else条件,如果我正确登录,它将进入这两个条件   Java正则表达式跳过匹配项   oracle如何使用jdbc将变量从plsql发送到java?