1


在以下情况下我需要一些帮助:我需要实现一个自定义事件/订阅者,以便能够在其版本的开头和结尾获取对象的上下文,因为我需要比较状态在这两种情况下对象的某些字段。

有什么办法吗?是否有可能在所有编辑过程中都有一个实时/执行的处理程序(它的开始和更改的合并)?也许使用线程?

提前感谢您的帮助!

4

1 回答 1

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,我没有尝试过,但我认为一般的想法应该可行。

于 2011-12-02T16:50:34.023 回答