清理Plone的CMFEditions历史对象中的注释

Mik*_*maa 3 versioning plone

我正在尝试清理已卸载的Plone插件的内容注释(IAnnotations).我成功地浏览了所有网站内容并删除了实时对象中的注释.

但是,CMFEditions /版本控制会保留旧的内容副本,我不知道如何浏览它们并删除它们上的所有错误注释.

除非我可以清理这些对象引用,否则在从buildout中删除加载项之后,当编辑具有历史记录中缺少对象的注释的内容时,会开始获取ZODB BrokenObject错误.

van*_*eem 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
Run Code Online (Sandbox Code Playgroud)