not an answer to the original question... but an alternative approach from OFS import Folder def create_folders(self, number): ''' create a set of recursive folders with depth equal to number''' parent = self for index in xrange(number): folder = Folder() folder.id = str(number) parent._setObject(folder, str(number)) parent = folder Andy McKay wrote:
Try using getattr to get the object... heres a python script to do it a little more cleanly:
import string
def create_folders(self): path = '/a/b/c' # create a folder for each part of the string, nested.
for p in string.split(path, '/'): if p != '': self = create_folder(self, p)
return 'Done'
def create_folder(folder, id): try: folder.manage_addFolder(id) except: pass
new_folder = getattr(folder, id) return new_folder
----- Original Message ----- From: "Jason Spisak" <444@hiretechs.com> To: <zope-dev@zope.org> Sent: Monday, October 16, 2000 10:46 AM Subject: [Zope-dev] Recursive folders from Python
Zopists,
Yesterday I was trying to create recursive folders from DTML. I'd like to do the same from Python. Does anyonw know why this code won't create a folder within a folder. It's tells me the id is already in use, so that means it's not descending into the newly created folder to make another folder.
def create(self): for digit in range(0, 10): folder = self.manage_addFolder(str(digit), str(digit)) subfolder = self.folder.manage_addFolder(str(digit), str(digit))
All my best,
Jason Spisak 444@hiretechs.com
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )