Diff for /ZSQLExtend/ZSQLExtend.py between versions 1.114 and 1.130

version 1.114, 2007/04/20 06:36:01 version 1.130, 2009/09/23 12:30:50
Line 56  def analyseIntSearch(word): Line 56  def analyseIntSearch(word):
     else:      else:
         return "BETWEEN "+splitted[0]+" AND "+splitted[1]          return "BETWEEN "+splitted[0]+" AND "+splitted[1]
   
   def unicodify(str):
       """decode str (utf-8 or latin-1 representation) into unicode object"""
       if not str:
           return u""
       if type(str) is StringType:
           try:
               return str.decode('utf-8')
           except:
               return str.decode('latin-1')
       else:
           return str
   
   def utf8ify(str):
       """encode unicode object or string into byte string in utf-8 representation"""
       if not str:
           return ""
       if type(str) is StringType:
           return str
       else:
           return str.encode('utf-8')
   
   
   def setPsycopg2UseUnicode():
       """force Psycopg2DA to return unicode objects"""
       try:
           import psycopg2
           import psycopg2.extensions
           psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
       except:
           logging.error("Unable to force psycopg2 to use unicode")
                   
   
 def sql_quote(v):  def sql_quote(v):
Line 97  class ZSQLExtendFolder(Folder,Persistent Line 127  class ZSQLExtendFolder(Folder,Persistent
         """quote str for sql"""          """quote str for sql"""
         return sql_quote(str)          return sql_quote(str)
           
       def unicodify(self, s):
           """return unicode object for string (utf-8 or latin1) or unicode object s"""
           return unicodify(s)
       
       def utf8ify(self, s):
           """return utf-8 encoded string object for string or unicode object s"""
           return utf8ify(s)
   
           
     def normalizeField(self,table,fieldname, newFieldName=None,mode="alter", RESPONSE=None):      def normalizeField(self,table,fieldname, newFieldName=None,mode="alter", RESPONSE=None):
         """normalize a field, d.h. entfernt alle diakritischen Zeichen und ersetzt diese           """normalize a field, d.h. entfernt alle diakritischen Zeichen und ersetzt diese 
Line 314  class ZSQLExtendFolder(Folder,Persistent Line 352  class ZSQLExtendFolder(Folder,Persistent
                         logger("update xml",logging.INFO,queryStr)                          logger("update xml",logging.INFO,queryStr)
                         self.ZSQLSimpleSearch(queryStr)                          self.ZSQLSimpleSearch(queryStr)
                         ret+="ud: %s \n"%field                          ret+="ud: %s \n"%field
                     else:  
   
                                                 
                       else:
                         fields=",".join(dataSet.keys())                          fields=",".join(dataSet.keys())
                         values=",".join([""" %s """%self.ZSQLQuote(dataSet[x]) for x in dataSet.keys()])                          values=",".join([""" %s """%self.ZSQLQuote(dataSet[x]) for x in dataSet.keys()])
                                       
Line 325  class ZSQLExtendFolder(Folder,Persistent Line 362  class ZSQLExtendFolder(Folder,Persistent
                         self.ZSQLSimpleSearch(queryStr)                          self.ZSQLSimpleSearch(queryStr)
                         logger("update xml",logging.INFO,queryStr)                          logger("update xml",logging.INFO,queryStr)
                                                   
                           
                           
             
         return ret          return ret
                   
           
     def importXMLFile(self,table,containerTagName,fieldNames,data=None,identify=None,filename=None,RESPONSE=None):      def importXMLFileFMP(self,table,dsn=None,uploadfile=None,update_fields=None,id_field=None,sync_mode=False,
         #TODO: finish importXMLFile                           lc_names=True,keep_fields=False,ascii_db=False,replace=False,backup=False,
         '''                           debug=False,log_to_response=False,
         Import XML file into the table                           redirect_url=None,RESPONSE=None):
         @param table: name of the table the xml shall be imported into  
         @param containerTagName: XML-Tag which describes a dataset  
         @param file: xmlfile handle  
         @param identify: (optional) field res. tag which identifies a entry uniquely for updating purposes.  
         @param RESPONSE: (optional)  
         '''  
         ret=""  
         from xml.dom.pulldom import parseString  
   
         doc=parseString(file.read())  
         while 1:  
             node=doc.getEvent()  
           
             if node is None:  
                 break;  
             else:  
                 if node[1].nodeName==containerTagName:  
                     doc.expandNode(node[1])  
                     cols=node[1].getElementsByTagName('COL')  
                     dataSet=[]  
                     for col in cols:  
                         data=col.getElementsByTagName('DATA')  
                         dataSet.append(getTextFromNode(data[0]))  
                     update=False  
                     if identify:  
   
                         nr=fieldNames.index(identify)  
                         field=dataSet[nr]  
   
                         searchStr="""select %s from %s where %s = '%s'"""%(identify,table,identify,field)  
                         logger("import xml",logging.INFO,searchStr)  
                         search=self.ZSQLSimpleSearch(searchStr)  
                         if search:  
                             update=True  
                       
                     if update:  
                         tmp=[]  
                         for fieldName in fieldNames:  
                             tmp.append("""%s = %s"""%(fieldName,self.ZSQLQuote(dataSet[fieldNames.index(fieldName)])))  
                         setStr=",".join(tmp)  
                         nr=fieldNames.index(identify)  
                         field=dataSet[nr]  
                     
                         queryStr="""UPDATE %s SET %s WHERE %s = '%s' """%(table,setStr,identify,field)  
                         logger("update xml",logging.INFO,queryStr)  
                         self.ZSQLSimpleSearch(queryStr)  
                         ret+="ud: %s \n"%field  
                     else:  
   
                          
                         fields=",".join(fieldNames)  
                         values=",".join([""" %s """%self.ZSQLQuote(x) for x in dataSet])  
                     
                           
                         queryStr="""INSERT INTO %s  (%s) VALUES (%s)"""%(table,fields,values)  
                         self.ZSQLSimpleSearch(queryStr)  
                         logger("update xml",logging.INFO,queryStr)  
                         ret+="ad: %s \n"%field  
                           
                 elif node[1].nodeName=="METADATA":  
                     fieldNames=[]  
                     doc.expandNode(node[1])  
                   
                     names=node[1].getElementsByTagName('FIELD')  
   
                     for name in names:  
                         fieldNames.append(name.getAttribute('NAME'))  
                       
                     logger("update xml: fieldnames",logging.INFO,repr(fieldNames))                         
                     qstr="""select attname from pg_attribute, pg_class where attrelid = pg_class.oid and relname = '%s' """  
                     columns=[x.attname for x in self.ZSQLSimpleSearch(qstr%table)]  
                    
                     for fieldName in fieldNames:  
                         logger("update xml: fieldname",logging.INFO,repr(fieldName))                       
                         if fieldName not in columns:  
                             qstr="""alter table %s add %s %s"""  
                             self.ZSQLSimpleSearch(qstr%(table,fieldName,'text'))  
                             logger("update xml: fieldname add",logging.INFO,qstr%(table,fieldName,'text'))                         
                 #fn=node[1].getAttribute("xml:id")  
                 #nf=file("xtf/"+fn+".xtf",'w')  
                 #nf.write("""<texts xmlns="http://emegir.info/xtf" xmlns:lem="http://emegir.info/lemma" >"""+node[1].toxml()+"</texts>")  
                 #print "wrote: %s"%fn  
   
   
     def importXMLFileFMP(self,table,dsn=None,uploadfile=None,update_fields=None,id_field=None,sync_mode=False,replace=False,redirect_url=None,ascii_db=False,RESPONSE=None):  
         '''          '''
         Import FileMaker XML file (FMPXMLRESULT format) into the table.          Import FileMaker XML file (FMPXMLRESULT format) into the table.
         @param dsn: database connection string          @param dsn: database connection string
         @param table: name of the table the xml shall be imported into          @param table: name of the table the xml shall be imported into (may be comma-separated list)
         @param uploadfile: xmlfile file          @param uploadfile: xmlfile file
         @param update_fields: (optional) list of fields to update; default is to create all fields          @param update_fields: (optional) list of fields to update; default is to create all fields
         @param id_field: (optional) field which uniquely identifies an entry for updating purposes.          @param id_field: (optional) field which uniquely identifies an entry for updating purposes.
         @param sync_mode: (optional) really synchronise, i.e. delete entries not in XML file          @param sync_mode: (optional) really synchronise, i.e. delete entries not in XML file
           @param lc_names: (optional) lower case and clean up field names from XML
           @param keep_fields: (optional) don't add fields to SQL database
           @param ascii_db: (optional) assume ascii encoding in db
           @param replace: (optional) delete and re-insert data
           @param backup: (optional) create backup of old table (breaks indices)
         @param RESPONSE: (optional)          @param RESPONSE: (optional)
         @param redirect_url: (optional) url for redirecting after the upload is done          @param redirect_url: (optional) url for redirecting after the upload is done
         '''          '''
                   
         tfilehd,filename=tempfile.mkstemp()          tfilehd,filename=tempfile.mkstemp()
         tfile=os.fdopen(tfilehd,'w')          tfile=os.fdopen(tfilehd,'w')
         logging.error("import %s"%uploadfile)          logging.info("import %s"%uploadfile)
         for c in uploadfile.read():          for c in uploadfile.read():
             tfile.write(c)              tfile.write(c)
         tfile.close()            tfile.close()  
Line 444  class ZSQLExtendFolder(Folder,Persistent Line 398  class ZSQLExtendFolder(Folder,Persistent
         if not dsn:          if not dsn:
             dsn=self.getConnectionObj().connection_string              dsn=self.getConnectionObj().connection_string
                           
           tablelist=table.split(',')
           logging.debug("tablelist: %s" %tablelist)
           #table=tables
           
           for t in tablelist :   
               logging.debug("table: %s" %table)  
         options=Options()          options=Options()
         options.dsn=dsn          options.dsn=dsn
         options.table=table              options.table=t
         options.filename=filename          options.filename=filename
         options.update_fields=update_fields          options.update_fields=update_fields
         options.id_field=id_field          options.id_field=id_field
         options.sync_mode=sync_mode          options.sync_mode=sync_mode
               options.lc_names=lc_names
         options.replace_table=replace          options.replace_table=replace
         options.lc_names=True              options.keep_fields=keep_fields
         options.ascii_db=ascii_db          options.ascii_db=ascii_db
               options.replace_table=replace
               options.backup_table=backup
               options.debug=debug
           
               if RESPONSE and log_to_response:
                   # set up logging to response as plain text
                   RESPONSE.setHeader("Content-Type","text/plain; charset=utf-8")
                   RESPONSE.write("Import FMPXML file...\n\n")
                   RESPONSE.flush()
                   loghandler = logging.StreamHandler(RESPONSE)
                   if debug:
                       loghandler.setLevel(logging.DEBUG)
                   else:
                       loghandler.setLevel(logging.INFO)
                   logger = logging.getLogger('db.import.fmpxml')
                   logger.addHandler(loghandler)
                   options.use_logger_instance = logger
   
         importFMPXML(options)          importFMPXML(options)
                   
         os.remove(filename)  
                   
         if RESPONSE and redirect_url:          
               if RESPONSE and log_to_response:
                   loghandler.flush()
                   RESPONSE.write("\n\n DONE!")
                
               elif RESPONSE and redirect_url:
             RESPONSE.redirect(redirect_url)              RESPONSE.redirect(redirect_url)
                           
           os.remove(filename)
   
               
     def generateIndex(self,field,index_name,table,RESPONSE=None):      def generateIndex(self,field,index_name,table,RESPONSE=None):
         """erzeuge ein Index Objekt einem Feld (experimental)          """erzeuge ein Index Objekt einem Feld (experimental)
         @param field: Feldname zu dem ein Index erzeugt werden soll          @param field: Feldname zu dem ein Index erzeugt werden soll
Line 504  class ZSQLExtendFolder(Folder,Persistent Line 490  class ZSQLExtendFolder(Folder,Persistent
         """          """
         return urllib.quote(txt)          return urllib.quote(txt)
           
       
       def createIdSet(self, resultset, idField=None):
           """returns a (frozen)set of IDs from a SQL-resultset (using idField) or a list (if idField=None)"""
           logging.debug("createidset for idfield %s"%idField)
           if idField is None:
               return frozenset(resultset)
           else:
               idlist = [r[idField] for r in resultset]
               return frozenset(idlist)
           
       def opIdSet(self, a, b, op):
           """operate on sets a and b"""
           logging.debug("opidset with op %s"%op)
           if (op == 'intersect'):
               return a.intersection(b)
           elif (op == 'union'):
               return a.union(b)
           elif (op == 'diff'):
               return a.difference(b)
       
       
     def searchRel(self,relStatement,statement,wherePart,classes):      def searchRel(self,relStatement,statement,wherePart,classes):
         """suche relative haufigkeiten (experimental)"""          """suche relative haufigkeiten (experimental)"""
         ret={}          ret={}
Line 558  class ZSQLExtendFolder(Folder,Persistent Line 565  class ZSQLExtendFolder(Folder,Persistent
         return pt()          return pt()
   
   
     def changeZSQLExtend(self,label,description,weight=0,REQUEST=None,connection_id=None):      def changeZSQLExtend(self,label,description,weight=0,connection_id=None,REQUEST=None,):
         """change the Konfiguration"""          """change the Konfiguration"""
         self.connection_id=connection_id          self.connection_id=connection_id
         self.weight=weight          self.weight=weight
Line 573  class ZSQLExtendFolder(Folder,Persistent Line 580  class ZSQLExtendFolder(Folder,Persistent
         @param str: string der Formatiert werden soll.          @param str: string der Formatiert werden soll.
         @param url:  (optional) default ist "None", sonderfall erzeugt einen Link aus String mit unterliegender url          @param url:  (optional) default ist "None", sonderfall erzeugt einen Link aus String mit unterliegender url
         """          """
         #url=None          #logging.debug("formatascii str=%s url=%s"%(repr(str),repr(url)))
   
           if not str:
               return ""
   
         str=str.rstrip().lstrip()          str=str.rstrip().lstrip()
                   
         if url and str:          if url and str:
Line 587  class ZSQLExtendFolder(Folder,Persistent Line 598  class ZSQLExtendFolder(Folder,Persistent
                 retStr+="""<a href="%s">%s</a><br/>"""%(strUrl,word)                  retStr+="""<a href="%s">%s</a><br/>"""%(strUrl,word)
             str=retStr              str=retStr
         if str:          if str:
             return re.sub(r"[\n]","<br/>",str)              retStr = re.sub(r"[\n]","<br/>",str)
               #logging.debug("formatascii out=%s"%(repr(retStr)))
               return retStr
         else:          else:
             return ""              return ""
                   
Line 639  class ZSQLExtendFolder(Folder,Persistent Line 652  class ZSQLExtendFolder(Folder,Persistent
             return 1              return 1
         return 0          return 0
   
     def ZSQLMultiSearch(self,_table,_searchField,_value,_idField,_additionalStatement="",_select=None,_storename=None):      def ZSQLMultiSearch(self,_table,_searchField,_value,_idField,_additionalStatement="",_select=None,_subselectAddition="",_storename=None):
         """          """
         Durchsucht in einer Tabelle "table" die Spalte "searchfield" nach dem allen Vorkommnissen           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 Ÿber mehrere Eintrsege in einer          von Worten in value und gibt alle Werte mit gleichem id field zurŸck, d.h. es wird die "und" suche Ÿber mehrere Eintrsege in einer
Line 650  class ZSQLExtendFolder(Folder,Persistent Line 663  class ZSQLExtendFolder(Folder,Persistent
         @param _value: String der gesucht werden soll, gesucht wird nach allen Worten des Strings, die durch " "-getrennt sind.          @param _value: String der gesucht werden soll, gesucht wird nach allen Worten des Strings, die durch " "-getrennt sind.
         @param _idField: Feld mit id fŸr die identifikation gleicher EintrŠge          @param _idField: Feld mit id fŸr die identifikation gleicher EintrŠge
         @param _additionalStatement: (optional) Zusaetzliches SQL Statement, dass zwischen dem ersten "select from" und dem ersten "where" eingegefŸgt wird.          @param _additionalStatement: (optional) Zusaetzliches SQL Statement, dass zwischen dem ersten "select from" und dem ersten "where" eingegefŸgt wird.
           @param _subselectAddition: (optiona) Zusaetliche SQL Statement die hinter das select statement der subselects eingefuegt werde.
         @param _select: (optional) Alternativer Wert fŸr den ersten SELECT Aufruf.          @param _select: (optional) Alternativer Wert fŸr den ersten SELECT Aufruf.
         @param _storename: (optional) Name fuer die Zwischenspeicherung von Werten in der Session          @param _storename: (optional) Name fuer die Zwischenspeicherung von Werten in der Session
         """          """
Line 664  class ZSQLExtendFolder(Folder,Persistent Line 678  class ZSQLExtendFolder(Folder,Persistent
         if not _select:          if not _select:
             _select=_idField              _select=_idField
                           
         queries.append("select %s from  %s %s where lower(%s) like '%%%s%%'"%(_select,_table,_additionalStatement,_searchField,splitted[0].lower()))          query="select %s from  %s %s where lower(%s) like '%%%s%%'"%(_select,_table,_additionalStatement,_searchField,splitted[0].lower())
                   
         if len(splitted)>1:          if len(splitted)>1: # mehr als ein Wort
               query+=" and %s in"%_idField # dann einschraenken 
             for v in splitted[1:]:              for v in splitted[1:]:
                 queries.append("select %s from  %s where lower(%s) like '%%%s%%'"%(_idField,_table,_searchField,v.lower()))                  queries.append("select %s from  %s %s where lower(%s) like '%%%s%%'"%(_idField,_table,_subselectAddition,_searchField,v.lower()))
                                   
         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  
                   
               intersect=" intersect ".join(queries) # nun baue sie zusammen
               query+="(%s)"%intersect
                   
                   
         logging.info("ZSQLSimple: %s"%query)          logging.info("ZSQLSimple: %s"%query)
Line 961  class ZSQLExtendFolder(Folder,Persistent Line 974  class ZSQLExtendFolder(Folder,Persistent
         if (hasattr(self,"_v_searchSQL") and (self._v_searchSQL == None)) or (not hasattr(self,"_v_searchSQL")):          if (hasattr(self,"_v_searchSQL") and (self._v_searchSQL == None)) or (not hasattr(self,"_v_searchSQL")):
                           
             self._v_searchSQL=Shared.DC.ZRDB.DA.DA("_v_searchSQL","_v_searchSQL",self.getConnectionObj().getId(),"var","<dtml-var var>")              self._v_searchSQL=Shared.DC.ZRDB.DA.DA("_v_searchSQL","_v_searchSQL",self.getConnectionObj().getId(),"var","<dtml-var var>")
               #self._v_searchSQL=self.getConnectionObj()()
                           
             self._v_searchSQL.max_rows_=max_rows              self._v_searchSQL.max_rows_=max_rows
               #self._v_searchSQL.set_client_encoding('UNICODE')
             try:              try:
                 logging.error("I am here")                  logging.error("I am here")
                 t=self._v_searchSQL.__call__(var=query)                  t=self._v_searchSQL.__call__(var=query)
                   #t=self._v_searchSQL.query(query)
                 logging.error("I am here %s"%t)                  logging.error("I am here %s"%t)
                 return t                  return t
             except :              except :
Line 979  class ZSQLExtendFolder(Folder,Persistent Line 995  class ZSQLExtendFolder(Folder,Persistent
             try:              try:
   
                 self._v_searchSQL.max_rows_=max_rows                  self._v_searchSQL.max_rows_=max_rows
                   #self._v_searchSQL.set_client_encoding('UNICODE')
                                   
                 return self._v_searchSQL.__call__(var=query)                  return self._v_searchSQL.__call__(var=query)
                   #return self._v_searchSQL.query(query)
             except :              except :
                 logger("ZSQLSimpleSearch ERROR2",logging.ERROR, '%s %s'%sys.exc_info()[:2])                  logger("ZSQLSimpleSearch ERROR2",logging.ERROR, '%s %s'%sys.exc_info()[:2])
                 if sys.exc_info()[0]=="Database Error":                  if sys.exc_info()[0]=="Database Error":
Line 1020  class ZSQLExtendFolder(Folder,Persistent Line 1038  class ZSQLExtendFolder(Folder,Persistent
           
                   
                   
     def ZSQLAdd(self,format=None,RESPONSE=None,args=None,**argv):      def ZSQLAdd(self,format=None,RESPONSE=None,args=None,_useRequest=True,**argv):
         """Neuer Eintrag"""          """Neuer Eintrag"""
                           
     if args:      if args:
Line 1030  class ZSQLExtendFolder(Folder,Persistent Line 1048  class ZSQLExtendFolder(Folder,Persistent
   
         qs_temp=[]          qs_temp=[]
           
           if  _useRequest:
         for a in self.REQUEST.form.keys():          for a in self.REQUEST.form.keys():
             qs_temp.append(a+"="+urllib.quote(str(self.REQUEST.form[a])))              qs_temp.append(a+"="+urllib.quote(str(self.REQUEST.form[a])))
   
Line 1046  class ZSQLExtendFolder(Folder,Persistent Line 1065  class ZSQLExtendFolder(Folder,Persistent
                   
         addList={}          addList={}
         for q in qs.split(","):          for q in qs.split(","):
               if len(q.split("="))<2:
                   continue
             name=re.sub("r'+'"," ",q.split("=")[0].lower())              name=re.sub("r'+'"," ",q.split("=")[0].lower())
          
             value=q.split("=")[1]              value=q.split("=")[1]
             value=re.sub(r'\+'," ",value)              value=re.sub(r'\+'," ",value)
             value=urllib.unquote(value)               value=urllib.unquote(value) 
Line 1115  class ZSQLExtendFolder(Folder,Persistent Line 1137  class ZSQLExtendFolder(Folder,Persistent
                     table=urllib.unquote(value)                      table=urllib.unquote(value)
             elif name=="-identify":              elif name=="-identify":
                 identify=urllib.unquote(value)                  identify=urllib.unquote(value)
                 identify="lower("+identify.split("=")[0]+")="+sql_quote(identify.split("=")[1].lower())                  # old code did identify with lower() which doesn't work for oids
                   #identify="lower("+identify.split("=")[0]+")="+sql_quote(identify.split("=")[1].lower())
             elif name=="-format":              elif name=="-format":
                 format=urllib.unquote(value)                  format=urllib.unquote(value)
             #elif (not (name[0]=="-" or name[0]=="_")) and (not len(value)==0):              #elif (not (name[0]=="-" or name[0]=="_")) and (not len(value)==0):
Line 1273  class ZSQLExtendFolder(Folder,Persistent Line 1296  class ZSQLExtendFolder(Folder,Persistent
         querys=qs.split(",")          querys=qs.split(",")
                   
         #which arguments are in the old query string          #which arguments are in the old query string
           
         queryList={}          queryList={}
         for query in querys:          for query in querys:
             arg=query.split("=")[0]              arg=query.split("=")[0]
             if arg[0]=="_": arg="-"+arg[1:] # sicherstellen, dass an Anfang stets "_"              if arg[0]=="_": arg="-"+arg[1:] # sicherstellen, dass an Anfang stets "_"
             try:              try:
                 queryList[arg]=query.split("=")[1]                  queryList[arg]=urllib.unquote_plus(query.split("=")[1])
             except:              except:
                 queryList[arg]=''                     queryList[arg]=''   
                                   
         argList=[]          argList=[]
         arg=""          arg=""
           
           
           
         #gehe durch die zu aendernden Argumente          #gehe durch die zu aendernden Argumente
         for argTmp in argv.keys():          for argTmp in argv.keys():
               
             arg=argTmp[0:]# sicherstellen, dass der string auh kopiert wird              arg=argTmp[0:]# sicherstellen, dass der string auh kopiert wird
             if arg[0]=="_": arg="-"+arg[1:] # sicherstellen, dass an Anfang stets "_"                          if arg[0]=="_": arg="-"+arg[1:] # sicherstellen, dass an Anfang stets "_"            
   
Line 1303  class ZSQLExtendFolder(Folder,Persistent Line 1321  class ZSQLExtendFolder(Folder,Persistent
                   
         return str          return str
           
       
     def parseQueryString(self,qs,iCT,storemax="no",select=None,nostore=None,storename="foundCount",tableExt=None,NoQuery=None,NoLimit=None,restrictField=None,restrictConnect=None,filter=None):      def parseQueryString(self,qs,iCT,storemax="no",select=None,nostore=None,storename="foundCount",tableExt=None,NoQuery=None,NoLimit=None,restrictField=None,restrictConnect=None,filter=None):
         """analysieren den QueryString"""          """analysieren den QueryString"""
                 
Line 1485  class ZSQLExtendFolder(Folder,Persistent Line 1504  class ZSQLExtendFolder(Folder,Persistent
   
                 elif op=="numerical":                  elif op=="numerical":
                     term=analyseIntSearch(value)                      term=analyseIntSearch(value)
                     tmp=(name+" "+term)                      tmp=(namealt+" "+term) # take namealt without LOWER
                 elif op=="grep":                  elif op=="grep":
                     tmp=(name+" ~* "+sql_quote(value))                      tmp=(name+" ~* "+sql_quote(value))
                 elif op=="one":                  elif op=="one":
Line 1535  class ZSQLExtendFolder(Folder,Persistent Line 1554  class ZSQLExtendFolder(Folder,Persistent
   
                 elif op=="numerical":                  elif op=="numerical":
                     term=analyseIntSearch(value)                      term=analyseIntSearch(value)
                     tmp=(name+" "+term)                      tmp=(namealt+" "+term) # take namealt without LOWER
                 elif op=="grep":                  elif op=="grep":
                     tmp=(name+" ~* "+sql_quote(value))                      tmp=(name+" ~* "+sql_quote(value))
                 elif op=="one":                  elif op=="one":

Removed from v.1.114  
changed lines
  Added in v.1.130


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