Diff for /ZSQLExtend/ZSQLExtend.py between versions 1.37 and 1.41

version 1.37, 2004/09/27 20:45:45 version 1.41, 2004/10/19 11:24:12
Line 17  def sql_quote(v): Line 17  def sql_quote(v):
     # quote dictionary      # quote dictionary
     quote_dict = {"\'": "''", "\\": "\\\\"}      quote_dict = {"\'": "''", "\\": "\\\\"}
     for dkey in quote_dict.keys():      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])              v=join(split(v,dkey),quote_dict[dkey])
     return "'%s'" % v      return "'%s'" % v
   
Line 243  class ZSQLExtendFolder(Folder,Persistent Line 243  class ZSQLExtendFolder(Folder,Persistent
                   
     def ZSQLInlineSearch(self,storename=None,**argv):      def ZSQLInlineSearch(self,storename=None,**argv):
         """inlinesearch"""          """inlinesearch"""
           
         qs=[]          qs=[]
         if storename:          if storename:
             """store"""              """store"""
Line 253  class ZSQLExtendFolder(Folder,Persistent Line 254  class ZSQLExtendFolder(Folder,Persistent
   
         #print "INLINE:",argv          #print "INLINE:",argv
         for a in argv.keys():          for a in argv.keys():
               try:
             qs.append(a+"="+urllib.quote(str(argv[a])))              qs.append(a+"="+urllib.quote(str(argv[a])))
               except:
                   import urllib
                   qs.append(a+"="+urllib.quote(str(argv[a])))
                   
         #return []            #return []  
         return self.parseQueryString(string.join(qs,","),"_",storename=storename)          return self.parseQueryString(string.join(qs,","),"_",storename=storename)
   
Line 269  class ZSQLExtendFolder(Folder,Persistent Line 275  class ZSQLExtendFolder(Folder,Persistent
   
     def ZSQLSimpleSearch(self,query=None):      def ZSQLSimpleSearch(self,query=None):
         """ returrn SQLSearch"""          """ returrn SQLSearch"""
           #print query
         if not query:          if not query:
             query=self.query              query=self.query
           if getattr(self,'_v_search',None):
                         
         if self.search.meta_type=="Z SQL Method":              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)              return self.search(var=query)
         else:          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)                  return self.aq_parent.aq_parent.search(var=query)
             else:              else:
                   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 []                  return []
           
                   
Line 397  class ZSQLExtendFolder(Folder,Persistent Line 414  class ZSQLExtendFolder(Folder,Persistent
                     ret.append(x)                      ret.append(x)
             return ret              return ret
                   
         #self.REQUEST.SESSION['come_from_search']="no" # zurücksetzen          #self.REQUEST.SESSION['come_from_search']="no" # zuruecksetzen
         if qs=="":          if qs=="":
                         
            if self.REQUEST['QUERY_STRING']:             if self.REQUEST['QUERY_STRING']:
Line 507  class ZSQLExtendFolder(Folder,Persistent Line 524  class ZSQLExtendFolder(Folder,Persistent
         opfields={}          opfields={}
         lopfields={} #Verknüpfung bei mehrfachauswahl von einem feld          lopfields={} #Verknüpfung bei mehrfachauswahl von einem feld
         sortfields={} #order of sortfields          sortfields={} #order of sortfields
           sortAllFields=None
         skip=""          skip=""
         rangeStart=0          rangeStart=0
         limit=0          limit=0
Line 545  class ZSQLExtendFolder(Folder,Persistent Line 563  class ZSQLExtendFolder(Folder,Persistent
                     lopfields[field]=lop                      lopfields[field]=lop
                                           
                 if name[0:10]==iCT+"sortorder":                  if name[0:10]==iCT+"sortorder":
                     sort=value                      #sort=value
   
                     field=name[11:]                      field=name[11:]
                     sortfields[field]=sort                      sortAllFields=None
                       #no field selected
                       if field=="":
                           sortAllFields=value
                       else:
                           sortfields[field]=value
                                           
                     #print "HI",op,field                      #print "HI",op,field
     #print opfieldsa      #print opfieldsa
Line 588  class ZSQLExtendFolder(Folder,Persistent Line 611  class ZSQLExtendFolder(Folder,Persistent
                 sortstrs=[]                  sortstrs=[]
                 for word in value.split(','):                  for word in value.split(','):
                     wordstr=word.lstrip().rstrip()                      wordstr=word.lstrip().rstrip()
                       if sortAllFields:
                           order=sortAllFields
                       else:
                     order=sortfields.get(wordstr,'ASC')                      order=sortfields.get(wordstr,'ASC')
                           
                       if not (wordstr == ""):
                     sortstrs.append(wordstr+" "+order)                      sortstrs.append(wordstr+" "+order)
                 if len(sortstrs)>0:                  if len(sortstrs)>0:
                     sort="ORDER BY "+string.join(sortstrs,',')                      sort="ORDER BY "+string.join(sortstrs,',')
                                   
                       
             elif name==iCT+"token":              elif name==iCT+"token":
                 if not nostore=="yes":                  if not nostore=="yes":
                     self.REQUEST.SESSION['token']=value                      self.REQUEST.SESSION['token']=value
Line 642  class ZSQLExtendFolder(Folder,Persistent Line 671  class ZSQLExtendFolder(Folder,Persistent
                         searchFields[name]=tmp                          searchFields[name]=tmp
                         searchFieldsOnly[name]=value                          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()]          whereList=["("+searchFields[x]+")" for x in searchFields.keys()]
   
         if len(whereList)>0:          if len(whereList)>0:
Line 690  class ZSQLExtendFolder(Folder,Persistent Line 693  class ZSQLExtendFolder(Folder,Persistent
                 where+="and "+restrictConnect[0]+" in ("+restrictConnect[1]+")"                  where+="and "+restrictConnect[0]+" in ("+restrictConnect[1]+")"
                                   
         #print "QE",table          #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)          query="SELECT %s FROM %s %s %s %s %s"%(select,table,where,sort,maxstr,skip)
                   
         if not nostore=="yes":          if not nostore=="yes":
Line 738  class ZSQLExtendFolder(Folder,Persistent Line 741  class ZSQLExtendFolder(Folder,Persistent
                           
     def ZSQLQuery(self,query):      def ZSQLQuery(self,query):
         """query"""          """query"""
           #print "hi",query
         return self.ZSQLSimpleSearch(query)          return self.ZSQLSimpleSearch(query)
           
     def ZSQLSearch(self):      def ZSQLSearch(self):
Line 800  class ZSQLExtendFolder(Folder,Persistent Line 804  class ZSQLExtendFolder(Folder,Persistent
         if self.REQUEST['QUERY_STRING']=="":          if self.REQUEST['QUERY_STRING']=="":
             qs=self.REQUEST.SESSION['query']              qs=self.REQUEST.SESSION['query']
                           
             queries=string.split(qs,",")              queries=string.split(qs,",")[0:]
                           
                           
         else:          else:
             qs=self.REQUEST['QUERY_STRING']              qs=self.REQUEST['QUERY_STRING']
             queries=string.split(qs,"&")              queries=string.split(qs,"&")[0:]
                           
                           
                           
Line 815  class ZSQLExtendFolder(Folder,Persistent Line 819  class ZSQLExtendFolder(Folder,Persistent
                   
         for query in queries:          for query in queries:
                           
             #print query.split("=")[0]              if query[0]=="_" : query="-"+query[1:]
             if query[0]=="_" : query[0]="-"  
   
             if query.split("=")[0].lower()=="-skip":              if query.split("=")[0].lower()=="-skip":
   

Removed from v.1.37  
changed lines
  Added in v.1.41


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>