# HG changeset patch # User casties # Date 1282929578 -7200 # Node ID 9e4f9cfd1edcc058576dde8e63735aa945b80ea2 # Parent a2e4ca3f1cffe7fdb6d896b6af933f745fb4d3a6 start adding field structure to xml upload diff -r a2e4ca3f1cff -r 9e4f9cfd1edc RestDbInterface.py --- a/RestDbInterface.py Tue Aug 24 20:29:31 2010 +0200 +++ b/RestDbInterface.py Fri Aug 27 19:19:38 2010 +0200 @@ -228,8 +228,9 @@ RESPONSE.setStatus(400) return - logging.debug("put with schema=%s table=%s file=%s"%(schema,tablename,file)) - ret = self.createTableFromXML(schema, tablename, file) + fields = REQUEST.get("fields",None) + logging.debug("put with schema=%s table=%s file=%s fields=%s"%(schema,tablename,file,repr(fields))) + ret = self.createTableFromXML(schema, tablename, file, fields) # return the result as JSON format = REQUEST.get("format","JSON") if format == "JSON": @@ -418,21 +419,17 @@ self.executeSQL(sqlString,hasResult=False) return sqlFields - def createTableFromXML(self,schema,table,data): + def createTableFromXML(self,schema,table,data, fields=None): """create or replace a table with the given XML data""" - logging.debug("createTableFromXML schema=%s table=%s data=%s"%(schema,table,data)) + logging.debug("createTableFromXML schema=%s table=%s data=%s fields=%s"%(schema,table,data,fields)) tablename = sqlName(table) - self.importExcelXML(schema,tablename, data) + self.importExcelXML(schema, tablename, data, fields) return {"tablename": tablename} - def importExcelXML(self,schema,table,xmldata,fieldsOnly=False): + def importExcelXML(self,schema,table,xmldata,fields=None,fieldsOnly=False): ''' Import XML file in Excel format into the table @param table: name of the table the xml shall be imported into - @param containerTagName: XML-Tag which describes a dataset - @param data: data to be imported (string or filehandle) - @param identify: (optional) field res. tag which identifies a entry uniquely for updating purposes. - @param RESPONSE: (optional) ''' from xml.dom.pulldom import parseString,parse @@ -487,7 +484,8 @@ return xmlFields # create table - sqlFields = self.createEmptyTable(schema, table, xmlFields) + if fields is None: + sqlFields = self.createEmptyTable(schema, table, xmlFields) numFields = len(sqlFields) fieldString = ", ".join(['"%s"'%f['name'] for f in sqlFields]) valString = ", ".join(["%s" for f in sqlFields])