2011-12-02 69 views
1


Plone的4事件和订阅

我需要在以下情况下一些帮助:我需要为了实现自定义事件/订户能够得到一个对象的上下文中开始和它的版本结束了,因为我需要在两个上下文中比较对象的某些字段的状态。

有没有办法做到这一点?是否有可能在所有编辑过程中都处于活动/执行状态的处理程序(它正在开始并整合更改)?也许使用线程?

在此先感谢您的帮助!

回答

2

考虑重写你的编辑形式,以得到你想要的,而不是试图在这里使用的用户是什么 - 这可能看起来像:

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,我没有尝试过,但我认为总体思路应该起作用。

+0

感谢您的快速回答,我会尝试并在此发布反馈,以便可能帮助其他人。 – maccinza