清理Plone'中的注释;s CMF条件历史对象

清理Plone'中的注释;s CMF条件历史对象,plone,versioning,Plone,Versioning,我正在尝试清理已卸载Plone加载项的内容注释(iAnotation)。我已成功浏览了所有网站内容,并删除了live objects中的注释 但是,CMFEditions/versioning保留了旧的内容副本,我不知道如何遍历它们并删除它们上的所有不良注释 除非我能清理这些对象引用,否则在从构建中删除外接程序后,在编辑包含注释且历史记录中缺少对象的内容时,就会出现ZODB BrokerNoObject错误。这太糟糕了。另一个原因是插件应该只对其所有数据存储使用基元类型 我有一些伪代码可以让你接

我正在尝试清理已卸载Plone加载项的内容注释(iAnotation)。我已成功浏览了所有网站内容,并删除了live objects中的注释

但是,CMFEditions/versioning保留了旧的内容副本,我不知道如何遍历它们并删除它们上的所有不良注释


除非我能清理这些对象引用,否则在从构建中删除外接程序后,在编辑包含注释且历史记录中缺少对象的内容时,就会出现ZODB BrokerNoObject错误。

这太糟糕了。另一个原因是插件应该只对其所有数据存储使用基元类型

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

    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