changeset 28:9e4f9cfd1edc

start adding field structure to xml upload
author casties
date Fri, 27 Aug 2010 19:19:38 +0200
parents a2e4ca3f1cff
children 0b9f8cca6744
files RestDbInterface.py
diffstat 1 files changed, 9 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- 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])