Diff for /ZSQLExtend/ZSQLExtend.py between versions 1.124 and 1.133

version 1.124, 2008/02/15 13:05:41 version 1.133, 2010/02/15 19:10:23
Line 127  class ZSQLExtendFolder(Folder,Persistent Line 127  class ZSQLExtendFolder(Folder,Persistent
         """quote str for sql"""          """quote str for sql"""
         return sql_quote(str)          return sql_quote(str)
           
       def unicodify(self, s):
           """return unicode object for string (utf-8 or latin1) or unicode object s"""
           return unicodify(s)
       
       def utf8ify(self, s):
           """return utf-8 encoded string object for string or unicode object s"""
           return utf8ify(s)
   
           
     def normalizeField(self,table,fieldname, newFieldName=None,mode="alter", RESPONSE=None):      def normalizeField(self,table,fieldname, newFieldName=None,mode="alter", RESPONSE=None):
         """normalize a field, d.h. entfernt alle diakritischen Zeichen und ersetzt diese           """normalize a field, d.h. entfernt alle diakritischen Zeichen und ersetzt diese 
Line 357  class ZSQLExtendFolder(Folder,Persistent Line 365  class ZSQLExtendFolder(Folder,Persistent
         return ret          return ret
                   
           
     def importXMLFileFMP(self,tables,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,                           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 388  class ZSQLExtendFolder(Folder,Persistent
                   
         tfilehd,filename=tempfile.mkstemp()          tfilehd,filename=tempfile.mkstemp()
         tfile=os.fdopen(tfilehd,'w')          tfile=os.fdopen(tfilehd,'w')
         logging.info("import %s"%uploadfile)          logging.info("importXMLFileFMP: importing %s"%uploadfile)
         for c in uploadfile.read():          for c in uploadfile.read():
             tfile.write(c)              tfile.write(c)
         tfile.close()            tfile.close()  
Line 390  class ZSQLExtendFolder(Folder,Persistent Line 398  class ZSQLExtendFolder(Folder,Persistent
         if not dsn:          if not dsn:
             dsn=self.getConnectionObj().connection_string              dsn=self.getConnectionObj().connection_string
                   
         tablelist=tables.split(',')          logging.debug("dsn: %s"%dsn)
           logging.debug("table: %s"%table)
           logging.debug("update_fields: %s"%update_fields)
           logging.debug("id_field: %s"%id_field)
           logging.debug("sync_mode: %s"%sync_mode)
           logging.debug("lc_names: %s"%lc_names)
           logging.debug("keep_fields: %s"%keep_fields)
           logging.debug("ascii_db: %s"%ascii_db)
           logging.debug("replace: %s"%replace)
           logging.debug("backup: %s"%backup)
           logging.debug("debug: %s"%debug)
           logging.debug("log_to_response: %s"%log_to_response)
           logging.debug("RESPONSE: %s"%repr(RESPONSE))
   
           tablelist=table.split(',')
         logging.debug("tablelist: %s" %tablelist)          logging.debug("tablelist: %s" %tablelist)
         #table=tables          #table=tables
                   
         for table in tablelist :             for t in tablelist :   
             logging.debug("table: %s" %table)                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 413  class ZSQLExtendFolder(Folder,Persistent Line 435  class ZSQLExtendFolder(Folder,Persistent
                   
             if RESPONSE and log_to_response:              if RESPONSE and log_to_response:
                 # set up logging to response as plain text                  # set up logging to response as plain text
                   logging.debug("Setting up logging to RESPONSE")
                 RESPONSE.setHeader("Content-Type","text/plain; charset=utf-8")                  RESPONSE.setHeader("Content-Type","text/plain; charset=utf-8")
                 RESPONSE.write("Import FMPXML file...\n\n")                  RESPONSE.write("Import FMPXML file...\n\n")
                   RESPONSE.flush()
                 loghandler = logging.StreamHandler(RESPONSE)                  loghandler = logging.StreamHandler(RESPONSE)
                 if debug:                  if debug:
                     loghandler.setLevel(logging.DEBUG)                      loghandler.setLevel(logging.DEBUG)
Line 425  class ZSQLExtendFolder(Folder,Persistent Line 449  class ZSQLExtendFolder(Folder,Persistent
                 options.use_logger_instance = logger                  options.use_logger_instance = logger
   
             importFMPXML(options)              importFMPXML(options)
                           logging.info("importXMLFileFMP: done")
               
                   
             if RESPONSE and log_to_response:              if RESPONSE and log_to_response:
                 loghandler.flush()                  loghandler.flush()
Line 646  class ZSQLExtendFolder(Folder,Persistent Line 669  class ZSQLExtendFolder(Folder,Persistent
     def ZSQLMultiSearch(self,_table,_searchField,_value,_idField,_additionalStatement="",_select=None,_subselectAddition="",_storename=None):      def ZSQLMultiSearch(self,_table,_searchField,_value,_idField,_additionalStatement="",_select=None,_subselectAddition="",_storename=None):
         """          """
         Durchsucht in einer Tabelle "table" die Spalte "searchfield" nach dem allen Vorkommnissen           Durchsucht in einer Tabelle "table" die Spalte "searchfield" nach dem allen Vorkommnissen 
         von Worten in value und gibt alle Werte mit gleichem id field zurŸck, d.h. es wird die "und" suche Ÿber mehrere Eintrsege in einer          von Worten in value und gibt alle Werte mit gleichem id field zurueck, d.h. es wird die "und" suche ueber mehrere Eintrsege in einer
         Tabelle mit gleichem idField werd realisiert,           Tabelle mit gleichem idField werd realisiert, 
         z.B. fŸr simplesearch ueber mehrere Felder          z.B. fuer simplesearch ueber mehrere Felder
         @param _table: Tabelle, die durchsucht werden soll.          @param _table: Tabelle, die durchsucht werden soll.
         @param _searchField: Feld, das durchsucht wird          @param _searchField: Feld, das durchsucht wird
         @param _value: String der gesucht werden soll, gesucht wird nach allen Worten des Strings, die durch " "-getrennt sind.          @param _value: String der gesucht werden soll, gesucht wird nach allen Worten des Strings, die durch " "-getrennt sind.
         @param _idField: Feld mit id fŸr die identifikation gleicher EintrŠge          @param _idField: Feld mit id fuer die identifikation gleicher Eintraege
         @param _additionalStatement: (optional) Zusaetzliches SQL Statement, dass zwischen dem ersten "select from" und dem ersten "where" eingegefŸgt wird.          @param _additionalStatement: (optional) Zusaetzliches SQL Statement, dass zwischen dem ersten "select from" und dem ersten "where" eingegefuegt wird.
         @param _select: (optional) Alternativer Wert fŸr den ersten SELECT Aufruf.          @param _subselectAddition: (optiona) Zusaetliche SQL Statement die hinter das select statement der subselects eingefuegt werde.
           @param _select: (optional) Alternativer Wert fuer den ersten SELECT Aufruf.
         @param _storename: (optional) Name fuer die Zwischenspeicherung von Werten in der Session          @param _storename: (optional) Name fuer die Zwischenspeicherung von Werten in der Session
         """          """
         if _storename:          if _storename:
Line 1028  class ZSQLExtendFolder(Folder,Persistent Line 1052  class ZSQLExtendFolder(Folder,Persistent
           
                   
                   
     def ZSQLAdd(self,format=None,RESPONSE=None,args=None,**argv):      def ZSQLAdd(self,format=None,RESPONSE=None,args=None,_useRequest=True,**argv):
         """Neuer Eintrag"""          """Neuer Eintrag"""
                           
     if args:      if args:
Line 1038  class ZSQLExtendFolder(Folder,Persistent Line 1062  class ZSQLExtendFolder(Folder,Persistent
   
         qs_temp=[]          qs_temp=[]
           
           if  _useRequest:
         for a in self.REQUEST.form.keys():          for a in self.REQUEST.form.keys():
             qs_temp.append(a+"="+urllib.quote(str(self.REQUEST.form[a])))              qs_temp.append(a+"="+urllib.quote(str(self.REQUEST.form[a])))
   
Line 1054  class ZSQLExtendFolder(Folder,Persistent Line 1079  class ZSQLExtendFolder(Folder,Persistent
                   
         addList={}          addList={}
         for q in qs.split(","):          for q in qs.split(","):
               if len(q.split("="))<2:
                   continue
             name=re.sub("r'+'"," ",q.split("=")[0].lower())              name=re.sub("r'+'"," ",q.split("=")[0].lower())
          
             value=q.split("=")[1]              value=q.split("=")[1]
             value=re.sub(r'\+'," ",value)              value=re.sub(r'\+'," ",value)
             value=urllib.unquote(value)               value=urllib.unquote(value) 
Line 1123  class ZSQLExtendFolder(Folder,Persistent Line 1151  class ZSQLExtendFolder(Folder,Persistent
                     table=urllib.unquote(value)                      table=urllib.unquote(value)
             elif name=="-identify":              elif name=="-identify":
                 identify=urllib.unquote(value)                  identify=urllib.unquote(value)
                 identify="lower("+identify.split("=")[0]+")="+sql_quote(identify.split("=")[1].lower())                  # old code did identify with lower() which doesn't work for oids
                   #identify="lower("+identify.split("=")[0]+")="+sql_quote(identify.split("=")[1].lower())
                   (k,v) = identify.split("=")
                   identify="%s=%s"%(k,sql_quote(v))
             elif name=="-format":              elif name=="-format":
                 format=urllib.unquote(value)                  format=urllib.unquote(value)
             #elif (not (name[0]=="-" or name[0]=="_")) and (not len(value)==0):              #elif (not (name[0]=="-" or name[0]=="_")) and (not len(value)==0):
Line 1489  class ZSQLExtendFolder(Folder,Persistent Line 1520  class ZSQLExtendFolder(Folder,Persistent
   
                 elif op=="numerical":                  elif op=="numerical":
                     term=analyseIntSearch(value)                      term=analyseIntSearch(value)
                     tmp=(name+" "+term)                      tmp=(namealt+" "+term) # take namealt without LOWER
                 elif op=="grep":                  elif op=="grep":
                     tmp=(name+" ~* "+sql_quote(value))                      tmp=(name+" ~* "+sql_quote(value))
                 elif op=="one":                  elif op=="one":
Line 1539  class ZSQLExtendFolder(Folder,Persistent Line 1570  class ZSQLExtendFolder(Folder,Persistent
   
                 elif op=="numerical":                  elif op=="numerical":
                     term=analyseIntSearch(value)                      term=analyseIntSearch(value)
                     tmp=(name+" "+term)                      tmp=(namealt+" "+term) # take namealt without LOWER
                 elif op=="grep":                  elif op=="grep":
                     tmp=(name+" ~* "+sql_quote(value))                      tmp=(name+" ~* "+sql_quote(value))
                 elif op=="one":                  elif op=="one":

Removed from v.1.124  
changed lines
  Added in v.1.133


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