[Zope] Beginner DTML question: dereferencing a variable
Michel Pelletier
michel@digicool.com
Tue, 6 Apr 1999 09:03:18 -0400
> -----Original Message-----
> From: Martin Dougiamas [mailto:martin@complex.curtin.edu.au]
> Sent: Tuesday, April 06, 1999 7:00 AM
> To: zope@zope.org
> Subject: Re: [Zope] Beginner DTML question: dereferencing a variable
>
>
> Martin Dougiamas wrote:
> > I want to check if a folder of that name already exists
> > under the current folder, so I can decide to create it or not.
> >
> > Intuitively, I first tried:
> >
> > <!--#if "theusername"-->
> > <H3>FOLDER EXISTS</H3>
> > <!--#else-->
> > <H3>FOLDER DOES NOT EXIST</H3>
> > <!--#/if-->
>
> I seem to found a solution myself. This seems to work:
>
> <!--#if "_.has_key(theusername)"-->
> <H3>FOLDER <!--#var "theusername"--> EXISTS</H3>
> <!--#else-->
> <H3>FOLDER <!--#var "theusername"--> DOES NOT EXIST</H3>
> <!--#/if-->
>
> ...as long as there's not a object with that name UP the
> hierarchy, I suppose.
>
Yes, acquisition could defeat you with this method. Try the objectIds
method. From /lib/python/OFS/ObjectManager.py,
def objectIds(self, spec=None):
"""Return a list of subobject ids.
Returns a list of subobject ids of the current object. If
'spec' is
specified, returns objects whose meta_type matches 'spec'.
"""
So you can use the sequence that objectIds returns in your DTML to find
out if any subobjects if meta_type 'Folder' exist with the username your
looking for.
<!--#in "objectIds('Folder')-->
<!--#if "id == theusername"-->
Folder Exists
<!--#/if-->
<!--#/in-->
You want to use a DTML Method to get the expected result.
-Michel
> If there's a cleaner way to do this I'd still like to know it.
>
> Cheers!
> Martin
>
>
> _______________________________________________
> Zope maillist - Zope@zope.org
> http://www.zope.org/mailman/listinfo/zope
>
> (For developer-specific issues, use the companion list,
> zope-dev@zope.org - http://www.zope.org/mailman/listinfo/zope-dev )
>