Поиск и удаление объектов по oid

Я пытаюсь удалить из 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 портала, это все еще довольно расплывчато.


person Esoth    schedule 23.06.2017    source источник


Ответы (1)


Возможно, вы захотите изучить

https://pypi.python.org/pypi/wildcard.fixpersistentutilities/1.1b7 или
https://pypi.python.org/pypi/experimental.broken/0.5

person Tom    schedule 24.06.2017