Diff for /ZSQLExtend/ZSQLExtend.py between versions 1.86 and 1.87

version 1.86, 2006/05/17 21:42:19 version 1.87, 2006/07/27 17:31:50
Line 19  import os.path Line 19  import os.path
 import os  import os
 from OFS.SimpleItem import SimpleItem  from OFS.SimpleItem import SimpleItem
   
 def getTextFromNode(nodename):  
     nodelist=nodename.childNodes  
     rc = ""  
     for node in nodelist:  
         if node.nodeType == node.TEXT_NODE:  
            rc = rc + node.data  
     return rc  
   
       
 def analyseIntSearch(word):  def analyseIntSearch(word):
     #analyse integer searches      #analyse integer searches
   
Line 81  class ZSQLExtendFolder(Folder,Persistent Line 72  class ZSQLExtendFolder(Folder,Persistent
         return sql_quote(str)          return sql_quote(str)
           
           
     def normalizeField(self,table,fieldname, newFieldName=None,mode="alter", RESPONSE=None):      def importXMLFile(self,table,containerTagName,file,identify=None,RESPONSE=None):
         """normalize a field"""  
         import unicodedata  
           
         if not newFieldName:  
             newFieldName=fieldname+"_normal"  
               
         def normal(str):  
             if str:  
                 return unicodedata.normalize('NFKD', str.decode('utf-8')).encode('ASCII', 'ignore')  
             else:  
                 return ""  
         if mode=="create": # create the field  
             qstr="""alter table %s add %s %s"""  
             self.ZSQLSimpleSearch(qstr%(table,newFieldName,'text'))  
           
         qstr="select oid,%s from %s"%(fieldname,table)  
         for result in self.ZSQLSimpleSearch(qstr):  
             qstr="update %s set %s = %s where oid = %s"  
   
             self.ZSQLSimpleSearch(qstr%(table,newFieldName,self.ZSQLQuote(normal(getattr(result,fieldname))),result.oid))  
           
     def importAccessModell(self,configFileName,RESPONSE=None):  
         """import tables from access  
         @param configFileName: xml-configfile  
         """  
         from Ft.Xml import Parse  
         fh=file(configFileName)  
   
         doc=Parse(fh)  
           
         x=doc.xpath("//pathToFolder/@path")  
           
           
         if not (len(x)==1): # tag ist nich eineindeutig  
             return False  
           
         pathToFolder=x[0].value  
           
         for db in doc.xpath("//db"):  
               
             containers=db.xpath("./@container")  
             identifiers=db.xpath("./@identify")  
               
             print containers  
             if not (len(containers)==1):  
                 return False  
             else:  
                 container=containers[0].value  
               
             if not (len(identifiers)==1):  
                 identifier=None  
             else:  
                 identifier=identifiers[0].value  
               
             self.xsdToTable(container.lower(),container,modus="drop",filename=os.path.join(pathToFolder,container.lower()+".xsd"))  
             self.importXMLFileAccess(container.lower(),container,filename=os.path.join(pathToFolder,container.lower()+".xml"),identify=identifier)  
               
         return "<html><body>DONE</body></html>"  
        
     def xsdToTable(self,table,elementNameForTable,modus="update", filename=None,data=None,RESPONSE=None):  
         """reads an xsd file an creates the columns of a table out of its structure  
         @param table: name of the table the xml shall be imported into  
         @param elementNameForTable: must be a element of type complex type. the element of the sequence in the complex type  
                                     define the columns of the table >table<  
         @param data (optional): data to be imported  
         @param filename (optional) or filename  
         @param identify: (optional) field res. tag which identifies a entry uniquely for updating purposes.  
         @param RESPONSE: (optional)  
    
         """  
         #from xml.dom.minidom import parseString,parse  
           
         from Ft.Xml import Parse  
         zLOG.LOG("import xsd",zLOG.INFO,"called")  
         #fh=file("/tmp/fmpxml.xml")  
         import bz2  
         import base64  
           
           
         ret=""  
         if data:  
           data=bz2.decompress(base64.decodestring(data))  
           
           #zLOG.LOG("import xsd",zLOG.INFO,"received file")  
           doc=Parse(data)  
           #zLOG.LOG("import xsd",zLOG.INFO,"parsed file")  
           
         elif filename:  
           fh=file(filename)  
           txt=fh.read()  
             
           doc=Parse(txt)  
           #zLOG.LOG("import xsd",zLOG.INFO,"parsed file")  
           
           
         Nss={'xsd':'http://www.w3.org/2001/XMLSchema'}  
         definingSequence=doc.xpath("""//xsd:element[@name='%s']/xsd:complexType/xsd:sequence/xsd:element/@name"""%elementNameForTable,explicitNss=Nss)  
           
         fieldNames=[x.value for x in definingSequence]  
           
           
           
         #check if table exists  
           
         qstr="""select relname from pg_class where relname = '%s'"""%table  
         if not(self.ZSQLSimpleSearch(qstr)) or (len (self.ZSQLSimpleSearch(qstr))<1): # if not the create the table  
             columns=[]  
             create=True      
         else:  
             create=False  
               
             zLOG.LOG("update xsd: fieldnames",zLOG.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)]              
           
           
         if (modus=="drop") and (not create): #table shall be deleted, therefore it should exist (not create)  
             print "drop"  
             qstr="""DROP TABLE %s """  
             self.ZSQLSimpleSearch(qstr%table)  
             columns=[]  
             create=True  
           
         for fieldName in fieldNames:  
             if type(fieldName) is UnicodeType:  
                 fieldName=fieldName.encode('utf-8')  
             zLOG.LOG("update xml: fieldname",zLOG.INFO,repr(fieldName))                       
             if fieldName.lower() not in columns:  
                   
                 if create:# table does not exist therefore create with one column  
                     qstr="""create table %s (%s %s)"""  
                     create=False  
                 else:# otherwise add the field  
                     qstr="""alter table %s add %s %s"""  
                   
                 self.ZSQLSimpleSearch(qstr%(table,fieldName,'text'))  
                 zLOG.LOG("update xsd: fieldname add",zLOG.INFO,qstr%(table,fieldName,'text'))                         
      
   
     def importXMLFileAccess(self,table,container,data=None,identify=None,filename=None,RESPONSE=None):  
         '''  
         Import XML file in access format into the table  
         @param table: name of the table the xml shall be imported into  
         @param containerTagName: XML-Tag which describes a dataset  
         @param data: data to be imported  
         @param identify: (optional) field res. tag which identifies a entry uniquely for updating purposes.  
         @param RESPONSE: (optional)  
         '''  
         from xml.dom.pulldom import parseString,parse  
           
         zLOG.LOG("import xml",zLOG.INFO,"called")  
         #fh=file("/tmp/fmpxml.xml")  
         import bz2  
         import base64  
           
         ret=""  
         if data:  
           data=bz2.decompress(base64.decodestring(data))  
           
           zLOG.LOG("import xml",zLOG.INFO,"received file")  
           doc=parseString(data)  
           zLOG.LOG("import xml",zLOG.INFO,"parsed file")  
   
         elif filename:  
           fh=file(filename)  
           doc=parse(fh)  
           zLOG.LOG("import xml",zLOG.INFO,"parsed file")  
         while 1:  
             node=doc.getEvent()  
   
             if node is None:  
                 break;  
             else:  
                 if node[1].nodeName.lower()==container.lower(): # make everything case insensitive  
                     doc.expandNode(node[1])  
                       
                     dataSet={}  
                     for col in node[1].childNodes:  
                         if col.nodeType is col.ELEMENT_NODE:   
                             data=col.nodeName  
                             dataSet[data]=getTextFromNode(col)  
                     print dataSet.keys()  
                     update=False  
                       
                     if identify:  
   
                         field=dataSet[identify]  
   
                         searchStr="""select %s from %s where %s = '%s'"""%(identify,table,identify,field)  
                         zLOG.LOG("import xml",zLOG.INFO,searchStr)  
                         search=self.ZSQLSimpleSearch(searchStr)  
                         if search:  
                             update=True  
                       
                     if update:  
                         tmp=[]  
                         for fieldName in dataSet.keys():  
                             tmp.append("""%s = %s"""%(fieldName,self.ZSQLQuote(dataSet[fieldName])))  
                         setStr=",".join(tmp)  
   
                         field=dataSet[identify]  
                     
                         queryStr="""UPDATE %s SET %s WHERE %s = '%s' """%(table,setStr,identify,field)  
                         zLOG.LOG("update xml",zLOG.INFO,queryStr)  
                         self.ZSQLSimpleSearch(queryStr)  
                         ret+="ud: %s \n"%field  
                     else:  
   
                          
                         fields=",".join(dataSet.keys())  
                         values=",".join([""" %s """%self.ZSQLQuote(dataSet[x]) for x in dataSet.keys()])  
                     
                           
                         queryStr="""INSERT INTO %s  (%s) VALUES (%s)"""%(table,fields,values)  
                         self.ZSQLSimpleSearch(queryStr)  
                         zLOG.LOG("update xml",zLOG.INFO,queryStr)  
                           
                           
                           
             
         return ret  
           
       
     def importXMLFile(self,table,data=None,identify=None,filename=None,RESPONSE=None):  
         #TODO: finish importXMLFile          #TODO: finish importXMLFile
         '''          '''
         Import XML file into the table          Import XML file into the table
         @param table: name of the table the xml shall be imported into          @param table: name of the table the xml shall be imported into
         @param containerTagName: XML-Tag which describes a dataset          @param containerTagName: XML-Tag which describes a dataset
         @param data: data to be imported          @param file: xmlfile handle
         @param identify: (optional) field res. tag which identifies a entry uniquely for updating purposes.          @param identify: (optional) field res. tag which identifies a entry uniquely for updating purposes.
         @param RESPONSE: (optional)          @param RESPONSE: (optional)
         '''          '''
         from xml.dom.pulldom import parseString,parse          from xml.dom.pulldom import parseString
           
         zLOG.LOG("import xml",zLOG.INFO,"called")  
         #fh=file("/tmp/fmpxml.xml")  
         import bz2  
         import base64  
                   
         ret=""          doc=parseString(file.read())
         if data:  
           data=bz2.decompress(base64.decodestring(data))  
           
           zLOG.LOG("import xml",zLOG.INFO,"received file")  
           doc=parseString(data)  
           zLOG.LOG("import xml",zLOG.INFO,"parsed file")  
   
         elif filename:  
           fh=file(filename)  
           doc=parse(fh)  
           zLOG.LOG("import xml",zLOG.INFO,"parsed file")  
         while 1:          while 1:
             node=doc.getEvent()              node=doc.getEvent()
                           
             if node is None:              if node is None:
                 break;                  break;
             else:              else:
                 if node[1].nodeName=='ROW':                  if node[1].nodeName==containerTagName:
                     doc.expandNode(node[1])                      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)  
                         zLOG.LOG("import xml",zLOG.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)  
                         zLOG.LOG("update xml",zLOG.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)  
                         zLOG.LOG("update xml",zLOG.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'))  
                       
                     zLOG.LOG("update xml: fieldnames",zLOG.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:  
                         zLOG.LOG("update xml: fieldname",zLOG.INFO,repr(fieldName))                       
                         if fieldName not in columns:  
                             qstr="""alter table %s add %s %s"""  
                             self.ZSQLSimpleSearch(qstr%(table,fieldName,'text'))  
                             zLOG.LOG("update xml: fieldname add",zLOG.INFO,qstr%(table,fieldName,'text'))                         
                 #fn=node[1].getAttribute("xml:id")                  #fn=node[1].getAttribute("xml:id")
                 #nf=file("xtf/"+fn+".xtf",'w')                  #nf=file("xtf/"+fn+".xtf",'w')
                 #nf.write("""<texts xmlns="http://emegir.info/xtf" xmlns:lem="http://emegir.info/lemma" >"""+node[1].toxml()+"</texts>")                  #nf.write("""<texts xmlns="http://emegir.info/xtf" xmlns:lem="http://emegir.info/lemma" >"""+node[1].toxml()+"</texts>")
                 #print "wrote: %s"%fn                  #print "wrote: %s"%fn
         return ret                  
                             
     def generateIndex(self,field,index_name,table,RESPONSE=None):      def generateIndex(self,field,index_name,table,RESPONSE=None):
         """erzeuge index aus feld"""          """erzeuge index aus feld"""
Line 480  class ZSQLExtendFolder(Folder,Persistent Line 171  class ZSQLExtendFolder(Folder,Persistent
             return ""              return ""
   
     def getLabel(self):      def getLabel(self):
         """getLabel"""          """getLabe"""
         try:          try:
             return self.label              return self.label
         except:          except:
             return ""              return ""
     
     def getTitle(self):  
         """getTitle"""  
         try:  
             return self.title  
         except:  
             return ""  
   
   
     def getDescription(self):      def getDescription(self):
         """getDescription"""          """getLabe"""
         try:          try:
             return self.description              return self.description
         except:          except:
Line 524  class ZSQLExtendFolder(Folder,Persistent Line 207  class ZSQLExtendFolder(Folder,Persistent
     def formatAscii(self,str,url=None):      def formatAscii(self,str,url=None):
         """ersetze ascii umbrueche durch <br>"""          """ersetze ascii umbrueche durch <br>"""
         #url=None          #url=None
           
         if not str:  
             return ""  
           
         str=str.rstrip().lstrip()          str=str.rstrip().lstrip()
                   
         if url and str:          if url and str:
Line 655  class ZSQLExtendFolder(Folder,Persistent Line 334  class ZSQLExtendFolder(Folder,Persistent
         ret+="""</select>"""          ret+="""</select>"""
         return ret          return ret
   
     def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None, multiple='',startValue=None,additionalSelect="",size=None,linelen=None,selected=None):      def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None, multiple='',startValue=None,additionalSelect="",size=None,linelen=None):
         """generate select options form a search list          """generate select options form a search list
         es wird          es wird
         <select name=fieldname mutiple>          <select name=fieldname mutiple>
Line 690  class ZSQLExtendFolder(Folder,Persistent Line 369  class ZSQLExtendFolder(Folder,Persistent
             field=getattr(result,fieldName)              field=getattr(result,fieldName)
             fieldValue=getattr(result,valueName)              fieldValue=getattr(result,valueName)
             if fieldValue:              if fieldValue:
                 print "XXX",field,repr(type(field)),repr(type(selected))  
                 if not linelen:                  if not linelen:
                       
                     if field == selected:  
                         print "huhu"  
                         ret+="""<option value="%s" selected>%s</option>"""%(field,fieldValue)  
                     else:  
                         ret+="""<option value="%s">%s</option>"""%(field,fieldValue)                          ret+="""<option value="%s">%s</option>"""%(field,fieldValue)
                 else:                  else:
                     mist = """%s"""%(fieldValue)                      mist = """%s"""%(fieldValue)
Line 729  class ZSQLExtendFolder(Folder,Persistent Line 402  class ZSQLExtendFolder(Folder,Persistent
         except:          except:
             return None              return None
                   
     def ZSQLInlineSearch(self,storename=None,args=None,**argv):      def ZSQLInlineSearch(self,storename=None,**argv):
         """inlinesearch"""          """inlinesearch"""
                   
         qs=[]          qs=[]
Line 739  class ZSQLExtendFolder(Folder,Persistent Line 412  class ZSQLExtendFolder(Folder,Persistent
             storename="foundCount"              storename="foundCount"
                           
           
         if args:  
             argTmp=args  
         else:  
             argTmp=argv  
                           
         #print "INLINE:",argv          #print "INLINE:",argv
         for a in argTmp.keys():          for a in argv.keys():
             if a[0]=="-":  
                 key="_"+a[1:]  
             else:  
                 key=a  
             try:              try:
                 qs.append(key+"="+urllib.quote(str(argTmp[a])))                  qs.append(a+"="+urllib.quote(str(argv[a])))
             except:              except:
                 import urllib                  import urllib
                 qs.append(key+"="+urllib.quote(str(argTmp[a])))                  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 778  class ZSQLExtendFolder(Folder,Persistent Line 443  class ZSQLExtendFolder(Folder,Persistent
         except:          except:
             zLOG.LOG("ZSQLResetConnection",zLOG.ERROR, '%s %s'%sys.exc_info()[:2])              zLOG.LOG("ZSQLResetConnection",zLOG.ERROR, '%s %s'%sys.exc_info()[:2])
   
     def ZSQLSimpleSearch(self,query=None,max_rows=1000000,debug=None):      def ZSQLSimpleSearch(self,query=None,max_rows=1000000):
         """simple search"""          """simple search"""
         print query   
   
         if not query:          if not query:
             query=self.query              query=self.query
                   
         if debug:          
                 print "DEBUG: ZSQLSimpleSearch:", query  
         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>")
Line 846  class ZSQLExtendFolder(Folder,Persistent Line 509  class ZSQLExtendFolder(Folder,Persistent
           
                   
                   
     def ZSQLAdd(self,format=None,RESPONSE=None,args=None,**argv):      def ZSQLAdd(self,format=None,RESPONSE=None,**argv):
         """Neuer Eintrag"""          """Neuer Eintrag"""
                           
         qs_temp=[]          qs_temp=[]
Line 856  class ZSQLExtendFolder(Folder,Persistent Line 519  class ZSQLExtendFolder(Folder,Persistent
   
         qs=string.join(qs_temp,",")          qs=string.join(qs_temp,",")
                   
         if args:          for field in argv.keys():
             argTmp=args  
         else:  
             argTmp=argv  
               
         for field in argTmp.keys():  
                    if field[0]=="_":                     if field[0]=="_":
                        fieldTmp="-"+field[1:]                         fieldTmp="-"+field[1:]
                    else:                     else:
                        fieldTmp=field                         fieldTmp=field
                                                 
                    qs+=",%s=%s"%(fieldTmp,argTmp[field])                     qs+=",%s=%s"%(fieldTmp,argv[field])
                   
                   
         addList={}          addList={}
Line 901  class ZSQLExtendFolder(Folder,Persistent Line 559  class ZSQLExtendFolder(Folder,Persistent
         else:          else:
             return True              return True
                   
     def ZSQLChange(self,format=None,RESPONSE=None,USE_FORM=None,args=None,**argv):      def ZSQLChange(self,format=None,RESPONSE=None,USE_FORM=None,**argv):
         """change entries"""          """change entries"""
         #qs=self.REQUEST['QUERY_STRING']          #qs=self.REQUEST['QUERY_STRING']
         # very bad hack          # very bad hack
         print args          
         qs_temp=[]          qs_temp=[]
         if USE_FORM or RESPONSE:          if USE_FORM or RESPONSE:
             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])))
   
                   
         if args:  
             argTmp=args  
         else:      
             argTmp=argv  
                           
         for field in argTmp.keys():          for field in argv.keys():
                                   
                    if field[0]=="_":                     if field[0]=="_":
                        fieldTmp="-"+field[1:]                         fieldTmp="-"+field[1:]
                    else:                     else:
                        fieldTmp=field                         fieldTmp=field
                                                 
                    qs_temp.append("%s=%s"%(fieldTmp,argTmp[field]))                     qs_temp.append("%s=%s"%(fieldTmp,argv[field]))
                   
                   
         changeList=[]          changeList=[]
Line 943  class ZSQLExtendFolder(Folder,Persistent Line 598  class ZSQLExtendFolder(Folder,Persistent
                 identify=identify.split("=")[0]+"="+sql_quote(identify.split("=")[1])                  identify=identify.split("=")[0]+"="+sql_quote(identify.split("=")[1])
             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):
               elif (not (name[0]=="-" or name[0]=="_")):
   
                 changeList.append("\""+name+"\"="+sql_quote(urllib.unquote(value)))                  changeList.append("\""+name+"\"="+sql_quote(urllib.unquote(value)))
                                   
         changeString=string.join(changeList,",")          changeString=string.join(changeList,",")
   
         queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify)          queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify)
           zLOG.LOG("ZSQLExtend",zLOG.INFO,"CHANGE: "+queryString)
   
         self.ZSQLSimpleSearch(queryString)          self.ZSQLSimpleSearch(queryString)
                   
Line 1006  class ZSQLExtendFolder(Folder,Persistent Line 663  class ZSQLExtendFolder(Folder,Persistent
                    if field[0]=="_":                     if field[0]=="_":
                        fieldTmp="-"+field[1:]                         fieldTmp="-"+field[1:]
                    else:                     else:
                        fieldTmp=urllib.unquote(field)                         fieldTmp=field
                                                 
                    qs+=",%s=%s"%(fieldTmp,argv[field])                     qs+=",%s=%s"%(fieldTmp,argv[field])
                                         
Line 1035  class ZSQLExtendFolder(Folder,Persistent Line 692  class ZSQLExtendFolder(Folder,Persistent
   
         qs=string.join(delEmpty(qs.split(",")),",")          qs=string.join(delEmpty(qs.split(",")),",")
   
         if not storename:          if storename:
               """store"""
           else:
             storename="foundCount"              storename="foundCount"
   
         #store query for further usage          #store query for further usage
         self.REQUEST.SESSION['query']=qs          self.REQUEST.SESSION['query']=qs
         print "st",storename,qs                            
         #print "calling Query with",repr(NoQuery)          #print "calling Query with",repr(NoQuery)
         ret=self.parseQueryString(qs,"-",select=select,storemax="yes",storename=storename,tableExt=tableExt,NoQuery=NoQuery,NoLimit=NoLimit,restrictField=restrictField,restrictConnect=restrictConnect,filter=filter)          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"]
                   
 #        if not hasattr(self,'_v_results'):          
 #                                  self._v_results={}  
 #    
 #                                    
 #        self._v_results[urllib.quote(qs)]=ret[0:]  
   
         return ret          return ret
   
Line 1104  class ZSQLExtendFolder(Folder,Persistent Line 759  class ZSQLExtendFolder(Folder,Persistent
         else:          else:
             storename="foundCount"              storename="foundCount"
                   
         return str(min(int(self.REQUEST.SESSION[storename]['rangeEnd'])+1,int(self.REQUEST.SESSION[storename]['count'])))          return str(min(int(self.REQUEST.SESSION[storename]['rangeEnd']),int(self.REQUEST.SESSION[storename]['count'])))
   
     def ZSQLNewQuery(self,linkText,storename=None,**argv):      def ZSQLNewQuery(self,linkText,storename=None,**argv):
         """suche neu"""          """suche neu"""
Line 1319  class ZSQLExtendFolder(Folder,Persistent Line 974  class ZSQLExtendFolder(Folder,Persistent
                                                   
                     tmp=string.join(tmps,' OR ')                      tmp=string.join(tmps,' OR ')
                                                                       
                 searchFieldsOnly[namealt]=value                  
                 op="all"                  op="all"
   
   
                 searchTmp="""%s in (select %s from %s where %s)"""%(punktsplit[3],punktsplit[2],punktsplit[0],tmp)                  searchTmp="""%s in (select %s from %s where %s)"""%(punktsplit[3],punktsplit[2],punktsplit[0],tmp)
                                 
                   
                 queryTemplate.append(searchTmp)                  queryTemplate.append(searchTmp)
                                   
             elif (not name[0]==iCT) and (not len(value)==0):              elif (not name[0]==iCT) and (not len(value)==0):
Line 1450  class ZSQLExtendFolder(Folder,Persistent Line 1103  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
             print "SF",searchFieldsOnly,searchFields  
             self.REQUEST.SESSION[storename]['searchFieldsOnly']=searchFieldsOnly              self.REQUEST.SESSION[storename]['searchFieldsOnly']=searchFieldsOnly
   
           
         if not NoQuery:          if not NoQuery:
   
             return self.ZSQLQuery(query)              return self.ZSQLQuery(query)

Removed from v.1.86  
changed lines
  Added in v.1.87


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