试图在plone中显示对象状态会给出“无工作流程提供'$ {name}'信息。”错误

时间:2011-11-18 11:41:33

标签: python plone zope

我正在尝试使用以下代码返回对象状态:

workflow = getToolByName(context,'portal_workflow')
status = workflow.getInfoFor(obj,'review_state')

当我尝试输出时使用:

print "State: %s" % (status)

我收到以下错误:

  

异常类型工作流程

     

异常异常值没有工作流提供'$ {name}'信息。

我在网上做过一些阅读,但似乎没有给出明确的答案。

有人可以帮忙吗?

修改 这不是一个没有工作流程的对象。尝试获取状态的对象是使用自定义工作流程。但是,将其切换为使用默认的plone工作流仍然会导致相同的错误。

固定 在尝试了最简单的事情之后:

status = obj.review_state

这个有效!去搞清楚。不管怎样,谢谢。

如果您愿意,可以删除此帖子。

3 个答案:

答案 0 :(得分:5)

实际上,贾科莫的回答是正确的。您尝试传递给obj方法的getInfoFor是目录大脑,而不是实际的内容对象。这就是为什么要求review_state直接为你工作的原因。

Plone内容对象不了解它自己的工作流状态。该信息由工作流工具维护,这就是为什么当您查看实际内容对象时必须使用workflow_tool.getInfoFor

在您的情况下,您已经获得了目录搜索的结果,这是一个名为brain的轻量级结构,并尝试将其传递给工作流工具。目录大脑没有工作流程,因此您获得的错误非常准确。但目录大脑确实具有review_state属性,该属性对应于目录大脑所代表的对象的审阅状态。

简而言之,如果您有目录大脑,请使用brain.review_state,如果您有内容对象,请使用workflow_tool.getInfoFor(obj, 'review_state')

答案 1 :(得分:2)

那是因为您正在尝试获取没有任何关联工作流的对象的工作流状态(可能是文件或图像)。您可以在zmi-> portal_workflows中查看所有contenttype-workflows配对。

答案 2 :(得分:0)

在定义的变量选项卡(portal_workflow的ZMI)中,在该页面的底部,确保状态变量名称为'review_state' - 这可能不是默认的IIRC。这可能是您问题的一个可能来源。