[Zope] Getting a handle on the results of constructors

Dieter Maurer dieter@handshake.de
Fri, 19 Apr 2002 00:05:53 +0200


Dennis Allison writes:
 > In an External Method (that is, unrestricted python), for example, when
 > you create a Folder one writes:
 > 
 >    self.manage_addProduct['OFSP'].manage_addFolder( id,title="folder")
 > 
 > one would think that it would return the object it just constructed so it 
 > would be easy to use the new product to, say, create another folder or a
 > file inside.   But that appears not to be the case.  (In my example, the 
 > folder was successfully created but the code
 > 
 > 	handle = self.manage_addProduct...
 > 
 > returned None.  That made what I thought was the obvious way to handle
 > things, namely applying the constructor to the new folder using 
 > 
 > 	handle = self.manage_addProduct...
 > 
 > fails as the constructor returns None.  So, how do you get a reference to
 > the newly created object?
I agree with you, but returning objects is sometimes not so good
in a Web context.

You get the object by using "getattr(container,id)".
"container" is the container where you created the object, "id" is its id.


Dieter