如何获取在任何时间点处于“签入”状态的文件集合?使用克隆 4.1。签入不是工作流状态。它是一个用户在编辑时锁定的文件,因此其他用户在前者通过“签入”解锁文件之前无法访问最新副本。我想知道我是否可以有一个集合来显示所有已锁定文件的列表,即“签出”或在任何时间点具有“签入”状态。
问问题
146 次
3 回答
2
由于签入的对象与“正常”的已发布对象无法区分,因此可能没有简单的方法来创建这样的集合。
想到了一些解决方法:
通过在私有状态中搜索其 id 以“copy_of”开头的对象来查找已签出的对象
检查“已发布”对象。
创建一个包含附加“签入”状态的自定义工作流,并(以某种方式)将签入状态用于已签出并至少签回一次的对象。
这些都不是特别有吸引力,因此目录搜索可能是您最好的选择:
>>> [brain.getObject().getId() for brain in portal.portal_catalog(
review_state="published")]
['front-page', 'news', 'aggregator', 'events', 'aggregator', 'Members']
如果您愿意,可以将其与所有对象的列表进行比较:
>>> [brain.getObject().getId() for brain in portal.portal_catalog()]
['front-page', 'news', 'aggregator', 'events', 'aggregator', 'Members',
'copy_of_front-page']
您不需要以编程方式执行此操作,只是想演示搜索已发布对象与搜索所有对象之间的区别。后者返回一个额外的签出对象(处于私有状态)。
于 2012-10-29T18:05:19.157 回答
1
使用这种方法是可能的:
- 通过著名的架构扩展器向所有 ATCT 添加一个新字段“有工作副本”。
- 在目录中注册该字段,以使其可用于集合。
- 监听事件处理程序以在创建工作副本时将该字段设置为 true,在它被签出或取消时设置为 False。
我为此写了一个包,因为我很快就需要它来做一个项目:adi.workingcopyflag
于 2012-11-01T12:58:50.327 回答
0
由于签入/签出状态未在 portal_catalog 中编制索引,因此无法使信息对集合可用。
于 2012-10-30T06:06:28.827 回答