我正在尝试构建一个自定义文件夹列表,其中包含指向文件夹中对象的文档操作的快速链接。
要加载为给定对象obj定义的操作,我要在文件夹的浏览器视图中这样做:
portal_actions = getToolByName(self.context, 'portal_actions')
actions = portal_actions.listActionInfos(object=obj, categories=('object_buttons',))但出于某种原因,actions总是只包含复制操作。删除对象、重命名等内容丢失。当与同一个用户(Manager)一起使用Plone时,我可以访问对象I的所有操作。
对新的虚拟操作的实验表明,问题的根源必须是listActionInfos执行的权限和条件检查。但我被困在这里..。比较用于检查操作的权限和条件表达式的计算上下文,发现浏览器视图的调用与对象的普通Plone之间没有显著差异。
有什么问题吗?
发布于 2014-12-17 18:56:54
我找到了问题的根源。
发布的代码运行良好,但我成功地说服Zope的安全机制使用与实际角色不同的、权限较低的角色。在视图的__init__方法中构造不同的浏览器视图对象会导致这种奇怪的行为。
https://stackoverflow.com/questions/27528264
复制相似问题