[Zope] building a revisitable object list???

Kevin Dangoor kid@kendermedia.com
Sun, 13 Feb 2000 11:16:28 -0500


----- Original Message -----
From: "Darran Edmundson" <dee124@rsphy1.anu.edu.au>
To: <zope@zope.org>
Sent: Sunday, February 13, 2000 9:40 AM
Subject: [Zope] building a revisitable object list???


> I'm using nested <dtml-in> blocks to descend two levels
> into a portion of my ZODB.  I'm only interested in the
> leaf nodes.  However, rather than act on them while
> "visiting", I want to conditionally store a reference to them
> in a python list so that I can visit any leaf later on.

This should probably be done in a PythonMethod. It's sooooo much cleaner. I
used to do this kind of thing in DTML, because it was too much of a pain to
make an ExternalMethod. With PythonMethods, I find it so much more user
friendly to write this kind of logic directly in python.

> I'll make it clear with a pared-down example.
>
> root
>   folder1
>     subfolder1a
>     subfolder1b
>   folder2
>     subfolder2a
>
> I want to build a list such that I can visit various
> subfolders without having to search them out.

So the subfolders all have unique names? If so, you can build a hash:

leaves = {}

for folder in objectValues('Folder'):
  for leaf in folder.objectValues('Folder'):
    leaves.update({leaf.id : leaf})


After this, you can just do leaves['subfolder1a'] to get the actual
subfolder1a object.

Kevin