0

如何获取在任何时间点处于“签入”状态的文件集合?使用克隆 4.1。签入不是工作流状态。它是一个用户在编辑时锁定的文件,因此其他用户在前者通过“签入”解锁文件之前无法访问最新副本。我想知道我是否可以有一个集合来显示所有已锁定文件的列表,即“签出”或在任何时间点具有“签入”状态。

4

3 回答 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 回答