[Zope-dev] XMLRPCMethod product
Ben Leslie
benno@sesgroup.net
Thu, 28 Oct 1999 02:10:10 +1000
> Ben Leslie writes:
> >I would prefer the syntax <dtml-var "some_server.multiply(3, 4)"> but
> >I have had problem overriding __getattr__ so I'll stick to the former for
> >the moment.
>
> Looking at the code, it seems essentially the same as mine (though I
> haven't actually run it to verify this), and I also ran into problems
> making the invocation syntax more natural using __getattr__ or
> __call__. So we can concentrate on figuring that out...
Okay can any understand how I can do this?
I want to change the product so I can use the syntax
<dtml-var "some_server.multiply(3, 4)">
rather than
<dtml-var "some_server('multiply', 3, 4)">
Below is a snippet of code which is the closet I've come to getting this
to work. Unfortunately this totally kills and persistance
def __getattr__(self, name):
if name in ('ages', 'add', 'multiply'):
myserv = xmlrpclib.Server(self.server)
return (getattr(myserv,name))
else:
return Acquisition.Acquired
Basically I guess what I am trying todo is test if the attribute
called is a valid xml rpc method (which I am just doing hard-coded
at the moment) or else do whatever Zope normally does.
It is the second bit which is really starting to annoy me. I figured
that is I explicitly make it acquire the attribute (as done abvove)
it would force Zope to do the right thing.
Unfortunately it doesn't work.
Anyhelp/advice would be much appreciated.
Cheers,
Benno