Hi Jepthe, First, if you want to acces the REQUEST object, you need to declare it as a formal parameter: def myExtMethod(self, REQUEST): ... REQUEST is then passed automatically by Zope's internal magic, which looks up formal parameter names and matches them to arguments from HTML forms, HTTP Headers, etc. The "read only class, buffer" traceback is due to a very annoying bug in ExternalMethod.py and screws up any other error messages in external methods. I can't remember exactly if it was in line 254 or 256 in ExternalMethod.py, but here's the code I use to fix it: ExternalMethod.py, from line 254 if type(error_type) is type('') and lower(error_type) in ('redirect',): raise error_type, error_value, tb if (type(error_value) is type('') and regex.search('[a-zA-Z]>', error_value) > 0): error_message=error_value else: error_message='' With that you should get better error messages. Regards, Stefan PS: <!--#var myExtMethod--> <!--#var "myExtMethod()"--> should be both OK Service Informatique CHSR wrote:
Hello,
I'm confused with external methods. Please help.
I want an external method to access its context (for the purpose of acquisition, etc.). So I write:
def myExtMethod(self): pass
Within myExtMethod, I should be able to: - write self.REQUEST to access the current REQUEST object (I need to be able to modify the current REQUEST object with self.REQUEST.set(...)) - or for example self.myzsqlmethod() to call a zsql method object, right???
Let's suppose that myExtMethod is:
def myExtMethod(self): l=[] for i in self.l: l.append(i+1) self.REQUEST.set('l', l)
Now, how can I call this method from DTML?
<!--#var myExtMethod--> <!--#var "myExtMethod()"--> <!--#var "myExtMethod(this())"-->
All don't work. I end up in a traceback. "read only class, buffer"
Any hints?
Jepthe CLAIN Service Informatique CHSR