[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!