Re: [Zope-dev] Recursive folders from Python
Jason Spisak writes:
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)) Apparently, the above line should add a new folder in (say) '00'. What it does, however, is trying to add the new folder in the object named 'folder' (accessible from 'self'). This may well go wrong.
Keep in mind, that the local name space of the function 'create' (where your variable 'folder' lives) is disjunct from the attribute namespace of 'self' (where the attribute 'folder' lives). Dieter
Try something like (taken from my own code, so it works for me, caveta emptor): def mkcontext(self,context=None): global default_dd if not context: return 'EH!!!!!' c=string.split(context,'/') newself=self for a in c: try: newself.manage_addFolder(a,createPublic=0,createUserF=0,REQUEST=getattr(self ,'REQUEST',None)) except: pass newself=getattr(newself,a) ## this is the relevant line newself.manage_addLocalRoles(c[-1],['Manager']) try: newself.manage_addDTMLMethod('index_html','Start Page',file=default_dd) except: pass This func takes a slash separated list of folders (actually a NDS context like 'dacs/media/stf/wmlph' and creates the folder hierarchy. It's probably overkill for what you want but the relevant line is the getattr one (as marked). hth Phil ----- Original Message ----- From: "Dieter Maurer" <dieter@handshake.de> To: "Jason Spisak" <444@hiretechs.com> Cc: <zope-dev@zope.org> Sent: Monday, October 30, 2000 6:43 PM Subject: Re: [Zope-dev] Recursive folders from Python
Jason Spisak writes:
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)) Apparently, the above line should add a new folder in (say) '00'. What it does, however, is trying to add the new folder in the object named 'folder' (accessible from 'self'). This may well go wrong.
Keep in mind, that the local name space of the function 'create' (where your variable 'folder' lives) is disjunct from the attribute namespace of 'self' (where the attribute 'folder' lives).
Dieter
_______________________________________________ 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 )
participants (2)
-
Dieter Maurer -
Phil Harris