[Zope] Restatement of list problem

Schmidt, Allen J. aschmidt@nv.cc.va.us
Fri, 21 Jun 2002 10:15:43 -0400


Great! Thanks to all who responded...and to those that did not but were
thinking of the answer. I must have picked up brain waves, too.

I am still stuck in the old-fashioned, outdated, etc. world of DTML, so I
took parts of the responses and did this (I will try the Python scripts
later):

<form action="<dtml-var URL>" method="get">
 <select name="yr:list" onChange="submit();" multiple size="5">
   <option>Year</option>
  <dtml-in zGetYEAR>
   <option value="<dtml-var CYEAR>"><dtml-var CYEAR></option>
  </dtml-in>
 </select>

<dtml-if bt>
    <dtml-in bt>
      <input type="hidden" value="<dtml-var sequence-item>" name="bt">
    </dtml-in>
</dtml-if>
...
...
...
</form>


There are 6 other little forms like this one each displaying a different
vehicle property.

I made sure to use the name:list=  convention for setting up the main
variable on each of the forms. It works fine now no matter what comes in
from the dropdown selections. One, none or many...it all works.

Thanks again!!!


-----Original Message-----
From: Chris Kratz [mailto:chris.kratz@vistashare.com]
Sent: Friday, June 21, 2002 10:05 AM
To: zope@zope.org
Subject: Re: [Zope] Restatement of list problem


Hello Allen,

We have two tiny utility python scripts we use all the time.

toList() is used in cases where we don't know whether we will be getting
back
a list or a string, but we always want a list for processing.

toList(parField)

if same_type(parField, []):
   return parField
else:
   return [parField]

and we also created isList() which is usefull for testing.

isList(parField)

if same_type(parField, []):
   return 1
else:
   return 0

We can use both of them in python scripts or dtml.  We've found that they
 make the code more readable and are quite handy.

Good luck.

-Chris

On Friday 21 June 2002 09:20 am, Phil Harris wrote:
> You need to use the Python type() function:
>
> if type(your_list) is type([]):
>   do something here
>
> or the Zope same_type() function:
>
> t=[]
>
> if same_type(your_list,t):
>   do something here
>
> see http://www.zopelabs.com/cookbook/995873707 for more info
>
> hth
>
>
>
> On Fri, 21 Jun 2002 09:10:52 -0400
>
> "Schmidt, Allen J." <aschmidt@nv.cc.va.us> wrote:
> > So then is there ANY way to definitively determine that something is a
> > list or not?
> >
> > Have not tried but on first look it seems Dieter's solution would blow
up
> > if not a list, correct?
> >
> >
> >
> > -----Original Message-----
> > From: Jens Vagelpohl [mailto:jens@zope.com]
> > Sent: Friday, June 21, 2002 8:53 AM
> > To: Schmidt, Allen J.
> > Cc: 'zope@zope.org'
> > Subject: Re: [Zope] Restatement of list problem
> >
> >
> > string.find will blow up if this is really a list. if it is a string it
> > will be OK. however, the dtmlin will blow up if you have a string. it
> > will be fine if you have a list.
> >
> > jens
> >
> > On Friday, June 21, 2002, at 08:35 , Schmidt, Allen J. wrote:
> > > You are correct in how the hidden fields were set up.
> > > In your example, what if 'br' comes in as a single...not a list? Won't
> > > the dtml-in throw an error if it's not a list??
> > >
> > > My thought was to try this (semi-pseudo code):
> > >
> > > <if br>
> > >  <if string.find(br,'[')>  //then it's a list
> > >   <in br>
> > >     type=hidden name=sequence-item
> > >   </in>
> > >  <else> // not a list but a single
> > >     type=hidden name=br
> > >  </if>
> > > </if>
> > >
> > >
> > > Won't using the string.find expose the list so the dtml-in won't blow
> > > up?
> > >
> > >
> > > Thanks!!
> > >
> > > -Allen
> > >
> > >
> > > -----Original Message-----
> > > From: Dieter Maurer [mailto:dieter@handshake.de]
> > > Sent: Wednesday, June 19, 2002 1:49 PM
> > > To: Schmidt, Allen J.
> > > Cc: 'zope@zope.org'
> > > Subject: Re: [Zope] Restatement of list problem
> > >
> > > Schmidt, Allen J. writes:
> > >> Maybe I over-complicated my original request.
> > >>
> > >> I have a form field that is a list:
> > >> ['2 DR CONVERTIBLE','2 DR COUPE','2 DR HATCHBACK']
> > >>
> > >> The URL looks like this:
> > >> vehicleList?bt=2+DR+CONVERTIBLE&bt=2+DR+COUPE&bt=2+DR+HATCHBACK
> > >>
> > >> When I pick for years 2002 and 2001 for the above body types, the URL
> > >> changes a bit:
> >
> >
vehicleList?yr%3Alist=2002&yr%3Alist=2001&bt%3Alist=%5B%272+DR+CONVERTIBL
> >E%2
> >
> > >> 7%2C+%272+DR+COUPE%27%2C+%272+DR+HATCHBACK%27%5D
> > >
> > > This looks as if you would have your list in a hidden variable
> > > of the form
> > >
> > >    <input name="bt:list" type="hidden" value="&dtml-bt;">
> > >
> > > When this arrives at the Zope server, you will get a list with
> > > one string that respresents the former list as a string.
> > >
> > > You need instead:
> > >
> > >    <dtml-in br>
> > >      <input name="bt:list" type="hidden" value="&dtml-sequence-item;">
> > >    </dtml-else>
> > >      <input name="bt:tokens" type="hidden" value="">
> > >    </dtml-in>
> > >
> > >    i.e. each list element must gets its one "input" control.
> > >
> > >
> > > Dieter
> > >
> > >
> > > _______________________________________________
> > > 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 )
> >
> > _______________________________________________
> > 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 )
> >
> >
> > _______________________________________________
> > 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 )
>
> _______________________________________________
> 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 )

--
Chris Kratz
Systems Analyst/Programmer
VistaShare LLC
www.vistashare.com

-------------------------------------------------------

-- 
Chris Kratz
Systems Analyst/Programmer
VistaShare LLC
www.vistashare.com


_______________________________________________
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 )