Zope3 ノード操作イベント
Zope3 にはコンテンツの追加や移動などノード操作に関する特殊なイベントを通知する機能があります。
from zope.app.container.interfaces import IObjectAddedEvent, IObjectMovedEvent, IObjectRemovedEvent, IContainerModifiedEvent from zope.app.event.interfaces import IObjectCreatedEvent, IObjectCopiedEvent, IObjectModifiedEvent, IObjectContentModifiedEvent, IObjectAnnotationsModifiedEvent
名前を見れば大体どんな感じか分かります。
注意点としては、INTERFACE.providedBy() でイベントオブジェクトを調べると継承元のインターフェースも真になる点です。IObjectAddedEvent と IObjectRemovedEvent は IObjectMovedEvent から継承しているので、IObjectMovedEvent.providedBy() ではイベントオブジェクトが IObjectAddedEvent と IObjectRemovedEvent の場合も真になります。
また、configure.zcml でイベント種別を interface で指定しますが、ここでも IObjectMovedEvent を指定すると IObjectAddedEvent と IObjectRemovedEvent が送られてくるようです。