Diff for /ZSQLExtend/ZSQLExtend.py between versions 1.42 and 1.49

version 1.42, 2004/10/21 15:36:53 version 1.49, 2004/11/03 14:52:30
Line 1 Line 1
 from OFS.Folder import Folder  from OFS.Folder import Folder
 from Globals import Persistent  from Globals import Persistent
 from Acquisition import Implicit  from Acquisition import Implicit
 from Globals import DTMLFile  from Globals import DTMLFile,package_home
 import urllib  import urllib
 import re  import re
 import string  import string
Line 17  def analyseIntSearch(word): Line 17  def analyseIntSearch(word):
     #analyse integer searches      #analyse integer searches
   
     splitted=word.split("-")      splitted=word.split("-")
     print splitted  
       if len(splitted)==1:
           return "="+splitted[0]
       
     if splitted[0]=="":      if splitted[0]=="":
         return "< "+splitted[1]          return "< "+splitted[1]
   
Line 55  class ZSQLExtendFolder(Folder,Persistent Line 58  class ZSQLExtendFolder(Folder,Persistent
         """suche relative haufigkeiten"""          """suche relative haufigkeiten"""
         ret={}          ret={}
         allRecords=len(self.ZSQLSimpleSearch(statement + " where "+wherePart))          allRecords=len(self.ZSQLSimpleSearch(statement + " where "+wherePart))
         print statement + " where "+wherePart          
         for oneclass in classes:          for oneclass in classes:
             ret[oneclass]=len(self.ZSQLSimpleSearch(statement + " where ("+wherePart+") and "+ relStatement%oneclass))              ret[oneclass]=len(self.ZSQLSimpleSearch(statement + " where ("+wherePart+") and "+ relStatement%oneclass))
             print statement + " where ("+wherePart+") and "+ relStatement%oneclass          
         return (ret,allRecords)          return (ret,allRecords)
                                       
     def content_html(self):      def content_html(self):
Line 68  class ZSQLExtendFolder(Folder,Persistent Line 71  class ZSQLExtendFolder(Folder,Persistent
             obj=getattr(self,"ZSQLBibliography_template")              obj=getattr(self,"ZSQLBibliography_template")
             return obj()              return obj()
         except:          except:
             pt=PageTemplateFile('Products/ZSQLExtend/zpt/ZSQLBibliography_template_standard.zpt',content_type='text/htm').__of__(self)              pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ZSQLBibliography_template_standard.zpt'),content_type='text/html').__of__(self)
             pt.content_type="text/html"              pt.content_type="text/html"
                           
             return pt()              return pt()
Line 101  class ZSQLExtendFolder(Folder,Persistent Line 104  class ZSQLExtendFolder(Folder,Persistent
   
     def changeZSQLExtendForm(self):      def changeZSQLExtendForm(self):
         """change folder config"""          """change folder config"""
         pt=PageTemplateFile('Products/ZSQLExtend/zpt/changeZSQLExtendForm.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeZSQLExtendForm.zpt')).__of__(self)
         return pt()          return pt()
   
   
Line 290  class ZSQLExtendFolder(Folder,Persistent Line 293  class ZSQLExtendFolder(Folder,Persistent
   
     def ZSQLSimpleSearch(self,query=None):      def ZSQLSimpleSearch(self,query=None):
         """ returrn SQLSearch"""          """ returrn SQLSearch"""
         #print query          #print "hi",query
         if not query:          if not query:
             query=self.query              query=self.query
         if getattr(self,'_v_search',None):          if getattr(self,'_v_search',None):
Line 377  class ZSQLExtendFolder(Folder,Persistent Line 380  class ZSQLExtendFolder(Folder,Persistent
         self.ZSQLSimpleSearch(queryString)          self.ZSQLSimpleSearch(queryString)
         return self.REQUEST.RESPONSE.redirect(format)          return self.REQUEST.RESPONSE.redirect(format)
   
     def ZSQLChange_old(self):  
         """change entries"""  
         qs=self.REQUEST['QUERY_STRING']  
         #print "CHANGE QS",self.REQUEST  
         #return self.REQUEST  
         changeList=[]  
         for q in qs.split("&"):  
             name=urllib.unquote(re.sub("r'+'"," ",q.split("=")[0].lower()))  
             value=q.split("=")[1]  
             value=re.sub(r'\+'," ",value)  
         value=urllib.unquote(value)  
         if name=="-table":  
                 table=urllib.unquote(value)  
             elif name=="-identify":  
                 identify=urllib.unquote(value)  
                 identify=identify.split("=")[0]+"="+sql_quote(identify.split("=")[1])  
             elif name=="-format":  
                 format=urllib.unquote(value)  
             elif (not name[0]=="-") and (not len(value)==0):  
                 changeList.append("\""+name+"\"="+sql_quote(urllib.unquote(value)))  
         changeString=string.join(changeList,",")  
         queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify)  
         self.ZSQLSimpleSearch(queryString)  
         return self.REQUEST.RESPONSE.redirect(format)  
   
   
   
     def ZSQLFind2(self,qs="",select="oid,*",storename=None,tableList=['cdli_translit','cdli_cat'],**argv):      def ZSQLFind2(self,qs="",select="oid,*",storename=None,tableList=['cdli_translit','cdli_cat'],**argv):
Line 527  class ZSQLExtendFolder(Folder,Persistent Line 505  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 ZSQLNewQuery(self,linkText,storename=None,**argv):
           """suche neu"""
           return self.ZSQLNewSearch(linkText,storename,url=self.REQUEST['URL'],args=argv)
       
       def ZSQLNewSearch(self,linkText,storename=None,url=None,args=None,**argv):
           """suche mit alten parametern bis auf die in argv getauschten"""
   
           if storename: 
               """store"""  
           else:
               storename="foundCount"
           qs=self.REQUEST.SESSION[storename]['qs']
   
           if args:
               argv=args
               
           querys=qs.split(",")
           argList=[]
           arg=""
           queryList=[x.split("=")[0] for x in querys]
           
           for argTmp in argv.keys():
               
               
               arg=argTmp[0:]
               if arg[0]=="_":arg="-"+argTmp[1:] # aender _ in - als standard
   
               if arg not in queryList: # noch nicht drin
                   querys.append("%s=%s"%(arg,argv[argTmp]))
               argList.append(arg)
   
   
           
           newquery=[]
           for query in querys:
               queryArg=query.split("=")[0]
               qarg=queryArg[0:]
               if qarg[0]=="-":qarg="_"+queryArg[1:] # aender _ in - als standard
               
               if  queryArg in argList:
                   newquery.append("%s=%s"%(queryArg,argv[qarg]))
               else:
                   newquery.append(query)
   
           if url:
               str=url+"?"+"&".join(newquery)
           else:
               str="ZSQLSearch?"+"&".join(newquery)
           
           return """<a href="%s"> %s</a>"""%(str,linkText)
       
     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):      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  
                   
         lop="AND" # standardsuche mit and          lop="AND" # standardsuche mit and
         max="ALL" #standard alle auswählen          max="ALL" #standard alle auswaehlen
         maxstr=""          maxstr=""
         whereList=[]          whereList=[]
         sort=""          sort=""
         op="bw"          op="bw"
         opfields={}          opfields={}
         lopfields={} #Verknüpfung bei mehrfachauswahl von einem feld          lopfields={} #Verknuepfung bei mehrfachauswahl von einem feld
         sortfields={} #order of sortfields          sortfields={} #order of sortfields
         sortAllFields=None          sortAllFields=None
         skip=""          skip=""
Line 550  class ZSQLExtendFolder(Folder,Persistent Line 580  class ZSQLExtendFolder(Folder,Persistent
         #print "Q",nostore,qs          #print "Q",nostore,qs
         #check for op           #check for op 
                   
   
   
           
     splitted=qs.split(",")      splitted=qs.split(",")
         if tableExt:          if tableExt:
             table=tableExt              table=tableExt
Line 679  class ZSQLExtendFolder(Folder,Persistent Line 712  class ZSQLExtendFolder(Folder,Persistent
                 elif op=="numerical":                  elif op=="numerical":
                     term=analyseIntSearch(value)                      term=analyseIntSearch(value)
                     tmp=(name+" "+term)                      tmp=(name+" "+term)
                   elif op=="grep":
                       tmp=(name+" ~* "+sql_quote(value))
                 elif op=="one":                  elif op=="one":
                     tmps=[]                      tmps=[]
                     for word in value.split(" "):                      for word in value.split(" "):
Line 686  class ZSQLExtendFolder(Folder,Persistent Line 721  class ZSQLExtendFolder(Folder,Persistent
                                                   
                     tmp=string.join(tmps,' OR ')                      tmp=string.join(tmps,' OR ')
   
                 op="ct"                  op="all"
   
                 if (not tableExt) or (namealt.split('.')[0]==tableExt):                  if (not tableExt) or (namealt.split('.')[0]==tableExt):
                     if searchFields.has_key(name):                      if searchFields.has_key(name):
Line 732  class ZSQLExtendFolder(Folder,Persistent Line 767  class ZSQLExtendFolder(Folder,Persistent
             #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]={}
   
               self.REQUEST.SESSION[storename]['qs']=qs #sichere Querystring
   
             if self.REQUEST.SESSION[storename].has_key('queryString2'):              if self.REQUEST.SESSION[storename].has_key('queryString2'):
   
                 if not self.REQUEST.SESSION[storename]['queryString2']==query2:                  if not self.REQUEST.SESSION[storename]['queryString2']==query2:
Line 811  class ZSQLExtendFolder(Folder,Persistent Line 849  class ZSQLExtendFolder(Folder,Persistent
                                                                                                   
     def nextLink(self,html,storename="foundCount"):      def nextLink(self,html,storename="foundCount"):
         """nextLink"""          """nextLink"""
         print self.REQUEST.SESSION[storename]['rangeSize']  
         try:          try:
             limit=self.REQUEST.SESSION[storename]['rangeSize']              limit=self.REQUEST.SESSION[storename]['rangeSize']
             if int(limit)==0 :              if int(limit)==0 :
Line 858  class ZSQLExtendFolder(Folder,Persistent Line 896  class ZSQLExtendFolder(Folder,Persistent
             newquery.append(query)              newquery.append(query)
                                   
         newquerystring=string.join(newquery,"&")          newquerystring=string.join(newquery,"&")
       return "<a href='%s'>%s</a>"%(self.REQUEST['URL']+"?"+newquerystring,html)
           
         return "<a href='%s'>%s</a>"%(self.actualPath()+"?"+newquerystring,html)  
                           
                   
     def prevLink(self,html,storename="foundCount"):      def prevLink(self,html,storename="foundCount"):
Line 885  class ZSQLExtendFolder(Folder,Persistent Line 923  class ZSQLExtendFolder(Folder,Persistent
                   
         if self.REQUEST['QUERY_STRING']=="":          if self.REQUEST['QUERY_STRING']=="":
             qs=self.REQUEST.SESSION['query']              qs=self.REQUEST.SESSION['query']
             #qs=re.sub(r'_','-',qs) #aendern für query              #qs=re.sub(r'_','-',qs) #aendern fuer query
             queries=string.split(qs,",")              queries=string.split(qs,",")
                           
                           
Line 916  class ZSQLExtendFolder(Folder,Persistent Line 954  class ZSQLExtendFolder(Folder,Persistent
                           
         newquerystring=string.join(newquery,"&")          newquerystring=string.join(newquery,"&")
   
         return "<a href='%s'>%s</a>"%(self.actualPath()+"?"+newquerystring,html)          return "<a href='%s'>%s</a>"%(self.REQUEST['URL']+"?"+newquerystring,html)
   
   
           
Line 1041  class ZSQLBibliography(Folder,ZSQLExtend Line 1079  class ZSQLBibliography(Folder,ZSQLExtend
                           
     def changeZSQLBibliographyForm(self):      def changeZSQLBibliographyForm(self):
         """change folder config"""          """change folder config"""
         pt=PageTemplateFile('Products/ZSQLExtend/zpt/changeZSQLBibliographyForm.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeZSQLBibliographyForm.zpt')).__of__(self)
         return pt()          return pt()
   
   
Line 1052  class ZSQLBibliography(Folder,ZSQLExtend Line 1090  class ZSQLBibliography(Folder,ZSQLExtend
             obj=getattr(self,"ZSQLBibliography_template")              obj=getattr(self,"ZSQLBibliography_template")
             return obj()              return obj()
         except:          except:
             pt=PageTemplateFile('Products/ZSQLExtend/zpt/ZSQLBibliography_template_standard.zpt').__of__(self)              pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ZSQLBibliography_template_standard.zpt')).__of__(self)
             pt.content_type="text/html"              pt.content_type="text/html"
             return pt()              return pt()
   
Line 1145  class ZSQLBibliography(Folder,ZSQLExtend Line 1183  class ZSQLBibliography(Folder,ZSQLExtend
         fn=os.path.splitext(self.REQUEST['fn'])[0]+"."          fn=os.path.splitext(self.REQUEST['fn'])[0]+"."
         self.REQUEST['fn']=fn          self.REQUEST['fn']=fn
   
         pt=PageTemplateFile('Products/ZSQLExtend/zpt/record2.xml').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','record2.xml')).__of__(self)
         pt.content_type="text/xml"          pt.content_type="text/xml"
         return pt()          return pt()
   
     def getMetaDataXML(self):      def getMetaDataXML(self):
         """crate index meta"""          """crate index meta"""
         pt=PageTemplateFile('Products/ZSQLExtend/zpt/record.xml').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','record.xml')).__of__(self)
         pt.content_type="text/xml"          pt.content_type="text/xml"
         return pt()          return pt()
   

Removed from v.1.42  
changed lines
  Added in v.1.49


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