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')
#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 + '[')
  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:
    newscript = container[method_id]
    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]
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-dev )

Reply via email to