2011-12-02 71 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