[Zope] Restatement of list problem

Chris Kratz chris.kratz@vistashare.com
Fri, 21 Jun 2002 10:05:02 -0400


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