3

我正在使用 PloneFormGen 表单自定义脚本适配器创建一个内容项invokeFactory。到目前为止一切正常,但是我们希望开始生成评论以包含在创建操作中,以获取项目的历史记录。评论本身将使用表单中的字段和一些预设文本生成。

PFG可以做到这一点吗?

内容类型是自定义类型,并且是可版本化的。使用克隆4.3.2PFG 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_commenttarget.invokeFactory

4

1 回答 1

2

我不确定这在自定义脚本适配器中是否可行。

你第一次进入的动作是NoneCreate如果操作是,历史记录会自动显示None。这是在这里实现的(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)
于 2014-10-02T06:45:03.583 回答