Thanks for your input Deiter, You are correct, of course. After further investigation, I realize that passing request as REQUEST='REQUEST' is not providing what I need at all. It got rid of the error message; but it's not allowing the called DTML Method to set variables as I'd wished. I got carried away by my initial enthusiasm for having got rid of the error message "REQUEST not defined" into thinking I'd really solved the problem; but inspection of the debug window proves otherwise. I'm an optimist at heart :) What I really need to understand here is whether it's possible to call a DTMLMethod from a Python product and have it behave exactly as though it was called through the web. I find now that even after modifying the DTML method in question to get rid of reliance on setting request variables, still doesn't stop it from complaining about everything not being defined. e.g. calls to objectValues as in <dtml-in "objectValues So can you tell me, is it really possible to call a DTMLMethod from a Python product and have it behave exactly as thought it was called through the web? thanks geoff
Geoff Armstrong writes:
At 11:03 +0100 4/4/02, hans wrote:
I managed to solve it with the following:
myResult_if_any = DTMLMethod.DTMLMethod.__call__(self.catalog_items2, REQUEST='REQUEST') Your problem has been the reference to an undefined name REQUEST.
By wrapping REQUEST into a string literal, you no longer reference it as a name (or variable).
But you are very lucky, that it works now. There is a really high chance that it would not work!
The "REQUEST" argument is expected to be a mapping object not a string. Passing a string is worse (maybe equally bad) than not passing REQUEST at all!
Furthermore, an additional argument, called "client", is usually essential to call DTML objects.
Please read "Calling DTML Objects" in
<http://www.dieter.handshake.de/pyprojects/zope/book/chap3.html>
Dieter
-- http://www.imagebites.net/newsland The most convenient news site on the net!