Diff for /ZSQLExtend/ZSQLExtend.py between versions 1.50 and 1.59

version 1.50, 2004/11/27 22:41:43 version 1.59, 2005/02/09 20:10:42
Line 1 Line 1
 from OFS.Folder import Folder  from OFS.Folder import Folder
 from Globals import Persistent  
 from Acquisition import Implicit  from Acquisition import Implicit
 from Globals import DTMLFile,package_home  from Globals import DTMLFile,package_home,Persistent
 import urllib  import urllib
 import re  import re
 import string  import string
   import sys
 #from pyPgSQL import libpq  #from pyPgSQL import libpq
 from AccessControl import getSecurityManager  from AccessControl import getSecurityManager
 import os.path  from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile  from Products.PageTemplates.PageTemplateFile import PageTemplateFile
   
 from Products.ZSQLMethods.SQL import SQLConnectionIDs  from Products.ZSQLMethods.SQL import SQLConnectionIDs
 import Shared.DC.ZRDB.DA  import Shared.DC.ZRDB.DA
   import zLOG
   import os.path
   import os
   
 def analyseIntSearch(word):  def analyseIntSearch(word):
     #analyse integer searches      #analyse integer searches
Line 54  class ZSQLExtendFolder(Folder,Persistent Line 57  class ZSQLExtendFolder(Folder,Persistent
         classes=['Uruk III','Uruk IV']          classes=['Uruk III','Uruk IV']
         return self.searchRel(relStatement,statement,wherePart,classes)          return self.searchRel(relStatement,statement,wherePart,classes)
           
       def URLquote(self,txt):
           """urlquote"""
           return urllib.quote(txt)
     def searchRel(self,relStatement,statement,wherePart,classes):      def searchRel(self,relStatement,statement,wherePart,classes):
         """suche relative haufigkeiten"""          """suche relative haufigkeiten"""
         ret={}          ret={}
Line 304  class ZSQLExtendFolder(Folder,Persistent Line 310  class ZSQLExtendFolder(Folder,Persistent
         #print "INLINE:",query          #print "INLINE:",query
         return self.ZSQLSimpleSearch(query)          return self.ZSQLSimpleSearch(query)
                   
       def ZSQLSimpleSearch(self,query=None,max_rows=1000000):
           """simple search"""
   
           if not query:
               query=self.query
           
           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.connection_id,"var","<dtml-var var>")
               self._v_searchSQL.max_rows_=max_rows
               try:
                   return self._v_searchSQL.__call__(var=query)
               except :
                   if sys.exc_info()[0]=="Database Error":
                       try:
                           getattr(self,self.connection_id).manage_open_connection()
                       except: pass
           else:
               try:
                   self._v_searchSQL.max_rows_=max_rows
                   return self._v_searchSQL.__call__(var=query)
               except :
                   if sys.exc_info()[0]=="Database Error":
                       try:
                           getattr(self,self.connection_id).manage_open_connection()
                       except: pass
   
     def ZSQLSimpleSearch(self,query=None):      def ZSQLSimpleSearch2(self,query=None):
         """ returrn SQLSearch"""          """ returrn SQLSearch"""
         #print "hi",query          #print "hi",query
         if not query:          if not query:
Line 396  class ZSQLExtendFolder(Folder,Persistent Line 427  class ZSQLExtendFolder(Folder,Persistent
   
         
   
     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'],restrictField='id_text',**argv):
         """find2"""          """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=qs,select=select,storename=storename,tableExt=tableList[1],restrictField=restrictField,NoQuery='yes',NoLimit='yes',**argv)
   
         search1= self.ZSQLFind(qs="",select="oid,*",storename=None,tableExt='cdli_cat',restrictField='id_text',NoQuery='yes',NoLimit='yes',**argv)          search2 = self.ZSQLFind(tableExt=tableList[0],qs=qs,select=select,storename=storename,restrictConnect=(tableList[0]+"."+restrictField,search1),**argv)
   
         search2 = self.ZSQLFind(tableExt='cdli_translit',qs="",select="oid,*",storename=None,restrictConnect=('cdli_translit.id_text',search1),**argv)  
         return search2          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):      def ZSQLFind(self,qs="",select="oid,*",storename=None,tableExt=None,NoQuery=None,NoLimit=None,restrictField=None,restrictConnect=None,filter=None,**argv):
         """Find"""          """Find"""
Line 452  class ZSQLExtendFolder(Folder,Persistent Line 479  class ZSQLExtendFolder(Folder,Persistent
                                         
                    qs+=",%s=%s"%(fieldTmp,argv[field])                     qs+=",%s=%s"%(fieldTmp,argv[field])
   
            
   
         else:          else:
             self.REQUEST['QUERY_STRING']=qs              self.REQUEST['QUERY_STRING']=qs
   
Line 651  class ZSQLExtendFolder(Folder,Persistent Line 680  class ZSQLExtendFolder(Folder,Persistent
                     #print "HI",op,field                      #print "HI",op,field
     #print opfieldsa      #print opfieldsa
         #now analyse the querystring          #now analyse the querystring
          
         for q in qs.split(","):          for q in qs.split(","):
                           
                           
Line 751  class ZSQLExtendFolder(Folder,Persistent Line 781  class ZSQLExtendFolder(Folder,Persistent
                 op="all"                  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(namealt):
                         searchFields[name]+=lopfields.get(name,'OR')+" "+tmp                          searchFields[namealt]+=lopfields.get(name,'OR')+" "+tmp
                         searchFieldsOnly[name]+=lopfields.get(name,'OR')+" "+value                          searchFieldsOnly[namealt]+=lopfields.get(name,'OR')+" "+value
                     else:                       else: 
                         searchFields[name]=tmp                          searchFields[namealt]=tmp
                         searchFieldsOnly[name]=value                          searchFieldsOnly[namealt]=value
   
   
         whereList=["("+searchFields[x]+")" for x in searchFields.keys()]          whereList=["("+searchFields[x]+")" for x in searchFields.keys()]
   
Line 829  class ZSQLExtendFolder(Folder,Persistent Line 860  class ZSQLExtendFolder(Folder,Persistent
   
             return query              return query
                           
       def ZSQLUniqueQuery(self,value,returns):
           """unique relation"""
           if returns:
               statement="""select %s from %s where %s = '%s' """%(returns[1],returns[0],returns[2],value)
               founds=self.ZSQLSimpleSearch(statement)
               if founds:
                   return getattr(founds[0],returns[1])
               else:
                   return value
           else:
               return value
           
     def ZSQLQuery(self,query):      def ZSQLQuery(self,query):
         """query"""          """query"""
         #print "hi",query  
         return self.ZSQLSimpleSearch(query)          return self.ZSQLSimpleSearch(query)
           
       
     def ZSQLSearch(self):      def ZSQLSearch(self):
         """To be done"""          """To be done"""
         rq=self.REQUEST['QUERY_STRING']          rq=self.REQUEST['QUERY_STRING']
   
         querys=rq.split("&")          querys=rq.split("&")
                   
           
         formatfile=self.REQUEST['URL1'] #generisch redirect zur gleichen url          formatfile=self.REQUEST['URL1'] #generisch redirect zur gleichen url
                   
         for querytemp in querys:          for querytemp in querys:
             query=querytemp.split("=")              query=querytemp.split("=")
                           
                           
             print "fmtfile",formatfile  
                           
             try:              try:
                 if query[0].lower()=="-format":                  if query[0].lower()=="-format":
Line 856  class ZSQLExtendFolder(Folder,Persistent Line 902  class ZSQLExtendFolder(Folder,Persistent
                                   
         #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 1128  class ZSQLBibliography(Folder,ZSQLExtend Line 1175  class ZSQLBibliography(Folder,ZSQLExtend
             pt.content_type="text/html"              pt.content_type="text/html"
             return pt()              return pt()
   
     def changeZSQLBibliography(self,tableName,label,description,REQUEST=None):      def changeZSQLBibliography(self,tableName,label,description,connection_id=None,REQUEST=None):
         """change it"""          """change it"""
           self.connection_id=connection_id
         self.tableName=tableName          self.tableName=tableName
         self.label=label          self.label=label
         self.description=description          self.description=description
Line 1139  class ZSQLBibliography(Folder,ZSQLExtend Line 1187  class ZSQLBibliography(Folder,ZSQLExtend
   
     manage_options=Folder.manage_options+(      manage_options=Folder.manage_options+(
         {'label':'Main Config','action':'changeZSQLBibliographyForm'},          {'label':'Main Config','action':'changeZSQLBibliographyForm'},
           {'label':'Generate RDF Template','action':'generateRDFTemplate'},
           {'label':'Generate XML Template','action':'generateXMLTemplate'},
        )         )
   
   
Line 1203  class ZSQLBibliography(Folder,ZSQLExtend Line 1253  class ZSQLBibliography(Folder,ZSQLExtend
   
         return retdata,fieldlist          return retdata,fieldlist
   
       def createRDFTag(self,tag,content):
           """create RDF"""
           if content:
               ret=""" <cdli:%s>%s</cdli:%s>"""%(tag,content,tag)
               return ret.decode('latin-1')
           else:
               return ""
       
     def createIndexTag(self,tag,content):      def createIndexTag(self,tag,content):
         """creste tag"""          """create tag"""
         if content:          if content:
             ret="""<%s>%s</%s>"""%(tag,content,tag)              ret="""<%s>%s</%s>"""%(tag,content,tag)
             return ret              return ret
Line 1221  class ZSQLBibliography(Folder,ZSQLExtend Line 1279  class ZSQLBibliography(Folder,ZSQLExtend
         pt.content_type="text/xml"          pt.content_type="text/xml"
         return pt()          return pt()
   
   
       def generateRDFTemplate(self,REQUEST=None):
           """generateRDFtemplate"""
           zt=ZopePageTemplate('record.rdf')
           self._setObject('record.rdf',zt)
           default_content_fn = os.path.join(package_home(globals()),
                                             'zpt','record.rdf')
           text = open(default_content_fn).read()
           zt.pt_edit(text, 'text/xml')
   
   
           if REQUEST is not None:
               return self.manage_main(self, REQUEST)
   
       def generateXMLTemplate(self,REQUEST=None):
           """generateXMLtemplate"""
           zt=ZopePageTemplate('record.xml')
           self._setObject('record.xml',zt)
           default_content_fn = os.path.join(package_home(globals()),
                                             'zpt','record.xml')
           text = open(default_content_fn).read()
           zt.pt_edit(text, 'text/xml')
   
   
           if REQUEST is not None:
               return self.manage_main(self, REQUEST)
       def getMetaDataRDF(self):
           """crate index meta"""
           find=self.ZopeFind(self,obj_ids=["record.rdf"])
           if not find:
               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','record.rdf')).__of__(self)
               pt.content_type="text/xml"
               return pt()
           else:
               return find[0][1]()
   
     def getMetaDataXML(self):      def getMetaDataXML(self):
         """crate index meta"""          """crate index meta"""
           find=self.ZopeFind(self,obj_ids=["record.xml"])
           if not find:
         pt=PageTemplateFile(os.path.join(package_home(globals()),'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()
           else:
               return find[0][1]()
   
   
     def getMetaDatasXML(self):      def getMetaDatasXML(self):
         """index"""          """index"""
Line 1258  manage_addZSQLBibliographyForm=DTMLFile( Line 1357  manage_addZSQLBibliographyForm=DTMLFile(
 def manage_addZSQLBibliography(self, id, tableName,label,description,title='',  def manage_addZSQLBibliography(self, id, tableName,label,description,title='',
                      createPublic=0,                       createPublic=0,
                      createUserF=0,                       createUserF=0,
                        connection_id=None,
                      REQUEST=None):                       REQUEST=None):
     """Add a new Folder object with id *id*.      """Add a new Folder object with id *id*.
   
Line 1275  def manage_addZSQLBibliography(self, id, Line 1375  def manage_addZSQLBibliography(self, id,
     setattr(ob,'tableName',tableName)      setattr(ob,'tableName',tableName)
     setattr(ob,'label',label)      setattr(ob,'label',label)
     setattr(ob,'description',description)      setattr(ob,'description',description)
       setattr(ob,'connection_id',connection_id)
           
     checkPermission=getSecurityManager().checkPermission      checkPermission=getSecurityManager().checkPermission
   

Removed from v.1.50  
changed lines
  Added in v.1.59


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