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