--- ZSQLExtend/ZSQLExtend.py 2004/10/05 17:48:50 1.39 +++ ZSQLExtend/ZSQLExtend.py 2004/10/21 15:36:53 1.42 @@ -13,6 +13,21 @@ from Products.PageTemplates.PageTemplate from Products.ZSQLMethods.SQL import SQLConnectionIDs import Shared.DC.ZRDB.DA +def analyseIntSearch(word): + #analyse integer searches + + splitted=word.split("-") + print splitted + if splitted[0]=="": + return "< "+splitted[1] + + if splitted[1]=='': + return "> "+splitted[0] + else: + return "BETWEEN "+splitted[0]+" AND "+splitted[1] + + + def sql_quote(v): # quote dictionary quote_dict = {"\'": "''", "\\": "\\\\"} @@ -243,6 +258,7 @@ class ZSQLExtendFolder(Folder,Persistent def ZSQLInlineSearch(self,storename=None,**argv): """inlinesearch""" + qs=[] if storename: """store""" @@ -253,7 +269,12 @@ class ZSQLExtendFolder(Folder,Persistent #print "INLINE:",argv for a in argv.keys(): - qs.append(a+"="+urllib.quote(str(argv[a]))) + try: + qs.append(a+"="+urllib.quote(str(argv[a]))) + except: + import urllib + qs.append(a+"="+urllib.quote(str(argv[a]))) + #return [] return self.parseQueryString(string.join(qs,","),"_",storename=storename) @@ -269,16 +290,27 @@ class ZSQLExtendFolder(Folder,Persistent def ZSQLSimpleSearch(self,query=None): """ returrn SQLSearch""" + #print query if not query: query=self.query - - if self.search.meta_type=="Z SQL Method": + if getattr(self,'_v_search',None): + + return self._v_search(var=query) + + if hasattr(self,'search') and (self.search.meta_type=="Z SQL Method"): + self._v_search=self.search return self.search(var=query) else: - if self.aq_parent.aq_parent.search.meta_type=="Z SQL Method": + if hasattr(self.aq_parent.aq_parent,'search') and (self.aq_parent.aq_parent.search.meta_type=="Z SQL Method"): + self._v_search=self.aq_parent.aq_parent.search return self.aq_parent.aq_parent.search(var=query) else: - return [] + search=self.ZopeFind(self,obj_metatypes=["Z SQL Method"],search_sub=1) + if search: + self._v_search=search[0][1] + return search[0][1](var=query) + else: + return [] @@ -397,7 +429,7 @@ class ZSQLExtendFolder(Folder,Persistent ret.append(x) return ret - #self.REQUEST.SESSION['come_from_search']="no" # zurücksetzen + #self.REQUEST.SESSION['come_from_search']="no" # zuruecksetzen if qs=="": if self.REQUEST['QUERY_STRING']: @@ -507,6 +539,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 @@ -642,7 +675,17 @@ class ZSQLExtendFolder(Folder,Persistent tmps.append(name+" LIKE "+sql_quote("%"+word+"%")) tmp=string.join(tmps,' AND ') - + + elif op=="numerical": + term=analyseIntSearch(value) + tmp=(name+" "+term) + elif op=="one": + tmps=[] + for word in value.split(" "): + tmps.append(name+" LIKE "+sql_quote("%"+word+"%")) + + tmp=string.join(tmps,' OR ') + op="ct" if (not tableExt) or (namealt.split('.')[0]==tableExt): @@ -713,7 +756,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) @@ -723,6 +766,7 @@ class ZSQLExtendFolder(Folder,Persistent def ZSQLQuery(self,query): """query""" + #print "hi",query return self.ZSQLSimpleSearch(query) def ZSQLSearch(self): @@ -767,6 +811,7 @@ class ZSQLExtendFolder(Folder,Persistent def nextLink(self,html,storename="foundCount"): """nextLink""" + print self.REQUEST.SESSION[storename]['rangeSize'] try: limit=self.REQUEST.SESSION[storename]['rangeSize'] if int(limit)==0 : @@ -819,6 +864,7 @@ class ZSQLExtendFolder(Folder,Persistent def prevLink(self,html,storename="foundCount"): """prev link""" + try: limit=self.REQUEST.SESSION[storename]['rangeSize'] if int(limit)==0 :