【发布时间】:2011-12-02 12:10:57
【问题描述】:
在以下情况下我需要一些帮助:我需要实现一个自定义事件/订阅者,以便能够在其版本的开头和结尾获取对象的上下文,因为我需要比较两个上下文中对象的某些字段的状态。
有什么办法吗?是否有可能在所有编辑过程中都有一个实时/执行的处理程序(它的开始和更改的合并)?也许使用线程?
提前感谢您的帮助!
【问题讨论】:
标签: events event-handling plone subscriber
在以下情况下我需要一些帮助:我需要实现一个自定义事件/订阅者,以便能够在其版本的开头和结尾获取对象的上下文,因为我需要比较两个上下文中对象的某些字段的状态。
有什么办法吗?是否有可能在所有编辑过程中都有一个实时/执行的处理程序(它的开始和更改的合并)?也许使用线程?
提前感谢您的帮助!
【问题讨论】:
标签: events event-handling plone subscriber
考虑覆盖您的编辑表单以获得您想要的内容,而不是在这里尝试使用订阅者——这可能如下所示:
from plone.dexterity.browser.edit import DefaultEditForm as BaseForm
class ComparisonEditForm(BaseForm):
def update(self, *args, **kwargs):
existing_value = self.context.mykey
BaseForm.update(self, *args, **kwargs)
updated_value = self.context.mykey
if existing_value != updated_value:
pass # DO SOMETHING HERE
然后在 ZCML 或其他东西中注册一个覆盖。 YMMV,我没有尝试过,但我认为一般的想法应该可行。
【讨论】: