1: from OFS.Folder import Folder
2: from Globals import DTMLFile,package_home
3: from tempfile import NamedTemporaryFile
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: tmpFile=NamedTemporaryFile()
28:
29: if xmlurl:
30: xmlf=urllib.urlopen(xmlurl).read()
31: if xmlobject:
32: try:
33: xmlf=getattr(self,xmlobject)()
34: except:
35: xmlf=getattr(self,xmlobject).data
36:
37: tmpFile.write(xmlf)
38: path=tmpFile.name
39:
40: fmJarPath=os.path.join(package_home(globals()), 'fm.jar')
41:
42: zLOG.LOG("MPIWG Web",zLOG.INFO,"java -classpath %s -Djava.awt.headless=true Convert %s"%(fmJarPath,path))
43: ret=os.popen("java -classpath %s -Djava.awt.headless=true Convert %s"%(fmJarPath,path),"r").read()
44: zLOG.LOG("MPIWG Web",zLOG.INFO,"result convert: %s"%ret)
45:
46: tmpFile.close()
47: 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
48:
49: def findUpdater(self):
50: """find Update, giebt alle Update files als Tupel (id,objekte) zuruck"""
51: return self.ZopeFind(self,obj_metatypes=['File','Page Template'])
52: def index_html(self):
53: """standard ansicht"""
54: pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/viewUpdates.zpt')).__of__(self)
55: return pt()
56:
57: manage_addZSQLUpdateForm=DTMLFile('ZSQLUpdateAdd', globals())
58:
59: def manage_addZSQLUpdate(self, id, title='', label='', description='',
60: createPublic=0,
61: createUserF=0,
62: connection_id=None,
63: REQUEST=None):
64: """Add a new Folder object with id *id*.
65:
66: If the 'createPublic' and 'createUserF' parameters are set to any true
67: value, an 'index_html' and a 'UserFolder' objects are created respectively
68: in the new folder.
69: """
70:
71:
72: ob=ZSQLUpdate()
73: ob.id=str(id)
74: ob.title=title
75: self._setObject(id, ob)
76: ob=self._getOb(id)
77: setattr(ob,'label',label)
78:
79:
80: checkPermission=getSecurityManager().checkPermission
81:
82:
83: if REQUEST is not None:
84: return self.manage_main(self, REQUEST, update_menu=1)
85:
86:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>