Diff for /ZSQLExtend/ZSQLExtend.py between versions 1.118 and 1.125

version 1.118, 2007/07/31 11:28:48 version 1.125, 2008/02/21 17:59:23
Line 78  def utf8ify(str): Line 78  def utf8ify(str):
         return str.encode('utf-8')          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):
     # quote dictionary      # quote dictionary
Line 350  class ZSQLExtendFolder(Folder,Persistent Line 359  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,ascii_db=False,replace=False,backup=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.
         @param dsn: database connection string          @param dsn: database connection string
         @param table: name of the table the xml shall be imported into          @param table: name of the table the xml shall be imported into (may be comma-separated list)
         @param uploadfile: xmlfile file          @param uploadfile: xmlfile file
         @param update_fields: (optional) list of fields to update; default is to create all fields          @param update_fields: (optional) list of fields to update; default is to create all fields
         @param id_field: (optional) field which uniquely identifies an entry for updating purposes.          @param id_field: (optional) field which uniquely identifies an entry for updating purposes.
Line 380  class ZSQLExtendFolder(Folder,Persistent Line 390  class ZSQLExtendFolder(Folder,Persistent
         if not dsn:          if not dsn:
             dsn=self.getConnectionObj().connection_string              dsn=self.getConnectionObj().connection_string
                           
           tablelist=table.split(',')
           logging.debug("tablelist: %s" %tablelist)
           #table=tables
           
           for t in tablelist :   
               logging.debug("table: %s" %table)  
         options=Options()          options=Options()
         options.dsn=dsn          options.dsn=dsn
         options.table=table              options.table=t
         options.filename=filename          options.filename=filename
         options.update_fields=update_fields          options.update_fields=update_fields
         options.id_field=id_field          options.id_field=id_field
Line 393  class ZSQLExtendFolder(Folder,Persistent Line 409  class ZSQLExtendFolder(Folder,Persistent
         options.ascii_db=ascii_db          options.ascii_db=ascii_db
         options.replace_table=replace          options.replace_table=replace
         options.backup_table=backup          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)  
                   
         if RESPONSE and redirect_url:          
               if RESPONSE and log_to_response:
                   loghandler.flush()
                   RESPONSE.write("\n\n DONE!")
                
               elif RESPONSE and redirect_url:
             RESPONSE.redirect(redirect_url)              RESPONSE.redirect(redirect_url)
   
           os.remove(filename)
   
                           
     def generateIndex(self,field,index_name,table,RESPONSE=None):      def generateIndex(self,field,index_name,table,RESPONSE=None):
         """erzeuge ein Index Objekt einem Feld (experimental)          """erzeuge ein Index Objekt einem Feld (experimental)
Line 445  class ZSQLExtendFolder(Folder,Persistent Line 481  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)"""
           logging.debug("createidset for idfield %s"%idField)
           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"""
           logging.debug("opidset with op %s"%op)
           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 499  class ZSQLExtendFolder(Folder,Persistent Line 556  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 1224  class ZSQLExtendFolder(Folder,Persistent Line 1281  class ZSQLExtendFolder(Folder,Persistent
         querys=qs.split(",")          querys=qs.split(",")
                   
         #which arguments are in the old query string          #which arguments are in the old query string
           
         queryList={}          queryList={}
         for query in querys:          for query in querys:
             arg=query.split("=")[0]              arg=query.split("=")[0]
             if arg[0]=="_": arg="-"+arg[1:] # sicherstellen, dass an Anfang stets "_"              if arg[0]=="_": arg="-"+arg[1:] # sicherstellen, dass an Anfang stets "_"
             try:              try:
                 queryList[arg]=query.split("=")[1]                  queryList[arg]=urllib.unquote_plus(query.split("=")[1])
             except:              except:
                 queryList[arg]=''                     queryList[arg]=''   
                                   
         argList=[]          argList=[]
         arg=""          arg=""
           
           
           
         #gehe durch die zu aendernden Argumente          #gehe durch die zu aendernden Argumente
         for argTmp in argv.keys():          for argTmp in argv.keys():
               
             arg=argTmp[0:]# sicherstellen, dass der string auh kopiert wird              arg=argTmp[0:]# sicherstellen, dass der string auh kopiert wird
             if arg[0]=="_": arg="-"+arg[1:] # sicherstellen, dass an Anfang stets "_"                          if arg[0]=="_": arg="-"+arg[1:] # sicherstellen, dass an Anfang stets "_"            
   
Line 1254  class ZSQLExtendFolder(Folder,Persistent Line 1306  class ZSQLExtendFolder(Folder,Persistent
                   
         return str          return str
           
       
     def parseQueryString(self,qs,iCT,storemax="no",select=None,nostore=None,storename="foundCount",tableExt=None,NoQuery=None,NoLimit=None,restrictField=None,restrictConnect=None,filter=None):      def parseQueryString(self,qs,iCT,storemax="no",select=None,nostore=None,storename="foundCount",tableExt=None,NoQuery=None,NoLimit=None,restrictField=None,restrictConnect=None,filter=None):
         """analysieren den QueryString"""          """analysieren den QueryString"""
                 

Removed from v.1.118  
changed lines
  Added in v.1.125


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