[Zope] Trying to get tree working

Schneider Frans schnef@nido.nl
Thu, 6 Dec 2001 16:44:59 +0100 (MET)


Thanks,

I was afraid it was something like this. It is somewhat messy I think and
I was hoping for something real simple.

Frans

On Wed, 5 Dec 2001, Dieter Maurer wrote:

> Frans C.H. Schneider writes:
>  > > Frans C.H. Schneider writes:
>  > >  > ...
>  > >  > <dtml-let ps_comp=ps_par>
>  > >  > <dtml-tree id=ps_comp
>  > > branches_expr="ps_childLookup(ps_par=ps_comp)">
>  > >  >  <b><dtml-var ps_comp></b> <dtml-var ps_start>
>  > >  > </dtml-tree>
>  > >  > </dtml-let>
>  > >  >
>  > >  >
>  > >  > It works for the first time but when I try to expand it I
>  > > get a key error on
>  > >  > ps_par.
>  > >  >
>  > >  > What goes wrong??
>  > > I do not have an answer for your question.
>  > >
>  > > But you should get a traceback and this traceback should tell you
>  > > where the "KeyError" is detected. This may give you a hint...
>  > ...
>  > This is the traceback.
>  > 
>  > Error Type: KeyError
>  > Error Value: ps_par
>  > 
>  > Traceback (innermost last):
>  >   ....
>  >     (Object: bmpsiq)
>  >   File /opt/Zope-2.4.2-src/lib/python/DocumentTemplate/DT_Let.py, line 146,
>  > in render
>  >     (Object: ps_comp=ps_par)
>  > KeyError: (see above)
>  > 
>  > I guess this has to do with the ps_par not being in the namespace the moment
>  > I try to expend the tree: it was passed from the calling screen in the first
>  > place. If I replace the line with dtml-let ps_comp=ps_par> with dtml-let
>  > ps_comp="'partnumber I know'"> it works fine for the item I specify with the
>  > partnumber.
> I think, I understand:
> 
>   *  "ps_par" is a parameter that comes from the request.
> 
>   *  When you enter your DTML object for the first time,
>      then the request contains a "ps_par" from the form
> 
>   *  When you expand a node in the tree, you create a new
>      request, but this one is lacking the "ps_par" parameter...
> 
> Your options:
> 
>   *  There is an "urlparam_expr" patch for Zope's TreeTag
>      somewhere on zope.org that would allow you to
>      write:
> 
> 	<dtml-tree .... urlparam_expr="'ps_par=%s' % ps_par" ...>
> 
>      to pass the parameter (this assumes, your "ps_par" does not
>      contain characters invalid in query strings.
>      Otherwise, you would need to "url_quote_plus" the value....
> 
>   *  You can use a cookie to pass the value around as I did
>      it in my "DocFinder" product
> 
>        <http://www.dieter.handshake.de/pyprojects/zope>
> 
>      This assumes, your "ps_par" does not contain characters
>      invalid in cookies...
> 
>   *  If you use sessions anyway, you can store your "ps_par"
>      in a session object.
> 
> 
> Dieter
>