Re[2]: [Zope-dev] Broken objects

2005-09-29 Thread Victor Safronovich
Hello Chris Withers,

Thursday, September 29, 2005, 2:44:52 PM, you wrote:

CW I think that was more by luck than by design, but maybe whoever made the
CW change can help you out...
   I think broken object MUST use ZODB.broken.Broken not OFS.Uninstalled.Broken

CW What makes it a bad persisten class?
   it`s not first-class persistent class.

xCW What makes you think it should?
load object state

-- 
Best regards,
 Victor Safronovich
 NauMen.NauDoc.SoftwareDeveloper  http://www.naumen.ru

___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re[2]: [Zope-dev] Broken objects

2005-09-29 Thread Victor Safronovich
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
# ExtensionClass.Base
+ webdav.Resource.Resource
  # ExtensionClass.Base
+ OFS.CopySupport.CopySource
  # ExtensionClass.Base
+ App.Management.Tabs
  # 

Re[2]: [Zope-dev] Broken objects

2005-09-29 Thread Victor Safronovich
Hello Jim Fulton,

Thursday, September 29, 2005, 4:34:31 PM, you wrote:

JF So I guess it didn't work. :)

JF I'll look into this.  The first step will be to write a test for this.
JF The intent was definately that you would be able to get to a broken object's
JF state.

not Test but for example ( if needed i try to spend time to write test )
zopectl debug
Starting debugger (the name app is bound to the top-level Zope object)
 from Persistence import Persistent
 class Test(Persistent):
... def __init__(self, id):
... self.id = id
...
 test1 = Test('test1')
 test2 = Test('test2')
 app.test1 = test1
 app.test1.test2 = test2
 import transaction
 transaction.commit()

# ctrl + d here
zopectl debug
Starting debugger (the name app is bound to the top-level Zope object)
2005-09-29 10:50:09 WARNING ZODB Could not import class 'Test' from module 
'__main__'
 test1 = app.test1
 test1.__dict__
{'_p_changed': None}
 test1._p_activate()
 test1.__dict__
{'_p_changed': None}
 test1.test2
Traceback (most recent call last):
  File stdin, line 1, in ?
AttributeError: test2
 test1.__class__.__bases__
(class 'OFS.Uninstalled.BrokenClass',)
 conn = test1._p_jar
 conn.setstate(test1)
 test1.__dict__
{'test2': __main__.Test object at 0x4015836c, 'id': 'test1'}
 del app.test1
 import transaction
 transaction.commit()





-- 
Best regards,
 Victor Safronovich
 NauMen.NauDoc.SoftwareDeveloper  http://www.naumen.ru

___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re[2]: [Zope-dev] Broken objects

2005-09-29 Thread Victor Safronovich
Hello Jim Fulton,

Thursday, September 29, 2005, 5:02:46 PM, you wrote:

JF Could you tell me more about what you want to happen?
i want to get the states of broken objects, to migrate them.

-- 
Best regards,
 Victor Safronovich
 NauMen.NauDoc.SoftwareDeveloper  http://www.naumen.ru

___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )