[Zope-dev] The Application object

Chris McDonough chrism@digicool.com
Mon, 17 Jul 2000 12:36:11 -0400


> Sorry I wasn't clear enough. The Singleton is a design 
> pattern from the
> Gang of Four book that fits this situation well. It is a 
> class that is 
> meant to control access to the one and only instance of a global
> variable. I was just using that as a frame of reference, 
> though; Zope has
> no such class for the Application object, or I wouldn't be 
> writing this
> message.

Oh, ok, sorry, hard to tell intent from actual code.  :-)

> 
> I just need some way of getting at the one and only 
> Application object at
> run-time. Something like:
> 
>   from Globals import app
>   myOb = app.Control_Panel.Products.MyProduct.MyZClass('foo')
>   ...
> 
> Given a reference to an object in the ZODB, I can do this via:
> 
>   app = self.getPhysicalRoot()
>   myOb = app.Control_Panel.Products.MyProduct.MyZClass('foo')
> 
> But, this does not work from methods like __init__, or 
> __setstate__, where
> we do not have a physical location in the ZODB, yet.

Ah, I see the problem.

I'm afraid I don't know the answer.

I generally use the manage_afterAdd and manage_beforeDelete methods to
do things like this.

I suppose you could pass the root object into the constructor.
__setstate__... well.  Err...

Anybody else?