--- ZSQLExtend/ZSQLExtend.py 2007/04/18 15:09:52 1.111 +++ ZSQLExtend/ZSQLExtend.py 2007/04/19 20:29:59 1.112 @@ -623,6 +623,63 @@ class ZSQLExtendFolder(Folder,Persistent return 1 return 0 + def ZSQLMultiSearch(self,_table,_searchField,_value,_idField,_additionalStatement="",_select=None,_storename=None): + """ + Durchsucht in einer Tabelle "table" die Spalte "searchfield" nach dem allen Vorkommnissen + von Worten in value und gibt alle Werte mit gleichem id field zurŸck, d.h. es wird die "und" suche realisiert, + z.B. fŸr simplesearch ueber mehrere Felder + """ + if _storename: + """store""" + else: + _storename="foundCount" + + queries=[] + #baue jede einzelne abfrage + splitted=_value.split(" ") + if not _select: + _select=_idField + + queries.append("select %s from %s %s where %s like '%%%s%%'"%(_select,_table,_additionalStatement,_searchField,splitted[0])) + + if len(splitted)>1: + for v in splitted[1:]: + queries.append("select %s from %s where %s like '%%%s%%'"%(_idField,_table,_searchField,v)) + + q=" and %s in ("%_idField + query=q.join(queries) # nun baue sie zusammen + for i in range(len(queries)-1): + query+=")" #noch die klammern schliessen + + + if _additionalStatement: + query=query+" " + + logging.info("ZSQLSimple: %s"%query) + retT=self.ZSQLSimpleSearch(query) + logging.info("ZSQLSimple: %s"%retT) + + retFinalT={} + for x in retT: + split=_idField.split(".") + if len(split)>1: + f=split[1] + else: + f=_idField + + retFinalT[getattr(x,f)]=x + + ret=list(retFinalT.values()) + + + + if not self.REQUEST.SESSION.has_key(_storename): + self.REQUEST.SESSION[_storename]={} + + self.REQUEST.SESSION[_storename]['searchFieldsOnly']={} + self.REQUEST.SESSION[_storename]['qs']=query + return ret + def ZSQLsearchOptions(self,fieldname=""): """return HTML Fragment with search options""" @@ -829,7 +886,7 @@ class ZSQLExtendFolder(Folder,Persistent if x: value=x else: - + value=str(argTmp[a]) qs.append(aFiltered+"="+urllib.quote(value)) @@ -1185,9 +1242,11 @@ class ZSQLExtendFolder(Folder,Persistent for query in querys: arg=query.split("=")[0] if arg[0]=="_": arg="-"+arg[1:] # sicherstellen, dass an Anfang stets "_" - queryList[arg]=query.split("=")[1] - - + try: + queryList[arg]=query.split("=")[1] + except: + queryList[arg]='' + argList=[] arg=""