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

version 1.120, 2007/11/05 18:45:35 version 1.127, 2008/06/19 11:46:29
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 364  class ZSQLExtendFolder(Folder,Persistent Line 372  class ZSQLExtendFolder(Folder,Persistent
         '''          '''
         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 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=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 420  class ZSQLExtendFolder(Folder,Persistent Line 434  class ZSQLExtendFolder(Folder,Persistent
   
         importFMPXML(options)          importFMPXML(options)
                   
         os.remove(filename)              
                   
         if RESPONSE and log_to_response:          if RESPONSE and log_to_response:
             loghandler.flush()              loghandler.flush()
             RESPONSE.write("\n\n DONE!")              RESPONSE.write("\n\n DONE!")
             return  
                   
         if RESPONSE and redirect_url:              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 477  class ZSQLExtendFolder(Folder,Persistent Line 492  class ZSQLExtendFolder(Folder,Persistent
           
     def createIdSet(self, resultset, idField=None):      def createIdSet(self, resultset, idField=None):
         """returns a (frozen)set of IDs from a SQL-resultset (using idField) or a list (if 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:          if idField is None:
             return frozenset(resultset)              return frozenset(resultset)
         else:          else:
Line 485  class ZSQLExtendFolder(Folder,Persistent Line 501  class ZSQLExtendFolder(Folder,Persistent
                   
     def opIdSet(self, a, b, op):      def opIdSet(self, a, b, op):
         """operate on sets a and b"""          """operate on sets a and b"""
           logging.debug("opidset with op %s"%op)
         if (op == 'intersect'):          if (op == 'intersect'):
             return a.intersection(b)              return a.intersection(b)
         elif (op == 'union'):          elif (op == 'union'):
Line 645  class ZSQLExtendFolder(Folder,Persistent Line 662  class ZSQLExtendFolder(Folder,Persistent
         @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 fŸr die identifikation gleicher EintrŠge
         @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" eingegefŸgt wird.
           @param _subselectAddition: (optiona) Zusaetliche SQL Statement die hinter das select statement der subselects eingefuegt werde.
         @param _select: (optional) Alternativer Wert fŸr den ersten SELECT Aufruf.          @param _select: (optional) Alternativer Wert fŸr 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
         """          """
Line 1019  class ZSQLExtendFolder(Folder,Persistent Line 1037  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 1029  class ZSQLExtendFolder(Folder,Persistent Line 1047  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 1045  class ZSQLExtendFolder(Folder,Persistent Line 1064  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 1272  class ZSQLExtendFolder(Folder,Persistent Line 1294  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 1302  class ZSQLExtendFolder(Folder,Persistent Line 1319  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.120  
changed lines
  Added in v.1.127


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