Hello,
I am working on a Python Product (subclass of ObjectManager) that creates
some instances of a few ZClasses inside itself when constructed.
Currently, I do this as follows:
CONTROL_PANEL = None
def manage_addMyClass(self, id, title='', REQUEST=None):
global CONTROL_PANEL
if CONTROL_PANEL is None:
CONTROL_PANEL = self.Control_Panel
self._setObject(id, MyClass(id, title))
...
class MyClass(...):
def __init__(self, id, title=''):
self.id = id
self.title = title
ob = CONTROL_PANEL.Products.MyProduct.MyClass('myId')
ob.id = 'myId'
self._setObject('myId', ob)
which works fine, until I need to use CONTROL_PANEL from somewhere else
before manage_addMyClass is called (currently, I am trying to upgrade
existing instances in __setstate__). Inside __setstate__,
self.Control_Panel throws an exception, for understandable reasons.
So, I get the feeling I am going about this incorrectly. I grep'd the
source last night, looking for a getApplicationInstance() method, or
something similar, but found nothing. AFAICT, there is no easy way to get
ahold of the one true Application object without having a reference to an
object in the ZODB and calling getPhysicalRoot().
Did I miss something? Is there a better way to do what I am trying to do?
--Jeff
---
Jeff K. Hoffman 704.849.0731 x108
Chief Technology Officer mailto:[EMAIL PROTECTED]
Going Virtual, L.L.C. http://www.goingv.com/
_______________________________________________
Zope maillist - [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
http://lists.zope.org/mailman/listinfo/zope-announce
http://lists.zope.org/mailman/listinfo/zope-dev )