我安装了一个新的Plone-4.1.5网站,安装了Linguaplone-4.1.1,选择了两种语言,并将头版翻译成另一种语言。
当通过控制面板将工作流从simple_workflow更改为intranet_workflow,并将旧状态映射到新状态时,只有当前所选语言的对象才能获得新映射。另一种语言的对象获得新工作流的初始状态。
是否有可能以编程方式进行映射以克服这个问题?
答案 0 :(得分:2)
在这种情况下,修补重新映射工作流的代码可能最简单。
打开plone.app.workflow
蛋(它的路径将列在您的bin/instance
脚本中),找到plone/app/workflow/remap.py
文件并进行编辑。
大约一半你会找到以下一行(我副本中的第79行):
for brain in portal_catalog(portal_type=type_ids):
并将Language='all'
添加到:
for brain in portal_catalog(portal_type=type_ids, Language='all'):
另一种方法是将整个文件复制到您自己的项目中,在本地进行更改,然后使用:
调用它statemap = {
'oldstate1_id': 'newstate1_id',
'oldstate2_id': 'newstate2_id'
}
chain_name = ('workflow_id',) # tuple of wf ids (can be empty), or the string '(Default)'
portal_types = ('sequence', 'of', 'portal_types')
copiedremap.remap_workflow(portal, portal_types, chain_name, state_map)
remap_workflow
脚本然后使用对象的当前状态来查找它应该在新目标工作流中具有的新状态(它将为每个新目标执行此操作)工作流程);如果旧状态未在地图中列出,则它将使用目标工作流的初始状态。