[Zope] mount zope server (was: Import from Zope-1 to Zope-2)

Michel Pelletier michel@digicool.com
Thu, 09 Sep 1999 03:34:26 -0400


"Jay, Dylan" wrote:
> 
> > -----Original Message-----
> > From: Michel Pelletier [mailto:michel@digicool.com]
> > Sent: Thursday, September 09, 1999 15:20
> > To: Jay, Dylan
> > Cc: zope-dev@zope.org; zope@zope.org
> > Subject: Re: [Zope] Import from Zope-1 to Zope-2
> >
> >
> > "Jay, Dylan" wrote:
> > >
> > > related note heres another idea I had. How about a product
> > that can mount
> > > one zope ODB into another. Using XML-RPC or something to
> > connect the two
> > > sites togeather over  the internet. It may not be fast
> > enough for using that
> > > way but at least it would be really easy for transfering
> > data between zope
> > > odb's.
> >
> > We are entertaining the possibility of putting ZPublisher.Client into
> > the _ DTML Namespace.  I am primarily championing the idea.
> >
> > 'Client' offers many cool uses.  'Client.Function' will call a remote
> > 'Zope Method' which marshals simple types around (int, list,
> > tuple etc.)
> > and act as Zope oriented RPC.  'Client.call' is a convienent wrapper
> > around 'Client.Function'.  These both have the upshot of working with
> > any
> > URL, turning non 'object content' into file Message objects and return
> > them in a list.
> >
> > Even cooler, 'Client.Object' will create surrogate objects of remote
> > Zope objects.  If you have a DTML Document on machine A, then
> > Machine B
> > could say:
> >
> > <dtml-with "_.Client.Object('http://A/YourDocument')">
> >   <dtml-var id>
> > </dtml-with>
> >
> > and print 'YourDocument'.  You can pass autentication
> > information in to
> > all of the calls to access restricted object.
> 
> So what would happen if this wrapper object was passed back using a
> <dtml-return> call or even a __bobo_traverse_ method? Would further
> resolution in the object happen using the link or would it break and start
> trying to find objects in the local context?
> 

Client.Object returns a real object that would work if passed around in
Zope.  A 'Client.Object' instance defines a __getattr__ which uses
Clients RPC mechanism to get attributes and call methods on remote
objects.  Client will do the usual marshaling of simple python types. 
I'm pretty sure Client will also handle the return of multipart
content.  At least it looks like it from browsing the code.

Of course, if Client were added to the namespace, it would need to be
documented.

-Michel