Annotation of ZSQLExtend/ZSQLUpdate.py, revision 1.2

1.1       dwinter     1: from OFS.Folder import Folder
                      2: from Globals import DTMLFile,package_home
1.2     ! dwinter     3: from tempfile import mkstemp
1.1       dwinter     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:         
1.2     ! dwinter    27:         tmphandler,path =mkstemp()
        !            28:         tmpFile=os.fdopen(tmphandler,"w+b")
        !            29:         
1.1       dwinter    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
1.2     ! dwinter    37: 
1.1       dwinter    38:         
                     39:         tmpFile.write(xmlf)
1.2     ! dwinter    40:         tmpFile.close()
1.1       dwinter    41: 
1.2     ! dwinter    42:         #path=tmpFile.name
        !            43:         
1.1       dwinter    44:         fmJarPath=os.path.join(package_home(globals()), 'fm.jar')
1.2     ! dwinter    45:         
        !            46:         
        !            47:         
1.1       dwinter    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: 
1.2     ! dwinter    52:         os.unlink(path)
1.1       dwinter    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>