Diff for /ZSQLExtend/ZSQLExtend.py between versions 1.116 and 1.120

version 1.116, 2007/05/25 15:01:32 version 1.120, 2007/11/05 18:45:35
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 328  class ZSQLExtendFolder(Folder,Persistent Line 358  class ZSQLExtendFolder(Folder,Persistent
                   
           
     def importXMLFileFMP(self,table,dsn=None,uploadfile=None,update_fields=None,id_field=None,sync_mode=False,      def importXMLFileFMP(self,table,dsn=None,uploadfile=None,update_fields=None,id_field=None,sync_mode=False,
                          lc_names=True,keep_fields=False,replace=False,ascii_db=False,                           lc_names=True,keep_fields=False,ascii_db=False,replace=False,backup=False,
                            debug=False,log_to_response=False,
                          redirect_url=None,RESPONSE=None):                           redirect_url=None,RESPONSE=None):
         '''          '''
         Import FileMaker XML file (FMPXMLRESULT format) into the table.          Import FileMaker XML file (FMPXMLRESULT format) into the table.
Line 342  class ZSQLExtendFolder(Folder,Persistent Line 373  class ZSQLExtendFolder(Folder,Persistent
         @param keep_fields: (optional) don't add fields to SQL database          @param keep_fields: (optional) don't add fields to SQL database
         @param ascii_db: (optional) assume ascii encoding in db          @param ascii_db: (optional) assume ascii encoding in db
         @param replace: (optional) delete and re-insert data          @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
         '''          '''
Line 370  class ZSQLExtendFolder(Folder,Persistent Line 402  class ZSQLExtendFolder(Folder,Persistent
         options.keep_fields=keep_fields          options.keep_fields=keep_fields
         options.ascii_db=ascii_db          options.ascii_db=ascii_db
         options.replace_table=replace          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")
               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)          os.remove(filename)
                   
           if RESPONSE and log_to_response:
               loghandler.flush()
               RESPONSE.write("\n\n DONE!")
               return
           
         if RESPONSE and redirect_url:          if RESPONSE and redirect_url:
             RESPONSE.redirect(redirect_url)              RESPONSE.redirect(redirect_url)
   
Line 422  class ZSQLExtendFolder(Folder,Persistent Line 474  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)"""
           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"""
           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 476  class ZSQLExtendFolder(Folder,Persistent Line 547  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 491  class ZSQLExtendFolder(Folder,Persistent Line 562  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 505  class ZSQLExtendFolder(Folder,Persistent Line 580  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 878  class ZSQLExtendFolder(Folder,Persistent Line 955  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 896  class ZSQLExtendFolder(Folder,Persistent Line 976  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":

Removed from v.1.116  
changed lines
  Added in v.1.120


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