我正在使用invokeFactory
从PloneFormGen表单自定义脚本适配器创建内容项目。目前为止一切正常,但是我们想要开始生成注释,以包含在创建操作中,以获取该项目的历史记录。评论本身将使用表单中的字段和一些预设文本生成。从InvokeFactory创建内容时包含“更改注释”
这是PFG能做的吗?
内容类型是一种自定义类型,它是可版本化的。使用的Plone 4.3.2,PFG 1.7.14
编辑
我当前的代码:
from Products.CMFPlone.utils import normalizeString
portal_root = context.portal_url.getPortalObject()
target = portal_root['first-folder']['my-folder']
form = request.form
title = "My Title: "+form['title-1']
id = normalizeString(title)
id = id+"_"+str(DateTime().millis())
target.invokeFactory(
"MyCustomType",
id=id,
title=title,
text=form['comments'],
relatedItems=form['uid']
)
我一直在使用像comments
键试过,comment
,message
,甚至cmfeditions_version_comment
在target.invokeFactory
参数内。到目前为止没有运气。
我试图在CSA你的建议。我收到了这个错误:'未经授权:您不允许在此上下文中访问'setStatusOf'。 内容类型在其内容类型的python文件中有一个'at_post_create_script'和'at_post_edit_script'函数。我想知道我是否可以在那里使用武力?我注意到,从'invokeFactory'创建项目时,这些函数不会被调用,但也许我可以得到它? – rain2o 2014-10-02 13:17:58
我能够通过'workflow_tool.doActionFor()'工作。我只需要创建一个新的工作流程转换,其中包含我想要的操作名称。 – rain2o 2014-10-02 13:44:08
您必须使用正确的权限运行脚本。 afaik可以使用代理角色(例如Manager)来运行脚本。所以你可以避免权限问题(新的工作流也可能是一个解决方案)。您也可以将其添加到'at_post_create_script'脚本中。但也有你需要确保拥有正确的权限。 – Mathias 2014-10-03 06:35:23