[Zope-DB] Calling a Product method from a ZSQL Method

Dieter Maurer dieter at handshake.de
Thu Nov 27 18:53:11 EST 2003


Santi Camps wrote at 2003-11-26 18:14 +0100:
 > I've created a class inheriting from ZSQL Methods.  Now I would like to
 > call a public method defined in this class from ZSQL code, but I'm not
 > able to do it.  I can call methods from parent objects, but not my own
 > class methods.

Funny!

It comes from this code in "Shared.DC.ZRDB.DA.DA.__call__":

        if hasattr(self, 'aq_parent'):
            p=self.aq_parent
            if self._isBeingAccessedAsZClassDefinedInstanceMethod():
                p=p.aq_parent
        else: p=None

	## thus, "p" is either the parent or "None"
	...

            try:     query=apply(self.template, (p,), argdata)
	    ## this calls the template -- with "p" rather than "self"
	    ## as "client"
	    ## this explains why you can access the parents methods
	    ## but not that of the Z SQL Method itself

I have no idea why this was implemented this way -- maybe
in order to be consistent with "DTML Methods"
They ignore the method itself and start
with the parent as top element on the DTML namespace.

-- 
Dieter



More information about the Zope-DB mailing list