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>