包括"变更说明"从InvokeFactory创建内容时

时间:2014-10-01 20:17:51

标签: plone ploneformgen

我正在使用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参数中使用commentmessagecmfeditions_version_comment甚至target.invokeFactory等密钥。到目前为止没有运气。

1 个答案:

答案 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)