是否有一种简单的方法可以检查内容类型或特定对象是否在Plone(4.3.2)中启用/禁用了版本控制?
对于上下文,我正在围绕portal_actions创建一些独特的条件。因此,我需要先查看版本控制是否已启用,而不是检查path('object/@@iterate_control').checkout_allowed()
。否则,对于禁用了版本控制的项目,不会显示有问题的操作,因为很明显它不是checkout_allowed。
我和好的谷歌没有任何运气,在这里找不到这个问题,所以我希望这不是一个骗局。谢谢!
答案 0 :(得分:1)
我能够通过创建新脚本,导入getToolByName
并针对portal_repository.getVersionableContentTypes()
检查当前内容类型来实现此目的。然后只是在条件中包含该脚本。
我一直在寻找已经存在的类似东西,所以如果有人知道,那就让我知道。否则,我现在有了自己的。再次感谢!
答案 1 :(得分:0)
checkout_allowed
做的第一件事就是检查有问题的对象是否支持版本控制:
if not interfaces.IIterateAware.providedBy(context):
return False
(界面为plone.app.iterate.interfaces.IIterateAware
:
class IIterateAware( Interface ):
"""An object that can be used for check-in/check-out operations.
"""
在条件或TAL脚本中使用语义Interface.providedBy(instance)
有点不幸,因为你需要导入接口,但是有一个反转助手:
context.portal_interface.objectImplements(context,
'plone.app.iterate.interfaces.IIterateAware')