我正在使用invokeFactory
从PloneFormGen表单自定义脚本适配器创建内容项。到目前为止一切正常,但是我们想要开始生成一个评论,以包含在创建操作中,用于项目的历史记录。评论本身将使用表单中的字段和一些预设文本生成。
这是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
等密钥。到目前为止没有运气。
答案 0 :(得分:2)
我不确定自定义脚本适配器是否可以使用。
您首次参赛的动作是None
。如果操作为Create
,则历史记录会自动显示None
。这已实施here (plone.app.layout.viewlets.content)
# On a default Plone site you got the following
>>> item.workflow_history
{'simple_publication_workflow': ({'action': None, 'review_state': 'private', 'actor': 'admin', 'comments': '', 'time': DateTime('2014/10/02 08:08:53.659345 GMT+2')},)}
dict的键是工作流ID,值是所有条目的元组。 因此,您可以按照自己的意愿操作条目。但我不知道这是否可以使用受限制的python(自定义脚本适配器只能使用受限制的python)。
但您也可以通过扩展脚本来添加新条目:
...
new_object = target.get(id)
workflow_tool = getToolByName(new_object, 'portal_workflow')
workflows = workflow_tool.getWorkflowsFor(new_object)
if not workflows:
return
workflow_id = workflows[0].id # Grap first workflow, if you have more, take the the one you need
review_state = workflow_tool.getInfoFor(new_object, 'review_state', None)
history_entry = {
'action' : action, # Your action
'review_state' : review_state,
'comments' : comment, # Your comment
'actor' : actor, # Probably you could get the logged in user
'time' : time,
}
workflow_tool.setStatusOf(workflow_id, context, history_entry)