--- ZSQLExtend/ZSQLExtend.py 2006/03/28 19:54:41 1.79 +++ ZSQLExtend/ZSQLExtend.py 2006/04/20 14:08:35 1.80 @@ -82,7 +82,7 @@ class ZSQLExtendFolder(Folder,Persistent - def importXMLFile(self,table,data,identify=None,RESPONSE=None): + def importXMLFile(self,table,data=None,identify=None,filename=None,RESPONSE=None): #TODO: finish importXMLFile ''' Import XML file into the table @@ -92,18 +92,25 @@ class ZSQLExtendFolder(Folder,Persistent @param identify: (optional) field res. tag which identifies a entry uniquely for updating purposes. @param RESPONSE: (optional) ''' - from xml.dom.pulldom import parseString + from xml.dom.pulldom import parseString,parse - + zLOG.LOG("import xml",zLOG.INFO,"called") #fh=file("/tmp/fmpxml.xml") import bz2 import base64 ret="" - data=bz2.decompress(base64.decodestring(data)) - #data=fh.read() - - doc=parseString(data) + if data: + data=bz2.decompress(base64.decodestring(data)) + + zLOG.LOG("import xml",zLOG.INFO,"received file") + doc=parseString(data) + zLOG.LOG("import xml",zLOG.INFO,"parsed file") + + elif filename: + fh=file(filename) + doc=parse(fh) + zLOG.LOG("import xml",zLOG.INFO,"parsed file") while 1: node=doc.getEvent() @@ -124,6 +131,7 @@ class ZSQLExtendFolder(Folder,Persistent field=dataSet[nr] searchStr="""select %s from %s where %s = '%s'"""%(identify,table,identify,field) + zLOG.LOG("import xml",zLOG.INFO,searchStr) search=self.ZSQLSimpleSearch(searchStr) if search: update=True @@ -137,6 +145,7 @@ class ZSQLExtendFolder(Folder,Persistent field=dataSet[nr] queryStr="""UPDATE %s SET %s WHERE %s = '%s' """%(table,setStr,identify,field) + zLOG.LOG("update xml",zLOG.INFO,queryStr) self.ZSQLSimpleSearch(queryStr) ret+="ud: %s \n"%field else: @@ -148,6 +157,7 @@ class ZSQLExtendFolder(Folder,Persistent queryStr="""INSERT INTO %s (%s) VALUES (%s)"""%(table,fields,values) self.ZSQLSimpleSearch(queryStr) + zLOG.LOG("update xml",zLOG.INFO,queryStr) ret+="ad: %s \n"%field elif node[1].nodeName=="METADATA": @@ -158,15 +168,17 @@ class ZSQLExtendFolder(Folder,Persistent for name in names: fieldNames.append(name.getAttribute('NAME')) - + + zLOG.LOG("update xml: fieldnames",zLOG.INFO,repr(fieldNames)) qstr="""select attname from pg_attribute, pg_class where attrelid = pg_class.oid and relname = '%s' """ columns=[x.attname for x in self.ZSQLSimpleSearch(qstr%table)] for fieldName in fieldNames: + zLOG.LOG("update xml: fieldname",zLOG.INFO,repr(fieldName)) if fieldName not in columns: qstr="""alter table %s add %s %s""" self.ZSQLSimpleSearch(qstr%(table,fieldName,'text')) - + zLOG.LOG("update xml: fieldname add",zLOG.INFO,qstr%(table,fieldName,'text')) #fn=node[1].getAttribute("xml:id") #nf=file("xtf/"+fn+".xtf",'w') #nf.write(""""""+node[1].toxml()+"")