--- ZSQLExtend/ZSQLExtend.py 2007/02/09 17:39:44 1.102 +++ ZSQLExtend/ZSQLExtend.py 2007/02/20 16:00:03 1.103 @@ -424,15 +424,15 @@ class ZSQLExtendFolder(Folder,Persistent if data: data=bz2.decompress(base64.decodestring(data)) - zLOG.LOG("fmpxml",zLOG.INFO,"received file") + logger("fmpxml",logging.INFO,"received file") doc=parseString(data) - zLOG.LOG("fmpxml",zLOG.INFO,"parsed file") + logger("fmpxml",logging.INFO,"parsed file") elif filename: fh=file(filename) - zLOG.LOG("fmpxml",zLOG.INFO,"reading file") + logger("fmpxml",logging.INFO,"reading file") doc=parse(fh) - zLOG.LOG("fmpxml",zLOG.INFO,"parsed file") + logger("fmpxml",logging.INFO,"parsed file") dbIDs = {} rowcnt = 0 @@ -445,7 +445,7 @@ class ZSQLExtendFolder(Folder,Persistent dbIDs[id[0]] = 0; rowcnt += 1 - zLOG.LOG("fmpxml",zLOG.INFO,"%d entries in DB to sync"%rowcnt) + logger("fmpxml",logging.INFO,"%d entries in DB to sync"%rowcnt) fieldNames = [] rowcnt = 0 @@ -471,18 +471,18 @@ class ZSQLExtendFolder(Folder,Persistent # update all fields update_fields = fieldNames - zLOG.LOG("fmpxml fieldnames:",zLOG.INFO,repr(fieldNames)) + logger("fmpxml fieldnames:",logging.INFO,repr(fieldNames)) # get list of fields in db table 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)] # adjust db table to fields in XML and fieldlist for fieldName in fieldNames: - zLOG.LOG("fmpxml fieldname:",zLOG.INFO,repr(fieldName)) + logger("fmpxml fieldname:",logging.INFO,repr(fieldName)) if (fieldName not in columns) and (fieldName in update_fields): qstr="""alter table %s add %s %s""" self.ZSQLSimpleSearch(qstr%(table,fieldName,'text')) - zLOG.LOG("fmpxml add field:",zLOG.INFO,qstr%(table,fieldName,'text')) + logger("fmpxml add field:",logging.INFO,qstr%(table,fieldName,'text')) # ROW tags (in RESULTSET tag) hold data elif node[1].nodeName == 'ROW': @@ -515,7 +515,7 @@ class ZSQLExtendFolder(Folder,Persistent setStr=string.join(setvals, ',') id_val=dataSet[id_field] qstr="""UPDATE %s SET %s WHERE %s = '%s' """%(table,setStr,id_field,id_val) - #zLOG.LOG("fmpxml update:",zLOG.INFO,queryStr) + #logger("fmpxml update:",logging.INFO,queryStr) self.ZSQLSimpleSearch(qstr) ret+="up: %s \n"%id_val else: @@ -524,12 +524,12 @@ class ZSQLExtendFolder(Folder,Persistent values=string.join([" %s "%self.ZSQLQuote(dataSet[x]) for x in update_fields], ',') qstr="""INSERT INTO %s (%s) VALUES (%s)"""%(table,fields,values) self.ZSQLSimpleSearch(qstr) - #zLOG.LOG("fmpxml: insert",zLOG.INFO,queryStr) + #logger("fmpxml: insert",logging.INFO,queryStr) ret+="ad: %s \n"%dataSet.get(id_field, rowcnt) - #zLOG.LOG("fmpxml row:",zLOG.INFO,"%d (%s)"%(rowcnt,id_val)) + #logger("fmpxml row:",logging.INFO,"%d (%s)"%(rowcnt,id_val)) if (rowcnt % 10) == 0: - zLOG.LOG("fmpxml row:",zLOG.INFO,"%d (%s)"%(rowcnt,id_val)) + logger("fmpxml row:",logging.INFO,"%d (%s)"%(rowcnt,id_val)) transaction.commit() transaction.commit() @@ -538,12 +538,12 @@ class ZSQLExtendFolder(Folder,Persistent for id in dbIDs.keys(): # find all not-updated fields if dbIDs[id] == 0: - zLOG.LOG("fmpxml delete:",zLOG.INFO,id) + logger("fmpxml delete:",logging.INFO,id) qstr = "DELETE FROM %s WHERE %s = '%s'" self.ZSQLSimpleSearch(qstr%(table,id_field,id)) elif dbIDs[id] > 1: - zLOG.LOG("fmpxml sync:",zLOG.INFO,"id used more than once?"+id) + logger("fmpxml sync:",logging.INFO,"id used more than once?"+id) transaction.commit() @@ -717,7 +717,7 @@ class ZSQLExtendFolder(Folder,Persistent #print "field",field if not field: return 1 - if field=="": + if field.strip()=="": return 1 return 0 @@ -818,8 +818,9 @@ class ZSQLExtendFolder(Folder,Persistent for result in results: field=getattr(result,fieldName) fieldValue=getattr(result,valueName) - if fieldValue: + if fieldValue: + if not linelen: @@ -906,8 +907,8 @@ class ZSQLExtendFolder(Folder,Persistent #print "INLINE:",argv for a in argTmp.keys(): - aFiltered=re.sub(r"^-","_",a) # beginning of a command should always be "_" - qs.append(aFiltered+"="+urllib.quote(str(argTmp[a]))) + aFiltered=re.sub(r"^-","_",a) # beginning of a command should always be "_" + qs.append(aFiltered+"="+urllib.quote(str(argTmp[a]))) #return [] @@ -1282,7 +1283,7 @@ class ZSQLExtendFolder(Folder,Persistent else: storename="foundCount" qs=self.REQUEST.SESSION[storename]['qs'] - + if args: argv=args @@ -1295,7 +1296,7 @@ class ZSQLExtendFolder(Folder,Persistent arg=argTmp[0:] - if arg[0]=="_":arg="-"+argTmp[1:] # aender _ in - als standard + if arg not in queryList: # noch nicht drin querys.append("%s=%s"%(arg,argv[argTmp])) @@ -1323,7 +1324,7 @@ class ZSQLExtendFolder(Folder,Persistent def parseQueryString(self,qs,iCT,storemax="no",select=None,nostore=None,storename=None,tableExt=None,NoQuery=None,NoLimit=None,restrictField=None,restrictConnect=None,filter=None): """analysieren den QueryString""" - + #setzte generische werte @@ -1344,6 +1345,7 @@ class ZSQLExtendFolder(Folder,Persistent searchFields={} searchFieldsOnly={} queryTemplate=[] + outerjoin="" if not select: select="oid,*" @@ -1429,9 +1431,14 @@ class ZSQLExtendFolder(Folder,Persistent skip="OFFSET "+str(value) rangeStart=str(value) elif name==iCT+"join": + whereList.append(value) + elif name==iCT+"outerjoin": + + outerjoin=value elif name==iCT+"sort": sortstrs=[] + for word in value.split(','): wordstr=word.lstrip().rstrip() if sortAllFields: @@ -1584,7 +1591,7 @@ class ZSQLExtendFolder(Folder,Persistent #print "QE",table #print (select,table,where,sort,maxstr,skip) - query="SELECT %s FROM %s %s %s %s %s"%(select,table,where,sort,maxstr,skip) + query="SELECT %s FROM %s %s %s %s %s %s"%(select,table,outerjoin,where,sort,maxstr,skip) if not nostore=="yes": @@ -1655,7 +1662,7 @@ class ZSQLExtendFolder(Folder,Persistent """query""" if debug: logger("ZSQLQuery", logging.INFO, query) - + return self.ZSQLSimpleSearch(query)