--- ZSQLExtend/ZSQLExtend.py 2004/09/27 20:45:45 1.37 +++ ZSQLExtend/ZSQLExtend.py 2004/10/06 10:51:07 1.40 @@ -17,7 +17,7 @@ def sql_quote(v): # quote dictionary quote_dict = {"\'": "''", "\\": "\\\\"} for dkey in quote_dict.keys(): - if find(v, dkey) >= 0: + if string.find(v, dkey) >= 0: v=join(split(v,dkey),quote_dict[dkey]) return "'%s'" % v @@ -507,6 +507,7 @@ class ZSQLExtendFolder(Folder,Persistent opfields={} lopfields={} #Verknüpfung bei mehrfachauswahl von einem feld sortfields={} #order of sortfields + sortAllFields=None skip="" rangeStart=0 limit=0 @@ -545,10 +546,15 @@ class ZSQLExtendFolder(Folder,Persistent lopfields[field]=lop if name[0:10]==iCT+"sortorder": - sort=value - + #sort=value + field=name[11:] - sortfields[field]=sort + sortAllFields=None + #no field selected + if field=="": + sortAllFields=value + else: + sortfields[field]=value #print "HI",op,field #print opfieldsa @@ -588,11 +594,17 @@ class ZSQLExtendFolder(Folder,Persistent sortstrs=[] for word in value.split(','): wordstr=word.lstrip().rstrip() - order=sortfields.get(wordstr,'ASC') - sortstrs.append(wordstr+" "+order) + if sortAllFields: + order=sortAllFields + else: + order=sortfields.get(wordstr,'ASC') + + if not (wordstr == ""): + sortstrs.append(wordstr+" "+order) if len(sortstrs)>0: sort="ORDER BY "+string.join(sortstrs,',') - + + elif name==iCT+"token": if not nostore=="yes": self.REQUEST.SESSION['token']=value @@ -642,32 +654,6 @@ class ZSQLExtendFolder(Folder,Persistent searchFields[name]=tmp searchFieldsOnly[name]=value - - ## for name in searchFields.keys(): -## value=searchFields[name] - -## if opfields.has_key(name): -## op=opfields[name] -## else: -## op="ct" -## name="LOWER("+name+")" -## if op=="ct": -## whereList.append(name+" LIKE "+sql_quote("%"+value+"%")) -## elif op=="gt": -## whereList.append(name+">"+sql_quote(value)) -## elif op=="lt": -## whereList.append(name+"<"+sql_quote(value)) -## elif op=="eq": -## whereList.append(name+"="+sql_quote(value)) -## elif op=="bw": -## whereList.append(name+" LIKE "+sql_quote(value+"%")) -## elif op=="ew": -## whereList.append(name+" LIKE "+sql_quote("%"+value)) -## op="ct" - -## #except: -## # print "END",value,name,Exception - whereList=["("+searchFields[x]+")" for x in searchFields.keys()] if len(whereList)>0: @@ -690,7 +676,7 @@ class ZSQLExtendFolder(Folder,Persistent where+="and "+restrictConnect[0]+" in ("+restrictConnect[1]+")" #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) if not nostore=="yes": @@ -728,7 +714,7 @@ class ZSQLExtendFolder(Folder,Persistent self.REQUEST.SESSION[storename]['rangeSize']=limit self.REQUEST.SESSION[storename]['searchFields']=searchFields self.REQUEST.SESSION[storename]['searchFieldsOnly']=searchFieldsOnly - + #print "QS", query if not NoQuery: return self.ZSQLQuery(query) @@ -800,12 +786,12 @@ class ZSQLExtendFolder(Folder,Persistent if self.REQUEST['QUERY_STRING']=="": qs=self.REQUEST.SESSION['query'] - queries=string.split(qs,",") + queries=string.split(qs,",")[0:] else: qs=self.REQUEST['QUERY_STRING'] - queries=string.split(qs,"&") + queries=string.split(qs,"&")[0:] @@ -814,10 +800,9 @@ class ZSQLExtendFolder(Folder,Persistent skipFound=0 for query in queries: + + if query[0]=="_" : query="-"+query[1:] - #print query.split("=")[0] - if query[0]=="_" : query[0]="-" - if query.split("=")[0].lower()=="-skip": skipFound=1