除了删除父文件夹之外,我想防止在Plone中删除文件夹类型的实例。我有一个预感,事件处理程序可以阻止删除(在绑定到标记接口的IObjectRemovedEvent
处理程序中引发异常),但实现此规则的异常似乎更难确定:我想允许删除正在删除其父文件夹时的项目。
我最初的预感是我可以遍历__parent__
指针并检查是否在父项(或某个远程间接容器)上设置了一个属性,但是我不知道如何设置它在尝试删除包含的子项之前删除父项的属性(否则不允许删除)。那么现在,我正在质疑我是否正确地接近这个方向?我是否误解了在Plone中删除对象的问题限制?我应该看看plone.app.linkintegrity来源借用技巧吗?
我的用例:“项目”文件夹中的“设置文件夹” - 本质上,除非删除项目文件夹本身,否则绝不允许删除设置文件夹。我想我要求一个非常具体的遏制关系的参照完整性。
除了作为父母被删除的直接结果而被删除的情况外,你如何防止删除对象?
答案 0 :(得分:1)
经过一段时间后,我终于找到了解决这个普遍问题的方法(但在不同的背景下):
因此,只有在尝试删除对象本身时才会引发异常,但在删除其父对象时却不会引发异常。
参见示例:http://bazaar.launchpad.net/~upiq-dev/upiq/dev-uu.formlibrary/revision/113