From ab1389f9423764639424df40ca3bf083f50a7ca4 Mon Sep 17 00:00:00 2001 From: David Sommerseth Date: Thu, 30 Jul 2009 14:39:23 +0200 Subject: xmlparser: Correctly format rterid and syskey arguments, added support for /sqlite/@key attribute --- server/xmlparser.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'server/xmlparser.py') diff --git a/server/xmlparser.py b/server/xmlparser.py index a476f49..8c4e2f2 100644 --- a/server/xmlparser.py +++ b/server/xmlparser.py @@ -48,6 +48,7 @@ class XMLSQLparser(object): xsltdoc = self.__get_xml_data(xslt) self.parser = libxslt.parseStylesheetDoc(xsltdoc) + def __get_xml_data(self, input): if hasattr(input, '__module__') and (input.__module__ == 'libxml2') and hasattr(input, 'get_type'): if input.get_type() == 'document_xml': @@ -82,8 +83,8 @@ class XMLSQLparser(object): def GetSQLdata(self, tbl, rterid=None, syskey=None): params = { 'table': '"%s"' % tbl, - 'rterid': rterid, - 'syskey': syskey } + 'rterid': rterid and '"%i"' % rterid, + 'syskey': syskey and '"%i"' % syskey } resdoc = self.parser.applyStylesheet(self.xml, params) # Extract fields, and make sure they are ordered/sorted by the fid attribute @@ -127,6 +128,15 @@ class XMLSQLparser(object): result = { 'table': resdoc.xpathEval('/sqldata/@table')[0].content, 'fields': fields, 'records': records} + + # Extract the key field being returned from INSERT statements, if set + try: + retkey = resdoc.xpathEval('/sqldata/@key') + if retkey and retkey[0] and retkey[0].content: + result['returning'] = retkey.content + except: + pass + resdoc.freeDoc() return result -- cgit