如何获取签入文件的集合?

时间:2012-10-29 04:44:21

标签: plone

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

3 个答案:

答案 0 :(得分: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']

您不需要以编程方式执行此操作,只是想展示搜索已发布对象与所有对象之间的区别。后者返回一个额外的签出对象(处于私有状态)。

答案 1 :(得分:1)

这种方法有可能:

  • 通过着名的schemaextender向所有ATCT添加一个新字段'Has workingcopy'。
  • 在目录中注册该字段,以使其可用于集合。
  • 收听事件处理程序,在创建工作副本时将字段设置为true,在取消或取消时将其设置为False。

我为此写了一个软件包,因为无论如何我很快就需要一个项目:adi.workingcopyflag

答案 2 :(得分:0)

由于签入/签出状态未在portal_catalog中编入索引,因此无法将信息提供给集合。