Hi, Fred I discovered another bug in it. Where it changes stuff with "self[", it changes it to "container.", which is wrong, but a simple edit. new code: import string ids = container.objectIds('Python Method') oldscriptsuffix='.old' #replace all self. with the following: #change to context if needed newself = 'container' #for future programmatic use just to be certain no extra dots if string.find(newself,'.') >= 0: newself = string.replace(newself,'.','') for method_id in ids: method_id = string.strip(method_id) #get the Method and its title method = container[method_id] title = method.title #FTPget does not require external method! thebody = method.manage_FTPget() #get the params eop = string.find(thebody,'</params>') params = thebody[8:eop] params = string.replace(params,' ','') params = string.replace(params,'self,','') params = string.rstrip(string.replace(params,'self','')) body = thebody[eop+10:] #get the body newbodylist = [] splitbody = string.split(body,'\n') #do imports as needed #bug: random will be imported if you use whrandom for animport in ['string','whrandom','random','math']: if string.find(body,animport+'.') >= 0: newbodylist.append('import ' + animport) for k in splitbody: #this would be a good place for re newstring = string.replace(k,'self.',newself + '.') #bug: might miss 'self [' wish re were available newstring = string.replace(newstring,'self[', newself + '[') newbodylist.append(string.rstrip(newstring)) body = string.join(newbodylist,'\n') # uncomment to see the raw data # print 'params = "%s"' % params # print 'body is:\n"%s"' % body #rename the old and create the new. don't do more than once. if method_id [-len(oldscriptsuffix):] <> oldscriptsuffix: container.manage_renameObject(method_id,method_id+oldscriptsuffix) container.manage_addProduct['PythonScripts'].manage_addPythonScript(method_id) newscript = container[method_id] newscript.ZPythonScript_setTitle(title) newscript.ZPythonScript_edit(params, body) print 'converted: \t%s' % method_id if len(printed) < 9: print "No methods to convert" return printed Thanks for trying it. Let me know any other bugs, and I may eventually publish a howto. -- Jim > > Jim, > > Thanks for the script. I plan to give it a try. > _______________________________________________ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )