[Zope-dev] getattr'ing proxy object's methods

Kent Polk kent@goathill.org
13 Apr 2001 17:03:41 GMT


On 13 Apr 2001 05:50:01 -0500, Dieter Maurer wrote:
>Kent Polk writes:
> > ....
>I do not understand your goal precisely...
>However, the surrogate technique used in
>"CMFCore.DirectoryView.DirectoryView" may come near
>to your proxie objects.

I played around with that and can't quite see how to map the proxy
namespace onto the current one.

I basically want to do a dtml-with in Python for the proxy clients.

so that:
<dtml-in "getTable(...)">

automatically adds the proxy's namespace, instead of having to do:

<dtml-with Proxy>
<dtml-in "getTable(...)">

where:
    def Proxy(self):
        """Return the proxy associated with this object"""
        return getattr(self, self.proxy_id)

__call__ is never called in this context as it's trying to locate
a method (that doesn't exist for the proxy client), so that's out.

__of__, of course probably is the key, but I can't determine how
to push the proxy's namespace onto the current call, much less be
able to do anything with it since hasattr(self, self.proxy_id)
returns 0 in the context of the __of__ call for the proxy client.
I don't understand that one since self appears to be the correct
object. I presume it has something to do with preventing recursion...

I also tried adding the proxy's namespace to the client when created,
which was quite interesting, but not quite what I had in mind. :^)

That appears to leave me with just __bobo_traverse__, which can
correctly locate the proxy object but I can't determine how I could
use it to either directly call the proxy method (can't identify
the method from inside __bobo_traverse__) or add the proxy's
namespace in the context of __bobo_traverse__.

Thanks!