Diff for /ZSQLExtend/ZSQLExtend.py between versions 1.29 and 1.33

version 1.29, 2004/07/28 15:13:00 version 1.33, 2004/09/12 11:05:43
Line 20  class ZSQLExtendFolder(Folder,Persistent Line 20  class ZSQLExtendFolder(Folder,Persistent
     """Folder"""      """Folder"""
     meta_type="ZSQLExtendFolder"      meta_type="ZSQLExtendFolder"
   
       def testneu(self):
           """test"""
           relStatement="""period like '%s%%'"""
           statement="select * from cdli_cat"
           wherePart="museum_no like 'VAT%'"
           classes=['Uruk III','Uruk IV']
           return self.searchRel(relStatement,statement,wherePart,classes)
       
       def searchRel(self,relStatement,statement,wherePart,classes):
           """suche relative haufigkeiten"""
           ret={}
           allRecords=len(self.ZSQLSimpleSearch(statement + " where "+wherePart))
           print statement + " where "+wherePart
           for oneclass in classes:
               ret[oneclass]=len(self.ZSQLSimpleSearch(statement + " where ("+wherePart+") and "+ relStatement%oneclass))
               print statement + " where ("+wherePart+") and "+ relStatement%oneclass
           return (ret,allRecords)
                     
     def content_html(self):      def content_html(self):
         """template fuer content"""          """template fuer content"""
                   
Line 162  class ZSQLExtendFolder(Folder,Persistent Line 180  class ZSQLExtendFolder(Folder,Persistent
         return ret          return ret
   
   
     def ZSQLOptionsFromCRList(self,fieldname,listField):      def ZSQLOptionsFromCRList(self,fieldname,listField, multiple=''):
         """generate select oprions form a cr seperated list"""          """generate select oprions form a cr seperated list"""
         fields=listField.split("\n")          fields=listField.split("\n")
         ret="""<select name="%s">          ret="""<select name="%s" %s>
             """%fieldname              """%(fieldname,multiple)
         for field in fields:          for field in fields:
             ret+="""<option value="%s">%s</option>"""%(field.encode('utf-8'),field.encode('utf-8'))              ret+="""<option value="%s">%s</option>"""%(field.encode('utf-8'),field.encode('utf-8'))
         ret+="""</select>"""          ret+="""</select>"""
         return ret          return ret
   
     def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None):      def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None, multiple='',startValue=None):
         """generate select oprions form a cr seperated list"""          """generate select oprions form a search list seperated list"""
         if not valueName:          if not valueName:
             valueName=fieldName              valueName=fieldName
                           
         ret="""<select name="%s">          ret="""<select name="%s" %s>
             """%fieldname              """%(fieldname,multiple)
         if start:          if start:
         if start==' ':          if start==' ':
         start=''          start=''
             ret+="""<option value="%s">%s</option>"""%(start,start)                  if not startValue:
                       startValue=start
                       
               ret+="""<option value="%s">%s</option>"""%(startValue,start)
         for result in results:          for result in results:
             field=getattr(result,fieldName)              field=getattr(result,fieldName)
             fieldValue=getattr(result,valueName)              fieldValue=getattr(result,valueName)
Line 341  class ZSQLExtendFolder(Folder,Persistent Line 362  class ZSQLExtendFolder(Folder,Persistent
         self.ZSQLSimpleSearch(queryString)          self.ZSQLSimpleSearch(queryString)
         return self.REQUEST.RESPONSE.redirect(format)          return self.REQUEST.RESPONSE.redirect(format)
           
     def ZSQLFind(self,qs="",select="oid,*",storename=None,**argv):  
   
       def ZSQLFind2(self,qs="",select="oid,*",storename=None,tableList=['cdli_translit','cdli_cat'],**argv):
           """find2"""
           #search1= self.ZSQLFind(qs="",select="oid,*",storename=None,tableExt='cdli_translit',restrictField='id_text',NoQuery='yes',NoLimit='yes',**argv)
   
           
           #search2 = self.ZSQLFind(tableExt='cdli_cat',qs="",select="oid,*",storename=None,restrictConnect=('cdli_cat.id_text',search1),**argv)
   
           search1= self.ZSQLFind(qs="",select="oid,*",storename=None,tableExt='cdli_cat',restrictField='id_text',NoQuery='yes',NoLimit='yes',**argv)
   
           search2 = self.ZSQLFind(tableExt='cdli_translit',qs="",select="oid,*",storename=None,restrictConnect=('cdli_translit.id_text',search1),**argv)
           return search2
       
           #return self.ZSQLFind(qs="",select="oid,*",storename=None,tableExt=None,NoQuery=None,**argv)
       
       def ZSQLFind(self,qs="",select="oid,*",storename=None,tableExt=None,NoQuery=None,NoLimit=None,restrictField=None,restrictConnect=None,filter=None,**argv):
         """Find"""          """Find"""
   
         def delEmpty(list):          def delEmpty(list):
Line 352  class ZSQLExtendFolder(Folder,Persistent Line 389  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" # zurücksetzen
         if qs=="":          if qs=="":
              
            if self.REQUEST['QUERY_STRING']:             if self.REQUEST['QUERY_STRING']:
                qs=self.REQUEST['QUERY_STRING']                 qs=self.REQUEST['QUERY_STRING']
                                 
Line 363  class ZSQLExtendFolder(Folder,Persistent Line 401  class ZSQLExtendFolder(Folder,Persistent
                for field in argv.keys():                 for field in argv.keys():
                                         
                    qs+=",-%s=%s"%(field,argv[field])                     qs+=",-%s=%s"%(field,argv[field])
                #print qs                     
            else:             else:
                                 
                qs=self.REQUEST.SESSION.get('query','')                 qs=self.REQUEST.SESSION.get('query','')
Line 389  class ZSQLExtendFolder(Folder,Persistent Line 427  class ZSQLExtendFolder(Folder,Persistent
             storename="foundCount"              storename="foundCount"
   
   
                   #print "calling Query with",repr(NoQuery)
         ret=self.parseQueryString(qs,"-",select=select,storemax="yes",storename=storename)          ret=self.parseQueryString(qs,"-",select=select,storemax="yes",storename=storename,tableExt=tableExt,NoQuery=NoQuery,NoLimit=NoLimit,restrictField=restrictField,restrictConnect=restrictConnect,filter=filter)
         #print self.REQUEST.SESSION["foundCount"]          #print self.REQUEST.SESSION["foundCount"]
                   
                   
Line 449  class ZSQLExtendFolder(Folder,Persistent Line 487  class ZSQLExtendFolder(Folder,Persistent
                   
         return str(min(int(self.REQUEST.SESSION[storename]['rangeEnd']),int(self.REQUEST.SESSION[storename]['count'])))          return str(min(int(self.REQUEST.SESSION[storename]['rangeEnd']),int(self.REQUEST.SESSION[storename]['count'])))
           
     def parseQueryString(self,qs,iCT,storemax="no",select=None,nostore=None,storename=None):      def parseQueryString(self,qs,iCT,storemax="no",select=None,nostore=None,storename=None,tableExt=None,NoQuery=None,NoLimit=None,restrictField=None,restrictConnect=None,filter=None):
         """analysieren den QueryString"""          """analysieren den QueryString"""
         #print "NO",nostore          #print "NO",nostore
         lop="AND" # standardsuche mit and          lop="AND" # standardsuche mit and
Line 459  class ZSQLExtendFolder(Folder,Persistent Line 497  class ZSQLExtendFolder(Folder,Persistent
         sort=""          sort=""
         op="bw"          op="bw"
         opfields={}          opfields={}
           lopfields={} #Verknüpfung bei mehrfachauswahl von einem feld
         skip=""          skip=""
         rangeStart=0          rangeStart=0
         limit=0          limit=0
         searchFields={}          searchFields={}
                   searchFieldsOnly={}
         if not select:          if not select:
             select="oid,*"              select="oid,*"
         #print "Q",nostore,qs          #print "Q",nostore,qs
         #check for op in the case of inline search          #check for op 
                   
     splitted=qs.split(",")      splitted=qs.split(",")
           if tableExt:
               table=tableExt
           
           if restrictField:
                       select=restrictField
                           
         for q in splitted:          for q in splitted:
                                   
Line 485  class ZSQLExtendFolder(Folder,Persistent Line 528  class ZSQLExtendFolder(Folder,Persistent
   
                     field=name[4:]                      field=name[4:]
                     opfields[field]=op                      opfields[field]=op
   
                   if name[0:4]==iCT+"lop":
                       lop=value
   
                       field=name[5:]
                       lopfields[field]=lop
                     #print "HI",op,field                      #print "HI",op,field
     #print opfieldsa      #print opfieldsa
         #now analyse the querystring          #now analyse the querystring
Line 505  class ZSQLExtendFolder(Folder,Persistent Line 554  class ZSQLExtendFolder(Folder,Persistent
             if name==iCT+"lop":              if name==iCT+"lop":
                 lop=value                  lop=value
             elif name==iCT+"table":              elif name==iCT+"table":
                   if not tableExt: 
                 table=value                  table=value
             elif name==iCT+"select":              elif name==iCT+"select":
                   if not restrictField:
                 select=value                  select=value
             elif name==iCT+"max":              elif name==iCT+"max":
                   if not NoLimit:
                 maxstr="LIMIT "+str(value)                  maxstr="LIMIT "+str(value)
                 limit=str(value)                  limit=str(value)
             elif name==iCT+"skip":              elif name==iCT+"skip":
Line 517  class ZSQLExtendFolder(Folder,Persistent Line 569  class ZSQLExtendFolder(Folder,Persistent
             elif name==iCT+"join":              elif name==iCT+"join":
                 whereList.append(value)                  whereList.append(value)
             elif name==iCT+"sort":              elif name==iCT+"sort":
                 sort="ORDER BY "+value                  sort="ORDER BY "+value.replace(' AND ',',')
             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 531  class ZSQLExtendFolder(Folder,Persistent Line 583  class ZSQLExtendFolder(Folder,Persistent
                                   
         #print "OP",op,name          #print "OP",op,name
                 value=value.lower()                  value=value.lower()
                   tmp=""
                 searchFields[name]=value  
                   
                 if opfields.has_key(name):                  if opfields.has_key(name):
                     op=opfields[name]                      op=opfields[name]
         else:          else:
             op="ct"              op="ct"
                   namealt=name
         name="LOWER("+name+")"              name="LOWER("+name+")"    
                 if op=="ct":                  if op=="ct":
                     whereList.append(name+" LIKE "+libpq.PgQuoteString("%"+value+"%"))                      tmp=(name+" LIKE "+libpq.PgQuoteString("%"+value+"%"))
                 elif op=="gt":                  elif op=="gt":
                     whereList.append(name+">"+libpq.PgQuoteString(value))                      tmp=(name+">"+libpq.PgQuoteString(value))
                 elif op=="lt":                  elif op=="lt":
                     whereList.append(name+"<"+libpq.PgQuoteString(value))                      tmp=(name+"<"+libpq.PgQuoteString(value))
                 elif op=="eq":                  elif op=="eq":
                     whereList.append(name+"="+libpq.PgQuoteString(value))                      tmp=(name+"="+libpq.PgQuoteString(value))
                 elif op=="bw":                  elif op=="bw":
                     whereList.append(name+" LIKE "+libpq.PgQuoteString(value+"%"))                      tmp=(name+" LIKE "+libpq.PgQuoteString(value+"%"))
                 elif op=="ew":                  elif op=="ew":
                     whereList.append(name+" LIKE "+libpq.PgQuoteString("%"+value))                      tmp=(name+" LIKE "+libpq.PgQuoteString("%"+value))
                 op="ct"                  op="ct"
                           
             #except:                  if (not tableExt) or (namealt.split('.')[0]==tableExt):
             #    print "END",value,name,Exception                             if searchFields.has_key(name):
                           searchFields[name]+=lopfields.get(name,'OR')+" "+tmp
                           searchFieldsOnly[name]+=lopfields.get(name,'OR')+" "+value
                       else: 
                           searchFields[name]=tmp
                           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 "+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:          if len(whereList)>0:
             where="WHERE "+string.join(whereList," "+lop+" ")              if filter:
                   whereStr="("+string.join(whereList," "+lop+" ")+") AND "+filter
               else:
                   whereStr=string.join(whereList," "+lop+" ")
               where="WHERE "+whereStr
           else:
               if filter:
                   where="WHERE "+filter
         else:          else:
             where=""              where=""
   
           if restrictConnect:
               
               if len(where)==0:
                   where="WHERE "+restrictConnect[0]+" in ("+restrictConnect[1]+")"
               else:
                   where+="and "+restrictConnect[0]+" in ("+restrictConnect[1]+")"
                   
         #print "QE",table          #print "QE",table
                   
         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)
Line 568  class ZSQLExtendFolder(Folder,Persistent Line 668  class ZSQLExtendFolder(Folder,Persistent
             self.REQUEST.SESSION['qs']=opfields              self.REQUEST.SESSION['qs']=opfields
         #print "IAMHERE again:", query          #print "IAMHERE again:", query
   
         if storename:          if storename and (not NoQuery):
             query2="SELECT count(*) FROM %s %s"%(table,where)              query2="SELECT count(*) FROM %s %s"%(table,where)
             #print "storing",query2  
             #print "QUERYSTRING:",self.REQUEST.SESSION[storename]['queryString2']              #print "QUERYSTRING:",self.REQUEST.SESSION[storename]['queryString2']
             if not self.REQUEST.SESSION.has_key(storename):              if not self.REQUEST.SESSION.has_key(storename):
                 self.REQUEST.SESSION[storename]={}                  self.REQUEST.SESSION[storename]={}
             if self.REQUEST.SESSION[storename].has_key('queryString2'):              if self.REQUEST.SESSION[storename].has_key('queryString2'):
                 #print "HI",storename  
                 if not self.REQUEST.SESSION[storename]['queryString2']==query2:                  if not self.REQUEST.SESSION[storename]['queryString2']==query2:
                     #print "HOOOOO",storename                      #print "HOOOOO",storename
                     self.REQUEST.SESSION[storename]['queryString2']=query2                      self.REQUEST.SESSION[storename]['queryString2']=query2
                     self.REQUEST.SESSION[storename]['count']=self.ZSQLSimpleSearch(query2)[0].count                      self.REQUEST.SESSION[storename]['count']=self.ZSQLSimpleSearch(query2)[0].count
   
                     #print "QUERY",query2,"::::",self.REQUEST.SESSION[storename]['queryString2']                      #print "QUERY",query2,"::::",self.REQUEST.SESSION[storename]['queryString2']
                                   
             else:              else:
   
                 self.REQUEST.SESSION[storename]['queryString2']=query2                  self.REQUEST.SESSION[storename]['queryString2']=query2
                 self.REQUEST.SESSION[storename]['count']=self.ZSQLSimpleSearch(query2)[0].count                  self.REQUEST.SESSION[storename]['count']=self.ZSQLSimpleSearch(query2)[0].count
                 #print "QUERYNEW",self.REQUEST.SESSION[storename]['queryString2']                  #print "QUERYNEW",self.REQUEST.SESSION[storename]['queryString2']
Line 595  class ZSQLExtendFolder(Folder,Persistent Line 697  class ZSQLExtendFolder(Folder,Persistent
                 self.REQUEST.SESSION[storename]['rangeEnd']=int(rangeStart)+int(limit)                  self.REQUEST.SESSION[storename]['rangeEnd']=int(rangeStart)+int(limit)
             self.REQUEST.SESSION[storename]['rangeSize']=limit              self.REQUEST.SESSION[storename]['rangeSize']=limit
             self.REQUEST.SESSION[storename]['searchFields']=searchFields              self.REQUEST.SESSION[storename]['searchFields']=searchFields
               self.REQUEST.SESSION[storename]['searchFieldsOnly']=searchFieldsOnly
                           
           if not NoQuery:
                   
         return self.ZSQLQuery(query)          return self.ZSQLQuery(query)
           else:
   
               return query
   
     def ZSQLQuery(self,query):      def ZSQLQuery(self,query):
         """query"""          """query"""
Line 617  class ZSQLExtendFolder(Folder,Persistent Line 724  class ZSQLExtendFolder(Folder,Persistent
             except:              except:
                 """nothing"""                  """nothing"""
         #print formatfile                  #print formatfile        
           
         self.REQUEST.SESSION['query']=string.join(self.REQUEST['QUERY_STRING'].split("&"),",")          self.REQUEST.SESSION['query']=string.join(self.REQUEST['QUERY_STRING'].split("&"),",")
         self.REQUEST.SESSION['come_from_search']="yes"          self.REQUEST.SESSION['come_from_search']="yes"
                   
Line 633  class ZSQLExtendFolder(Folder,Persistent Line 741  class ZSQLExtendFolder(Folder,Persistent
     def getZSQLSearchFieldsList(self,storename="foundCount"):      def getZSQLSearchFieldsList(self,storename="foundCount"):
         """get searchfieldList"""          """get searchfieldList"""
         #print self.REQUEST.SESSION[storename]['searchFields'].keys()          #print self.REQUEST.SESSION[storename]['searchFields'].keys()
         return  self.REQUEST.SESSION[storename]['searchFields'].keys()          return  self.REQUEST.SESSION[storename]['searchFieldsOnly'].keys()
   
     def getZSQLSearchFields(self,storename="foundCount"):      def getZSQLSearchFields(self,field,storename="foundCount"):
         """get searchfield"""          """get searchfield"""
         #print "SF",self.REQUEST.SESSION[storename]['searchFields']          #print "SF",self.REQUEST.SESSION[storename]['searchFields']
         return  self.REQUEST.SESSION[storename]['searchFields']          
           return  self.REQUEST.SESSION[storename]['searchFieldsOnly'][field]
   
                                                                                                   
     def nextLink(self,html,storename="foundCount"):      def nextLink(self,html,storename="foundCount"):

Removed from v.1.29  
changed lines
  Added in v.1.33


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