--- ZSQLExtend/ZSQLExtend.py 2003/11/28 15:03:10 1.1 +++ ZSQLExtend/ZSQLExtend.py 2003/12/03 17:38:43 1.2 @@ -7,6 +7,11 @@ import re import string from AccessControl import getSecurityManager +def quoteString(name): + #return re.sub(r'([\(\)\?])',"\\\1",name) + #return "Euklid" + return name + class ZSQLExtendFolder(Persistent, Implicit, Folder): """Folder""" meta_type="ZSQLExtendFolder" @@ -15,7 +20,9 @@ class ZSQLExtendFolder(Persistent, Impli """inlinesearch""" qs=[] - + + + for a in argv.keys(): qs.append(a+"="+urllib.quote(str(argv[a]))) @@ -102,16 +109,29 @@ class ZSQLExtendFolder(Persistent, Impli whereList=[] sort="" op="bw" - + opfields={} + if not select: select="*" - + + #check for op in the case of inline search + if iCT=="_": + for q in qs.split(","): + name=re.sub("r'+'"," ",q.split("=")[0].lower()) + value=urllib.unquote(q.split("=")[1]) + + if name[0:3]==iCT+"op": + op=value + field=name[4:] + opfields[field]=op + + #now analyse the querystring for q in qs.split(","): try: name=re.sub("r'+'"," ",q.split("=")[0].lower()) value=urllib.unquote(q.split("=")[1]) - + value=quoteString(value) if name==iCT+"lop": lop=value elif name==iCT+"table": @@ -130,8 +150,12 @@ class ZSQLExtendFolder(Persistent, Impli elif name==iCT+"op": op=value + + elif (not name[0]==iCT) and (not len(value)==0): + if opfields.has_key(name): + op=opfields[name] if op=="ct": whereList.append(name+"~\'.*"+value+".*\'") elif op=="gt": @@ -155,6 +179,7 @@ class ZSQLExtendFolder(Persistent, Impli query="SELECT %s FROM %s %s %s"%(select,table,where,sort) + self.REQUEST.SESSION['qs']=opfields return self.search(var=query) def ZSQLSearch(self):