File:  [Repository] / ZSQLExtend / ZSQLUpdate.py
Revision 1.3: download - view: text, annotated - select for diffs - revision graph
Wed Jan 31 14:32:52 2007 UTC (17 years, 5 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
zlog ersetzt durch logging

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

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