So I guess it didn't work. :)
I'll look into this. The first step will be to write a test for this.
The intent was definately that you would be able to get to a broken object's
state.
Jim
Victor Safronovich wrote:
Hello Jim Fulton,
Thursday, September 29, 2005, 2:57:47 PM, you wrote:
JF> Victor Safronovich wrote:
Hello zope-dev!
http://www.zope.org/Collectors/Zope/1911
I try to migrate my old database from zope 2.6.1.
I have Broken objects, but it is impossible to get its state in Zope 2.8.
In Zope 2.6 Broken objects have states, what i uses to migrate its.
I think this is because DB.classFactory is overrided to use
OFS.Uninstalled.BrokenClass, which is bad persistent class.
the __dict__ of all my Broken objects equals to {'_p_changed':None}.
my_object._p_mtime does not load it`s state.
JF> Try setting _p_changed=1.
object.__dict__ equals to {'_p_changed':1}
JF> Or try accessing some other attribute.
object.data
AttributeError('data') raise by OFS.Uninstalled.Broken.__getattr__
Inheritance tree of class BrokenClass:
+ OFS.Uninstalled.BrokenClass
+ __builtin__.ExplicitAcquirer
+ ExtensionClass.Base
- __builtin__.object
+ OFS.SimpleItem.Item
+ ExtensionClass.Base
- __builtin__.object
+ webdav.Resource.Resource
+ ExtensionClass.Base
- __builtin__.object
+ webdav.Lockable.LockableItem
- webdav.EtagSupport.EtagSupport
+ OFS.CopySupport.CopySource
+ ExtensionClass.Base
- __builtin__.object
+ App.Management.Tabs
+ ExtensionClass.Base
- __builtin__.object
- OFS.Traversable.Traversable
+ OFS.ZDOM.Element
- OFS.ZDOM.Node
+ AccessControl.Owned.Owned
+ ExtensionClass.Base
- __builtin__.object
+ App.Undo.UndoSupport
+ ExtensionClass.Base
- __builtin__.object
+ Persistence.Persistent
+ persistent.Persistent
- __builtin__.object
+ ExtensionClass.Base
- __builtin__.object
Contradictions of inherited attributes in class BrokenClass:
__delattr__ (wrapper_descriptor)
+ OFS.Uninstalled.BrokenClass
+ __builtin__.ExplicitAcquirer
+ ExtensionClass.Base
@ __builtin__.object
+ OFS.SimpleItem.Item
+ ExtensionClass.Base
# __builtin__.object
+ webdav.Resource.Resource
+ ExtensionClass.Base
# __builtin__.object
+ OFS.CopySupport.CopySource
+ ExtensionClass.Base
# __builtin__.object
+ App.Management.Tabs
+ ExtensionClass.Base
# __builtin__.object
+ AccessControl.Owned.Owned
+ ExtensionClass.Base
# __builtin__.object
+ App.Undo.UndoSupport
+ ExtensionClass.Base
# __builtin__.object
+ Persistence.Persistent
# persistent.Persistent
# __builtin__.object
+ ExtensionClass.Base
# __builtin__.object
__getattribute__ (wrapper_descriptor)
+ OFS.Uninstalled.BrokenClass
+ __builtin__.ExplicitAcquirer
@ ExtensionClass.Base
# __builtin__.object
+ OFS.SimpleItem.Item
# ExtensionClass.Base
# __builtin__.object
+ webdav.Resource.Resource
# ExtensionClass.Base
# __builtin__.object
+ OFS.CopySupport.CopySource
# ExtensionClass.Base
# __builtin__.object
+ App.Management.Tabs
# ExtensionClass.Base
# __builtin__.object
+ AccessControl.Owned.Owned
# ExtensionClass.Base
# __builtin__.object
+ App.Undo.UndoSupport
# ExtensionClass.Base
# __builtin__.object
# Persistence.Persistent
# persistent.Persistent
# __builtin__.object
# ExtensionClass.Base
# __builtin__.object
__setattr__ (wrapper_descriptor)
+ OFS.Uninstalled.BrokenClass
+ __builtin__.ExplicitAcquirer
+ ExtensionClass.Base
@ __builtin__.object
+ OFS.SimpleItem.Item
+ ExtensionClass.Base
# __builtin__.object
+ webdav.Resource.Resource
+ ExtensionClass.Base
# __builtin__.object
+ OFS.CopySupport.CopySource
+ ExtensionClass.Base
# __builtin__.object
+ App.Management.Tabs
+ ExtensionClass.Base
# __builtin__.object
+ AccessControl.Owned.Owned
+ ExtensionClass.Base
# __builtin__.object
+ App.Undo.UndoSupport
+ ExtensionClass.Base
# __builtin__.object
+ Persistence.Persistent
# persistent.Persistent
# __builtin__.object
+ ExtensionClass.Base
# __builtin__.object
__setstate__ (method_descriptor)
+ OFS.Uninstalled.BrokenClass
+ __builtin__.ExplicitAcquirer
@ ExtensionClass.Base
+ OFS.SimpleItem.Item