[Zope] More on Calling a dtml method from a product
Geoff Armstrong
geofstro@monaco.mc
Thu, 4 Apr 2002 10:09:58 +0200
>Date: Wed, 3 Apr 2002 20:03:46 +0200
>To: hans <hans@beehive.de>
>From: Geoff Armstrong <geofstro@monaco.mc>
>Subject: Re: [Zope] Calling a dtml method from a product
>Cc:
>Bcc:
>X-Attachments:
>
>OK, I tried this:
>
>myResult_if_any = DTMLMethod.DTMLMethod.__call__(self.myMethod,
>REQUEST=REQUEST)
>
>But; I'm still getting the error "NameError:
>Error Value: global name 'REQUEST'
>
>The method I'm calling is contained by self, which is a folderish object.
>
>I'm making this call from one of the methods of the product class
>that self is an instance of.
>
>Any further thoughts?
>
>Thanks again
>
geoff
>
>
>
>>Geoff Armstrong wrote:
>>
>>> At 15:54 +0100 3/4/02, hans wrote:
>>>
>>> ><dtml-call "REQUEST.set( 'yourname', yourvalue)">
>>>
>>> Yes, I have a number of such calls in the DTMLMethod I'm attempting
>>> to call from the python product.
>>
>>i understand, that you call a DTMLMethod, which contains these calls
>>
>>> >> I know this must seem like a dumb question; but can you tell me how
>>> >> to pass an empty REQUEST object in the call, so the DTMLMethod can
>>> >> set and make use of these variables?
>>> >>
>>> > > __call__(myDTMLMethod, REQUEST???)
>>
>>from the top of my head
>>myResult_if_any = myDTMLMethod(self, REQUEST=REQUEST)
>>or
>>myResult_if_any = myDTMLMethod(self)
>>
>>This effects a "binding" of the REQUEST object (right hand side)
>>to a parameter named REQUEST (in the second case default = {}
>>
>>> >a) REQUEST is an object that seemingly behaves just like a python
>>> >dictionary
>>> >b) the __call__-method of DTMLMethod has REQUEST={},
>>> >so by default if no 2nd parameter is given, it is empty. Note that
>>> >DTMLMethods
>>> >are usually interpreted in the context (=namespace) of their caller.
>>
>>= client
>>
>>> >c) the third parameter **kw is a sequence of keyword parameters.
>>>
>>> So does that mean I need to pass an empty dictionary as the second
>>> parameter to _call_ so that my DTMLMethod will have a REQUEST object
>>> that it can start filling with variables using <dtml-call
>>> "REQUEST.set( 'yourname', yourvalue)"> ?
>>>
>>> Could you provide the exact syntax I need to use in _call_ ? Whatever
>>> I try, I always get the error "global name 'REQUEST' is not defined"?
>>>
>>> Presumably because the DTMLMethod I'm calling is trying to set
>>> variables in a REQUEST object; but it's not getting one, and I still
>>> don't understand how to provide this. I'll also need to provide some
>>> other variables to the DTMLMethod. I guess I need to use **kw for
>>> that? Again the exact syntax I need to use, by example, would be
>>> appreciated.
>>>
>>> The end of the traceback is as following:
>>>
>>> (Object: REQUEST.set('newsMgr', id))
>>> (Info : REQUEST)
>>> File <string>, line 2, in f
>>> NameError: (see above)
>>
>>The name "REQUEST" is not bound to
>>-------------------------------------------------------------
>>Who's got only a hammer sees the world as a nail
>>hans augustin (software developer) hans@beehive.de
>>beehive elektronische medien GmbH http://www.beehive.de
>>phone: +49 30 847-82 0 fax: +49 30 847-82 299
>
--
http://www.imagebites.net/newsland
The most convenient news site on the net!