Я пытаюсь удалить из ZODB объекты, ссылающиеся на классы, которых больше не будет в будущем. Вот в чем проблема: я могу найти его по oid
, но я не знаю, что на него ссылается. Все очевидные вещи были сделаны — я удалил фактический Plone
контент и даже хранилище истории.
Я сделал экспорт XML, чтобы найти oid и получить его в отладчике:
from ZODB.utils import p64
>>> ob=app._p_jar[p64(113955)]
>>> list(ob)
[<InterfaceClass OFS.interfaces.IFolder>, <InterfaceClass plone.app.contenttypes.interfaces.IFolder>, <InterfaceClass plone.folder.interfaces.IFolder>, <InterfaceClass Products.CMFCore.interfaces._content.IFolderish>, <InterfaceClass Products.GroupSpace.interfaces.IGroupSpace>, <InterfaceClass z3c.relationfield.interfaces.IHasIncomingRelations>, <InterfaceClass z3c.relationfield.interfaces.IHasOutgoingRelations>, <InterfaceClass z3c.relationfield.interfaces.IHasRelations>, <InterfaceClass plone.namedfile.interfaces.IImageScaleTraversable>, <SchemaClass ims.issuetracker.interfaces.IIssue>, <InterfaceClass OFS.interfaces.IItem>, <InterfaceClass zope.container.interfaces.IItemContainer>, <InterfaceClass zope.interface.common.mapping.IItemMapping>, <InterfaceClass plone.app.iterate.interfaces.IIterateAware>, <SchemaClass ims.behaviors.interfaces.modified.ILastModifiedBy>, <InterfaceClass plone.portlets.interfaces.ILocalPortletAssignable>, <InterfaceClass zope.location.interfaces.ILocation>, <InterfaceClass OFS.interfaces.IManageable>, <InterfaceClass Products.CMFCore.interfaces._content.IMinimalDublinCore>, <InterfaceClass Products.CMFCore.interfaces._content.IMutableDublinCore>, <InterfaceClass Products.CMFCore.interfaces._content.IMutableMinimalDublinCore>, <InterfaceClass plone.app.dexterity.behaviors.filename.INameFromFileName>, <InterfaceClass plone.app.content.interfaces.INameFromTitle>, <InterfaceClass App.interfaces.INavigation>, <SchemaClass plone.app.dexterity.behaviors.nextprevious.INextPreviousToggle>, <InterfaceClass OFS.interfaces.IObjectManager>]
Этот класс Products.GroupSpace.interfaces.IGroupSpace больше не будет существовать. Я просто хочу удалить это. "ob" - это экземпляр BTrees.OOBTree.OOBucket, но это все, что я знаю - хотя я почти уверен, что он находится в PersistentComponents портала, это все еще довольно расплывчато.