--- ZSQLExtend/ZSQLExtend.py 2004/07/28 15:13:00 1.29 +++ ZSQLExtend/ZSQLExtend.py 2004/08/04 11:02:39 1.30 @@ -162,23 +162,23 @@ class ZSQLExtendFolder(Folder,Persistent return ret - def ZSQLOptionsFromCRList(self,fieldname,listField): + def ZSQLOptionsFromCRList(self,fieldname,listField, multiple=''): """generate select oprions form a cr seperated list""" fields=listField.split("\n") - ret=""" + """%(fieldname,multiple) for field in fields: ret+=""""""%(field.encode('utf-8'),field.encode('utf-8')) ret+="""""" return ret - def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None): + def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None, multiple=''): """generate select oprions form a cr seperated list""" if not valueName: valueName=fieldName - ret=""" + """%(fieldname,multiple) if start: if start==' ': start='' @@ -363,7 +363,7 @@ class ZSQLExtendFolder(Folder,Persistent for field in argv.keys(): qs+=",-%s=%s"%(field,argv[field]) - #print qs + else: qs=self.REQUEST.SESSION.get('query','') @@ -389,7 +389,7 @@ class ZSQLExtendFolder(Folder,Persistent storename="foundCount" - + ret=self.parseQueryString(qs,"-",select=select,storemax="yes",storename=storename) #print self.REQUEST.SESSION["foundCount"] @@ -459,6 +459,7 @@ class ZSQLExtendFolder(Folder,Persistent sort="" op="bw" opfields={} + lopfields={} #Verknüpfung bei mehrfachauswahl von einem feld skip="" rangeStart=0 limit=0 @@ -467,7 +468,7 @@ class ZSQLExtendFolder(Folder,Persistent if not select: select="oid,*" #print "Q",nostore,qs - #check for op in the case of inline search + #check for op splitted=qs.split(",") @@ -485,6 +486,12 @@ class ZSQLExtendFolder(Folder,Persistent field=name[4:] opfields[field]=op + + if name[0:4]==iCT+"lop": + lop=value + + field=name[5:] + lopfields[field]=lop #print "HI",op,field #print opfieldsa #now analyse the querystring @@ -517,7 +524,7 @@ class ZSQLExtendFolder(Folder,Persistent elif name==iCT+"join": whereList.append(value) elif name==iCT+"sort": - sort="ORDER BY "+value + sort="ORDER BY "+value.replace(' AND ',',') elif name==iCT+"token": if not nostore=="yes": self.REQUEST.SESSION['token']=value @@ -531,30 +538,59 @@ class ZSQLExtendFolder(Folder,Persistent #print "OP",op,name value=value.lower() - - searchFields[name]=value - + tmp="" if opfields.has_key(name): op=opfields[name] - else: - op="ct" - name="LOWER("+name+")" + else: + op="ct" + name="LOWER("+name+")" if op=="ct": - whereList.append(name+" LIKE "+libpq.PgQuoteString("%"+value+"%")) + tmp=(name+" LIKE "+libpq.PgQuoteString("%"+value+"%")) elif op=="gt": - whereList.append(name+">"+libpq.PgQuoteString(value)) + tmp=(name+">"+libpq.PgQuoteString(value)) elif op=="lt": - whereList.append(name+"<"+libpq.PgQuoteString(value)) + tmp=(name+"<"+libpq.PgQuoteString(value)) elif op=="eq": - whereList.append(name+"="+libpq.PgQuoteString(value)) + tmp=(name+"="+libpq.PgQuoteString(value)) elif op=="bw": - whereList.append(name+" LIKE "+libpq.PgQuoteString(value+"%")) + tmp=(name+" LIKE "+libpq.PgQuoteString(value+"%")) elif op=="ew": - whereList.append(name+" LIKE "+libpq.PgQuoteString("%"+value)) + tmp=(name+" LIKE "+libpq.PgQuoteString("%"+value)) op="ct" + + if searchFields.has_key(name): + searchFields[name]+=lopfields.get(name,'OR')+" "+tmp + else: + searchFields[name]=tmp + - #except: - # print "END",value,name,Exception + ## 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 "+libpq.PgQuoteString("%"+value+"%")) +## elif op=="gt": +## whereList.append(name+">"+libpq.PgQuoteString(value)) +## elif op=="lt": +## whereList.append(name+"<"+libpq.PgQuoteString(value)) +## elif op=="eq": +## whereList.append(name+"="+libpq.PgQuoteString(value)) +## elif op=="bw": +## whereList.append(name+" LIKE "+libpq.PgQuoteString(value+"%")) +## elif op=="ew": +## whereList.append(name+" LIKE "+libpq.PgQuoteString("%"+value)) +## op="ct" + +## #except: +## # print "END",value,name,Exception + + whereList=["("+searchFields[x]+")" for x in searchFields.keys()] + if len(whereList)>0: where="WHERE "+string.join(whereList," "+lop+" ") else: @@ -596,7 +632,7 @@ class ZSQLExtendFolder(Folder,Persistent self.REQUEST.SESSION[storename]['rangeSize']=limit self.REQUEST.SESSION[storename]['searchFields']=searchFields - + return self.ZSQLQuery(query) def ZSQLQuery(self,query): @@ -616,7 +652,8 @@ class ZSQLExtendFolder(Folder,Persistent formatfile=query[1] except: """nothing""" - #print formatfile + #print formatfile + self.REQUEST.SESSION['query']=string.join(self.REQUEST['QUERY_STRING'].split("&"),",") self.REQUEST.SESSION['come_from_search']="yes"