File:  [Repository] / ZSQLExtend / ZSQLUpdate.py
Revision 1.2: download - view: text, annotated - select for diffs - revision graph
Sun Jan 23 16:26:52 2005 UTC (19 years, 4 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
file handling changed

    1: from OFS.Folder import Folder
    2: from Globals import DTMLFile,package_home
    3: from tempfile import mkstemp
    4: from AccessControl import getSecurityManager
    5: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
    6: import urllib
    7: import os.path
    8: import zLOG
    9: 
   10: 
   11: 
   12: """Webfrontend fuer das Update der Datenbanken ueber das Web mithilfe von
   13: fm.jar
   14: """
   15: 
   16: class ZSQLUpdate(Folder):
   17:     """Klasse zum update, in den Folder werden die verschiedenen Update XML files hineingelegt"""
   18:     meta_type="ZSQLUpdate"
   19: 
   20:     def update(self,xmlurl=None,xmlobject=None):
   21:         """update by calling fm.jar and using the xmlfile at xmlurl
   22:         @param xmlurl: url auf ein xml file fuer fm.jar
   23:         """
   24: 
   25: 
   26:         
   27:         tmphandler,path =mkstemp()
   28:         tmpFile=os.fdopen(tmphandler,"w+b")
   29:         
   30:         if xmlurl:
   31:             xmlf=urllib.urlopen(xmlurl).read()
   32:         if xmlobject:
   33:             try:
   34:                 xmlf=getattr(self,xmlobject)()
   35:             except:
   36:                 xmlf=getattr(self,xmlobject).data
   37: 
   38:         
   39:         tmpFile.write(xmlf)
   40:         tmpFile.close()
   41: 
   42:         #path=tmpFile.name
   43:         
   44:         fmJarPath=os.path.join(package_home(globals()), 'fm.jar')
   45:         
   46:         
   47:         
   48:         zLOG.LOG("MPIWG Web",zLOG.INFO,"java -classpath %s -Djava.awt.headless=true Convert %s"%(fmJarPath,path))
   49:         ret=os.popen("java -classpath %s -Djava.awt.headless=true Convert %s"%(fmJarPath,path),"r").read()
   50: 	zLOG.LOG("MPIWG Web",zLOG.INFO,"result convert: %s"%ret)
   51: 
   52:         os.unlink(path)
   53:         return "<html><body><h1>SQL update</h1><p>(notice, everything worked fine if only <q>java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver</q> comes out as result)</p><p>Result:<br>%s</p></html></body>"%ret
   54: 
   55:     def findUpdater(self):
   56:         """find Update, giebt alle Update files als Tupel (id,objekte) zuruck"""
   57:         return self.ZopeFind(self,obj_metatypes=['File','Page Template'])
   58:     def index_html(self):
   59:         """standard ansicht"""
   60:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/viewUpdates.zpt')).__of__(self)
   61:         return pt()
   62: 
   63: manage_addZSQLUpdateForm=DTMLFile('ZSQLUpdateAdd', globals())
   64: 
   65: def manage_addZSQLUpdate(self, id, title='', label='', description='',
   66:                      createPublic=0,
   67:                      createUserF=0,
   68:                      connection_id=None,
   69:                      REQUEST=None):
   70:     """Add a new Folder object with id *id*.
   71: 
   72:     If the 'createPublic' and 'createUserF' parameters are set to any true
   73:     value, an 'index_html' and a 'UserFolder' objects are created respectively
   74:     in the new folder.
   75:     """
   76:     
   77:     
   78:     ob=ZSQLUpdate()
   79:     ob.id=str(id)
   80:     ob.title=title
   81:     self._setObject(id, ob)
   82:     ob=self._getOb(id)
   83:     setattr(ob,'label',label)
   84: 
   85:     
   86:     checkPermission=getSecurityManager().checkPermission
   87: 
   88: 
   89:     if REQUEST is not None:
   90:         return self.manage_main(self, REQUEST, update_menu=1)
   91: 
   92: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>