Annotation of ZSQLExtend/ZSQLUpdate.py, revision 1.3
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
1.3 ! dwinter 8:
! 9:
! 10: import logging
! 11:
! 12: #ersetzt logging
! 13: def logger(txt,method,txt2):
! 14: """logging"""
! 15: logging.info(txt+ txt2)
1.1 dwinter 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:
1.2 dwinter 34: tmphandler,path =mkstemp()
35: tmpFile=os.fdopen(tmphandler,"w+b")
36:
1.1 dwinter 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
1.2 dwinter 44:
1.1 dwinter 45:
46: tmpFile.write(xmlf)
1.2 dwinter 47: tmpFile.close()
1.1 dwinter 48:
1.2 dwinter 49: #path=tmpFile.name
50:
1.1 dwinter 51: fmJarPath=os.path.join(package_home(globals()), 'fm.jar')
1.2 dwinter 52:
53:
54:
1.3 ! dwinter 55: logger("MPIWG Web",logging.INFO,"java -classpath %s -Djava.awt.headless=true Convert %s"%(fmJarPath,path))
1.1 dwinter 56: ret=os.popen("java -classpath %s -Djava.awt.headless=true Convert %s"%(fmJarPath,path),"r").read()
1.3 ! dwinter 57: logger("MPIWG Web",logging.INFO,"result convert: %s"%ret)
1.1 dwinter 58:
1.2 dwinter 59: os.unlink(path)
1.1 dwinter 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>