[Zope] How to correctly use the PARENTS object?

Oliver Bleutgen Oliver Bleutgen <myzope@gmx.net>
Mon, 23 Apr 2001 11:21:50 +0200


> I have the following directory structure:

> Bugs
>         Interface
>                 Insert
>                         sendMail - a DTML Document
>                 BugsMail
>                         getRecipients - a Z SQL Method

> I'd like to call and iterate over the results of getRecipients from
> sendMail.  So I tried the following in sendMail:

> <dtml-in PARENTS[1].BugsMail.getRecipients>
>         <dtml-var someFieldReturnedByGetRecipients>
> </dtml-in>

> ...and I get a KeyError for PARENTS[1].BugsMail.getRecipients....

> I tried various other options (albeit somewhat blindly/desparately), eg.
> putting the whole PARENTS thing in an expression, etc...What am I
> missing?

> What other options are there to traverse a path in a dtml-statement, or
> to do what I want to do here?

Gerrie,
first the long answer:

First, PARENTS[1] tells you that it's a python expression (a list), so you have
to put it into " 's.
So you now would have

<dtml-in "PARENTS[1].BugsMail.getRecipients">
         <dtml-var someFieldReturnedByGetRecipients>
</dtml-in>

Because the term is now enclosed in " 's, you're in 
python and you don't  have the magic of dtml-in/var and friends
which try to always "do the right thing".
You want to call a method in python and you
do it that way:

<dtml-in "PARENTS[1].BugsMail.getRecipients()">

but now getRecipients doesn't get any parameters
handled, you have to pass them explicitly, like 
<dtml-in "PARENTS[1].BugsMail.getRecipients(myvar=myvar)">


Now the short answer:

<dtml-with "PARENTS[1]">
   <dtml-with BugsMail>
       <dtml-in getRecipients>
          <dtml-var someFieldReturnedByGetRecipients>
       </dtml-in>
   </dtml-with>
</dtml-with>
     
or alternativly (and even shorter)

<dtml-with "PARENTS[1].BugsMail">
       <dtml-in getRecipients>
          <dtml-var someFieldReturnedByGetRecipients>
       </dtml-in>
</dtml-with>

cheers,
oliver




> Please help, I'm pretty new to this...


> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )