Need for "aq_base" in DTML (was: Re: [Zope] Dumb DTML question - existance check of an object) (was: Re: [Zope] Dumb DTML question - existance check of an object)
Satheesh Babu writes:
I have a URL, say, /sub1/sub2. How do I check in DTML whether 1. folder sub1 exists or not 2. If not, create it. 3. folder sub2 exists under sub1 4. If not, create it. It is easy, if you are a bit sloppy.
* Access to "/": "PARENTS[-1]" * Existence check: "_.hasattr(object,what)" NOTE, that this is the sloppy part. - "_.hasattr" will return true, if "object" has attribute "what" (that is what we want) *OR* when it has acquired such an attribute (we do *NOT* want that here). What we would need is a DTML accessible version of "aq_base". This is trivially handled by an external method. - it returns true, when there is such an attribute. This may not be a folder. You can check "meta_type" to see, it is indeed a folder. * creation: "manage_addFolder" look in the ZDP's (http:zdp.zope.org) object reference for the function's signature. I think, this info is available in the Zope 2.2 help system, too. Dieter
I made a DTML method which works, but doesn't do it recursively. I'll try external methods. Thanks.. <dtml-if fname> <dtml-try "_.getitem(_['fname'],1)"> <dtml-with "_.getitem(_['fname'],1)"> <dtml-var title> <dtml-unless "meta_type=='Folder'"> Item exists, but not a folder </dtml-unless> </dtml-with> <dtml-except> Folder not found <dtml-if ftitle> <dtml-try> <dtml-call "manage_addFolder(_['fname'],_['ftitle'])"> Folder Created <dtml-except> Folder could not be created </dtml-try> <dtml-else> <dtml-try> <dtml-call "manage_addFolder(_['fname'],_['fname'])"> Folder Created <dtml-except> Folder could not be created </dtml-try> </dtml-if> </dtml-try> </dtml-if fname> ----- Original Message ----- From: Dieter Maurer <dieter@handshake.de> To: Satheesh Babu <vsbabu@csoft.net> Cc: <zope@zope.org>; <zope-dev@zope.org> Sent: Wednesday, July 26, 2000 3:27 PM Subject: Need for "aq_base" in DTML (was: Re: [Zope] Dumb DTML question - existance check of an object)
Satheesh Babu writes:
I have a URL, say, /sub1/sub2. How do I check in DTML whether 1. folder sub1 exists or not 2. If not, create it. 3. folder sub2 exists under sub1 4. If not, create it. It is easy, if you are a bit sloppy.
* Access to "/": "PARENTS[-1]" * Existence check: "_.hasattr(object,what)" NOTE, that this is the sloppy part.
- "_.hasattr" will return true, if "object" has attribute "what" (that is what we want) *OR* when it has acquired such an attribute (we do *NOT* want that here).
What we would need is a DTML accessible version of "aq_base". This is trivially handled by an external method.
- it returns true, when there is such an attribute. This may not be a folder.
You can check "meta_type" to see, it is indeed a folder.
* creation: "manage_addFolder" look in the ZDP's (http:zdp.zope.org) object reference for the function's signature.
I think, this info is available in the Zope 2.2 help system, too.
Dieter
Dieter Maurer wrote:
* Access to "/": "PARENTS[-1]" * Existence check: "_.hasattr(object,what)" NOTE, that this is the sloppy part.
- "_.hasattr" will return true, if "object" has attribute "what" (that is what we want) *OR* when it has acquired such an attribute (we do *NOT* want that here).
What we would need is a DTML accessible version of "aq_base". This is trivially handled by an external method.
Can you do this with the following in DTML? <dtml-with "PARENTS[-1]" only> <dtml-if "_.hasattr(object, what)"> ...stuff... </dtml-if> </dtml-with> Not tested, but it looks right to me. -- Steve Alexander Software Engineer Cat-Box limited http://www.cat-box.net
participants (3)
-
Dieter Maurer -
Satheesh Babu -
Steve Alexander