如何添加条件以使Dexterity类型可添加?

时间:2016-03-29 19:31:58

标签: plone dexterity

Dexterity FTI可以选择一个权限作为类型的“AddPermission”,但是我正在寻找一种方法,在允许将类型添加到容器之前,需要一些可能复杂的逻辑来解析true。在我的特定示例中,我不会在任何给定容器中仅允许此数量的X数。如果我可以子类化一个方法,比如说,“isAddable”或者什么东西会很棒,但是我没有看到任何方法可以做到这一点。也许这是不可能的,因为类对象尚未启动,所以它不能调用任何方法,但也许FTI本身有什么东西?

我想到了另外两个选择。在我的例子中,由于容器也是自定义内容类型,我可以覆盖其allowedContentTypes方法。我宁愿不依靠容器来做这个检查。另一种选择是覆盖plone.app.content.browser.folderfactories.FolderFactoriesView中的addable_types方法。有更好的方法吗?

这是Plone 4.3

1 个答案:

答案 0 :(得分:2)

遗憾的是,没有" addable_expression"在fti。

我认为重写FolderFactoriesView不会做到这一点 - 智能用户仍然可以拨打${folder_url}/++add++your.type

对于你的文件夹类型的allowedContentTypes的自定义实现听起来像是一个很好的解决方案。

另一种选择是添加一个事件处理程序(dunno哪个事件适合 - 也许zope.lifecycleevent.IObjectCreatedEvent就好了),如果你的条件不满足会引发错误。 (用户仍会看到"添加/ yourtype"菜单但是会出错 - 所以这应该与自定义FolderFactoriesView结合使用)

相关问题