[Zope] Continued problem tal:condition

KevinL darius@obsidian.com.au
21 Aug 2002 19:31:51 +1000


If all of your macros are in zpt_memall, and lkid is going to be either
not there, or the name of one of the macros inside zpt_memall, then all
you should need is:

<div tal:condition="exists:request/form/lkid" tal:omit-tag="">
  <metal:block use-macro="container/zptmac_memall/macros/?lkid">
  </metal:block>
</div>

>From what you've said, that should cover it, I'd imagine.  If the macro
isn't being displayed when you do that, then I'd be looking closely at
the macros (and the source for the pages).  It should display an error,
though, I'd have thought.

KevinL

On Wed, 2002-08-21 at 16:09, zope wrote:
> Hi All
> 
> Thanks once again for all the help you have given me.
> I have tried out the suggestions.
> Now all my macros are in the same page.
> I m am trying to use :
>   <div tal:condition="request/form/lkid | nothing">
>      <tal:block define="mName
> python:here.oms.Users.lib.pset_links(lkid=request.form['lkid'])">
>          <metal:block use-macro="container/zptmac_memall/macros/?mName">
>           List
>          </metal:block>
>      </tal:block>
>   </div>
> 
> Or else :
>   <div tal:condition="request.form.get('lkid') == 't' ">
>          <metal:block
> use-macro="container/zptmac_memall/macros/zptmac_alllist">
>           List
>          </metal:block>
>  </div>
> In both cases the earlier error of :
>   exceptions.KeyError on id in "<PythonExpr request.form['id'] == 't' or
> nothing>"
> 
> The problem is that the value for "lkid" even when it is passed does not
> call the macro.
> Irrespective of whatever value i pass i cant see the macros although the
> error is not being shown.
> Why is this?
> I would like to state the problem again.
> I have a page template that on loading first should not show me any macro
> after i send the form variable via a link the page should get refreshed and
> now the pag e should also show me the macro apart from what it was showing
> earlier.
> now there are no errors being shown but i still cant view the macros after
> the value has been passed.
> Could you please help me out.
> 
> Thanks and Best Regards
> John Kunchandy
> Original message::
>  exceptions.KeyError on id in "<PythonExpr request.form['id'] == 't' or
> > nothing>"
> > -------------------------------------------------------^
> > Could you tell me how I can rewrite this so that the first time the page
> is
> > loaded even if there is no value for "id" the page will be shown .
> > And only if I pass a form variable it should execute.
> 
> Try replacing "request.form['id'] == 't' or nothing" with:
> 
> request.form.get(id')=='t'
> 
> cheers,
> 
> Chris
> 
> On Tue, 2002-08-20 at 22:03, KevinL wrote:
> > How about:
> >
> > <div tal:define="macroName request/form/id">
> >   <metal:block use-macro="container/zptmac_memtask/macros/?macroName">
> >     List
> >   </metal:block>
> > </div>
> >
> > Combined with renaming your "id" field in your forms (or your macro
> > names, either will do) so they match?  That munges the whole list of
> > tal:conditions down to something more manageable...
> 
> Heh.  After posting this, I looked closer at your list below, and
> realised you're altering both the macro file name, and the name of the
> macro inside the file.
> 
> That'd require that you be able to replace multiple elements of the
> macro name, rather than a single.  That's not doable atm.  I still
> reckon it should be...  Then you'd be covered by a tal:define="macroName
> string:container/zptmac_${request/id}task/macros/zptmac_${request/id}list".
> 
> Alternately, you can make all macros in macro files be called the same
> thing - so you end up with a file "zptmac_mempending", which has a macro
> called "std", and a "zptmac_memtask" which also has a macro called
> "std", and you just alter one element of the path to the macro, based on
> the id from the form.
> 
> KevinL
> 
> > > On Tuesday, August 20, 2002, at 07:18 , zope wrote:
> > >
> > > > Hi All
> > > > I am trying to execute a macro only if a condition is satisified.
> > > > The code I am using is:
> > > >
> > > > <div tal:condition="python:request.form['id'] == 't' | nothing"
> > > > metal:use-macro="container/zptmac_memtask/macros/zptmac_taskslist">
> > > >       List
> > > > </div>
> > > > <div tal:condition="python:request.form['id'] == 'p' | nothing"
> > > > metal:use-macro="container/zptmac_mempending/macros/zptmac_pendlist">
> > > >       List
> > > > </div>
> > > > <div tal:condition="python:request.form['id'] == 'w' | nothing"
> > > > metal:use-macro="container/zptmac_memweek/macros/zptmac_weeklist">
> > > >       List
> > > > </div>
> > > >  <div tal:condition="python:request.form['id'] == 'a' | nothing"
> > > > metal:use-macro="container/zptmac_memall/macros/zptmac_alllist">
> > > >       List
> > > > </div>
> 
> 
> 
> 
> 
> 
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.381 / Virus Database: 214 - Release Date: 8/2/2002
> 
> 
> _______________________________________________
> 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 )
>