1
我想在plone.app.blob.field.BlobField.index_html上觸發一個事件,以便我可以設置訂閱服務器來偵聽它。用戶沒有問題,但顯然plone.app.blob不是我的代碼,所以通知有點詭計。我有猴子補丁做zope.event.notify(MyEvent(對象)),但這是做到這一點的最佳方式?我預計會有一些grok魔法讓我把一個事件附加到方法上。添加事件通知程序,首選練習
我想在plone.app.blob.field.BlobField.index_html上觸發一個事件,以便我可以設置訂閱服務器來偵聽它。用戶沒有問題,但顯然plone.app.blob不是我的代碼,所以通知有點詭計。我有猴子補丁做zope.event.notify(MyEvent(對象)),但這是做到這一點的最佳方式?我預計會有一些grok魔法讓我把一個事件附加到方法上。添加事件通知程序,首選練習
最好的辦法是在Github上分發項目,並使用Mr.開發人員構建工具維護和部署補丁版本。
稍後,您可以簽署Plone貢獻協議,並將您的補丁放入plone.app.blob的新版本中,因此您不需要再有任何補丁魔法。
你的實際最終目標是什麼?每當下載內容時觸發一個事件聽起來像是一個不尋常的要求。 – 2013-04-30 19:59:48
我建議無論如何,你可能不想寫信給ZODB?如果您不需要訪問對象/ BLOB本身或ZODB,爲什麼不使用ZPublisher中已有的事件/鉤子(例如zope.publisher.interfaces.EndRequestEvent的處理程序)? – sdupton 2013-04-30 20:42:57
最終目標是記錄誰下載了一個文件,以及我打算保存在var/log目錄中的什麼時候。我意識到Z2日誌顯示了這一點,但我認爲這可以讓我更多地控制我想爲這種情況記錄哪些信息,並將它與該日誌中的所有其他信息分開。作爲一個更普遍的問題,我猜想試圖把通知器放在某個地方被人詬病呢? – Esoth 2013-05-01 20:43:39