Re: [Zope-dev] Recursive folders from Python

2000-10-31 Thread Phil Harris

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" [EMAIL PROTECTED]
To: "Jason Spisak" [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
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  -  [EMAIL PROTECTED]
 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  -  [EMAIL PROTECTED]
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 )




Re: [Zope-dev] Recursive folders from Python

2000-10-30 Thread Dieter Maurer

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  -  [EMAIL PROTECTED]
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] Recursive folders from Python

2000-10-16 Thread Jason Spisak

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
[EMAIL PROTECTED]

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
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 )




Re: [Zope-dev] Recursive folders from Python

2000-10-16 Thread Andy McKay

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" [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
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
 [EMAIL PROTECTED]

 ___
 Zope-Dev maillist  -  [EMAIL PROTECTED]
 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  -  [EMAIL PROTECTED]
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 )