3

我正在尝试清理已卸载的 Plone 附加组件的内容注释 (IAnnotations)。我已经成功浏览了所有站点内容并删除了活动对象中的注释。

但是,CMFEditions / 版本控制保留了旧的内容副本,我不知道如何遍历它们并删除它们上面的所有错误注释。

除非我可以清理这些对象引用,否则在从构建中删除附加组件后,在编辑具有历史记录中缺少对象的注释的内容时,会开始出现 ZODB BrokenObject 错误。

4

1 回答 1

5

那很讨厌。插件应该只使用原始类型进行所有数据存储的另一个原因。

我有一些伪代码可能会让你接近:

    repo_tool = getToolByName(obj, "portal_repository")
    if not repo_tool.isVersionable(obj):
        return
    history = repo_tool.getHistoryMetadata(obj)
    if not history:
        return       
    length = history.getLength(countPurged=False)
    for i in xrange(length - 1, -1, -1):
        try:
            version = repo_tool.retrieve(obj, i)
            annotations = IAnnotations(version.object)
            del annotations[KEY_TO_DELETE]
        except POSKeyError:
            pass
于 2012-05-02T14:01:11.357 回答