Diff for /ZSQLExtend/ZSQLExtend.py between versions 1.107 and 1.110

version 1.107, 2007/04/02 09:48:13 version 1.110, 2007/04/05 14:20:08
Line 4  from Globals import DTMLFile,package_hom Line 4  from Globals import DTMLFile,package_hom
 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,Unauthorized
 from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate  from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile  from Products.PageTemplates.PageTemplateFile import PageTemplateFile
   
Line 20  import os Line 19  import os
 import copy  import copy
 import unicodedata  import unicodedata
 import tempfile  import tempfile
 import logging  import sys
   
 #ersetzt logging  #ersetzt logging
 def logger(txt,method,txt2):  def logger(txt,method,txt2):
Line 322  class ZSQLExtendFolder(Folder,Persistent Line 321  class ZSQLExtendFolder(Folder,Persistent
         return ret          return ret
                   
           
     def importXMLFile(self,table,data=None,identify=None,filename=None,RESPONSE=None):      def importXMLFile(self,table,containerTagName,fieldNames,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
Line 332  class ZSQLExtendFolder(Folder,Persistent Line 331  class ZSQLExtendFolder(Folder,Persistent
         @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)
         '''          '''
           ret=""
         from xml.dom.pulldom import parseString          from xml.dom.pulldom import parseString
   
         doc=parseString(file.read())          doc=parseString(file.read())
Line 409  class ZSQLExtendFolder(Folder,Persistent Line 409  class ZSQLExtendFolder(Folder,Persistent
                 #print "wrote: %s"%fn                  #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,RESPONSE=None):      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
Line 443  class ZSQLExtendFolder(Folder,Persistent Line 443  class ZSQLExtendFolder(Folder,Persistent
         options.sync_mode=sync_mode          options.sync_mode=sync_mode
         options.replace_table=replace          options.replace_table=replace
         options.lc_names=True          options.lc_names=True
       options.ascii_db=ascii_db
         importFMPXML(options)          importFMPXML(options)
                   
         os.remove(filename)          os.remove(filename)
Line 690  class ZSQLExtendFolder(Folder,Persistent Line 691  class ZSQLExtendFolder(Folder,Persistent
                                   valueName=None,start=None,                                     valueName=None,start=None, 
                                   multiple='',startValue=None,                                    multiple='',startValue=None,
                                   additionalSelect="",size=None,                                    additionalSelect="",size=None,
                                   linelen=None,selected=None):                                    linelen=None,selected=None,
                                     clear=False):
         """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 698  class ZSQLExtendFolder(Folder,Persistent Line 700  class ZSQLExtendFolder(Folder,Persistent
         <option value=result.fieldName>result.fieldValue</option>          <option value=result.fieldName>result.fieldValue</option>
         erzeugt.          erzeugt.
                   
         @parameter fieldname: Name fuer name-wert im select-tag          @param fieldname: Name fuer name-wert im select-tag
         @results results: Resultobject einer SQL-suche          @param results: Resultobject einer SQL-suche
         @parameter fieldName: Name des Feldes, das als value in den option-tag geschrieben werden soll.          @param fieldName: Name des Feldes, das als value in den option-tag geschrieben werden soll.
         @parameter valueName: (optional) Name des Feldes, dass als im option-tag ausgegeben wird, default wert ist valueName=fieldName          @param valueName: (optional) Name des Feldes, dass als im option-tag ausgegeben wird, default wert ist valueName=fieldName
         @start: (optional) falls zusaetzliches option tag erzeugt werden soll, gibt start an was im option tag steht          @param start: (optional) falls zusaetzliches option tag erzeugt werden soll, gibt start an was im option tag steht
         @startValue (optional): gibt den entsprechenden Wert an.          @param startValue (optional): gibt den entsprechenden Wert an.
         @selected (optional): Wert der ausgewaehlt sein soll.          @param selected (optional): Wert der ausgewaehlt sein soll.
         @linelen: (optional) maximale laenge eines Eintrages           @param linelen: (optional) maximale laenge eines Eintrages 
                     der im Klappmenue noch angezeigt wird, laengeres wird abgeschnitten.                      der im Klappmenue noch angezeigt wird, laengeres wird abgeschnitten.
         @addionalSaelect (optional): zusaetzlicher text fuer den select tag          @param addionalSaelect (optional): zusaetzlicher text fuer den select tag
           @param clear (optional): setze auf den startwert. 
         """          """
         if not valueName:          if not valueName:
             valueName=fieldName              valueName=fieldName
Line 724  class ZSQLExtendFolder(Folder,Persistent Line 727  class ZSQLExtendFolder(Folder,Persistent
             if not startValue:              if not startValue:
                     startValue=start                      startValue=start
                                                           
               if clear:
                   ret+="""<option selected value="%s" >%s</option>"""%(startValue,start)
               else:
             ret+="""<option value="%s" >%s</option>"""%(startValue,start)              ret+="""<option value="%s" >%s</option>"""%(startValue,start)
               
         for result in results:          for result in results:
Line 735  class ZSQLExtendFolder(Folder,Persistent Line 741  class ZSQLExtendFolder(Folder,Persistent
             else:               else: 
                 displayValue = fieldValue                  displayValue = fieldValue
                                   
                        if displayValue: #show only if value not none
             if field == selected:              if field == selected:
   
                 ret+="""<option value="%s" selected>%s</option>"""%(field,displayValue)                  ret+="""<option value="%s" selected>%s</option>"""%(field,displayValue)
Line 852  class ZSQLExtendFolder(Folder,Persistent Line 858  class ZSQLExtendFolder(Folder,Persistent
   
     def ZSQLSimpleSearch(self,query=None,max_rows=1000000):      def ZSQLSimpleSearch(self,query=None,max_rows=1000000):
         """simple search"""          """simple search"""
               #logging.error("ZSQLSimpleSearch X %s"%query)
         #print query          #print query
         if not query:          if not query:
             query=self.query              query=self.query
Line 864  class ZSQLExtendFolder(Folder,Persistent Line 870  class ZSQLExtendFolder(Folder,Persistent
                           
             self._v_searchSQL.max_rows_=max_rows              self._v_searchSQL.max_rows_=max_rows
             try:              try:
                 return self._v_searchSQL.__call__(var=query)                  logging.error("I am here")
                   t=self._v_searchSQL.__call__(var=query)
                   logging.error("I am here %s"%t)
                   return t
             except :              except :
                   logger("ZSQLSimpleSearch ERROR1",logging.ERROR, '%s %s'%sys.exc_info()[:2])
                 if sys.exc_info()[0]=="Database Error":                  if sys.exc_info()[0]=="Database Error":
                     try:                      try:
                         self.getConnectionObj().manage_open_connection()                          self.getConnectionObj().manage_open_connection()
                     except:                      except:
                         logger("ZSQLSimpleSearch",logging.ERROR, '%s %s'%sys.exc_info()[:2])                          logger("ZSQLSimpleSearch ERROR2",logging.ERROR, '%s %s'%sys.exc_info()[:2])
         else:          else:
             try:              try:
   
Line 879  class ZSQLExtendFolder(Folder,Persistent Line 888  class ZSQLExtendFolder(Folder,Persistent
                                   
                 return self._v_searchSQL.__call__(var=query)                  return self._v_searchSQL.__call__(var=query)
             except :              except :
                   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":
                     try:                      try:
                         self.getConnectionObj().manage_open_connection()                          self.getConnectionObj().manage_open_connection()
Line 1037  class ZSQLExtendFolder(Folder,Persistent Line 1046  class ZSQLExtendFolder(Folder,Persistent
             return True              return True
         
   
     def ZSQLFindIndexed(self,qs="",select="oid,*",storename=None,indexedFields=['data_line'],restrictField='id_text',**argv):      def ZSQLFindIndexed(self,tableList=[],qs="",select="oid,*",storename=None,indexedFields=['data_line'],restrictField='id_text',**argv):
         """find2"""          """find2"""
                   
         for index in self.ZopeFind(self,obj_ids=indexedFields):          for index in self.ZopeFind(self,obj_ids=indexedFields):
Line 1123  class ZSQLExtendFolder(Folder,Persistent Line 1132  class ZSQLExtendFolder(Folder,Persistent
                   
                                 
         #print "calling Query with",repr(NoQuery)          #print "calling Query with",repr(NoQuery)
           logging.error("blo")
         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"]
                   
           logging.error("BlAAAAAAAAAA %s"%ret)
                   
         return ret          return ret
   
Line 1349  class ZSQLExtendFolder(Folder,Persistent Line 1360  class ZSQLExtendFolder(Folder,Persistent
             #something is defined by _op_TABELLE.SUCHFELD_IN_DIESER_TABELLE.SELECT_FIELD.IDENTIFIER_IN_TABELLE              #something is defined by _op_TABELLE.SUCHFELD_IN_DIESER_TABELLE.SELECT_FIELD.IDENTIFIER_IN_TABELLE
                           
             elif (not name[0]==iCT) and len(punktsplit)==4:              elif (not name[0]==iCT) and len(punktsplit)==4:
                   
                 if opfields.has_key(name):                  if opfields.has_key(name):
                     op=opfields[name]                      op=opfields[name]
                 else:                  else:
Line 1389  class ZSQLExtendFolder(Folder,Persistent Line 1401  class ZSQLExtendFolder(Folder,Persistent
   
                 op="all"                  op="all"
   
                   if value!='': #lehre Werte werde nicht hinzugefuegt
                 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)
Line 1439  class ZSQLExtendFolder(Folder,Persistent Line 1451  class ZSQLExtendFolder(Folder,Persistent
   
                 op="all"                  op="all"
   
                 if (not tableExt) or (namealt.split('.')[0]==tableExt):                  if (value!='') and ((not tableExt) or (namealt.split('.')[0]==tableExt)): #keine leeren werde und keine auschluss
                     if searchFields.has_key(namealt):                      if searchFields.has_key(namealt):
                         searchFields[namealt]+=lopfields.get(name,'OR')+" "+tmp                          searchFields[namealt]+=lopfields.get(name,'OR')+" "+tmp
                         searchFieldsOnly[namealt]+=lopfields.get(name,'OR')+" "+value                          searchFieldsOnly[namealt]+=lopfields.get(name,'OR')+" "+value

Removed from v.1.107  
changed lines
  Added in v.1.110


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