Я хочу предотвратить удаление экземпляра типа папок в Plone, за исключением случая удаления родительской папки.У меня есть догадка, что обработчик событий может предотвратить удаление (вызвать исключение в обработчике IObjectRemovedEvent
, привязанном к интерфейсу маркера), но реализовать исключение из этого правила, кажется, труднее определить: я хочу разрешить удаление элемента, когдаего родительская папка удаляется.
Моя первоначальная догадка заключалась в том, что я мог пройтись по __parent__
указателям и проверить, был ли установлен атрибут родительского (или некоторого удаленного косвенного контейнера), что он удалялся, но яЯ не уверен, как установить этот атрибут при удалении родительского объекта до попытки удалить содержащийся дочерний элемент (в противном случае удаление невозможно).Итак, теперь я задаюсь вопросом, правильно ли я подхожу к этому?Я неправильно понимаю проблемы ограничения для удаления объектов в Plone?Стоит ли искать источник plone.app.linkintegrity для заимствований?
Мой пример использования: «папка настроек» внутри папки «проекта» - по сути, папка настроек никогда не должна удаляться, если толькосама папка проекта удаляется.Наверное, я прошу ссылочную целостность для очень специфических отношений содержания.
Как бы вы предотвратили удаление объекта, за исключением случая, когда он был удален как прямой результат удаления его родителя?