Diff for /ZSQLExtend/ZSQLExtend.py between versions 1.129 and 1.137

version 1.129, 2009/02/04 09:10:45 version 1.137, 2011/02/11 19:08:49
Line 369  class ZSQLExtendFolder(Folder,Persistent Line 369  class ZSQLExtendFolder(Folder,Persistent
                          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 (may be comma-separated list)          @param table: name of the table the xml shall be imported into (may be comma-separated list)
Line 384  class ZSQLExtendFolder(Folder,Persistent Line 384  class ZSQLExtendFolder(Folder,Persistent
         @param backup: (optional) create backup of old table (breaks indices)          @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
         '''          """
                   
         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 398  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
                   
           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(',')          tablelist=table.split(',')
         logging.debug("tablelist: %s" %tablelist)          logging.debug("tablelist: %s" %tablelist)
         #table=tables          #table=tables
Line 421  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()                  RESPONSE.flush()
Line 433  class ZSQLExtendFolder(Folder,Persistent Line 448  class ZSQLExtendFolder(Folder,Persistent
                 logger.addHandler(loghandler)                  logger.addHandler(loghandler)
                 options.use_logger_instance = logger                  options.use_logger_instance = logger
   
               try:
                   err = None
             importFMPXML(options)              importFMPXML(options)
                               logging.info("importXMLFileFMP: done")
                           except Exception, err:
                   logging.error("Error importing: %s"%err)                                    
                   
             if RESPONSE and log_to_response:              if RESPONSE and log_to_response:
                 loghandler.flush()                  loghandler.flush()
                   if err is not None:
                       RESPONSE.write("\n\nERROR while importing: %s"%err)
                   else:
                 RESPONSE.write("\n\n DONE!")                  RESPONSE.write("\n\n DONE!")
                             
             elif RESPONSE and redirect_url:              elif RESPONSE and redirect_url:
Line 485  class ZSQLExtendFolder(Folder,Persistent Line 506  class ZSQLExtendFolder(Folder,Persistent
           
                           
     def URLquote(self,txt):      def URLquote(self,txt):
         """urlquote"          """urlquote
         @param txt: text der urlgequoted werden soll.          @param txt: text der urlgequoted werden soll.
         """          """
         return urllib.quote(txt)          return urllib.quote(txt)
Line 655  class ZSQLExtendFolder(Folder,Persistent Line 676  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 _subselectAddition: (optiona) Zusaetliche SQL Statement die hinter das select statement der subselects eingefuegt werde.          @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 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 909  class ZSQLExtendFolder(Folder,Persistent Line 930  class ZSQLExtendFolder(Folder,Persistent
           
     def ZSQLInlineSearch(self,storename=None,args=None,**argv):      def ZSQLInlineSearch(self,storename=None,args=None,**argv):
         """inlinesearch"""          """inlinesearch"""
                  #logging.debug("ZSQLInlineSearch args=%s argv=%s"%(args,argv))
         qs=[]          qs=[]
         if storename:          if storename:
             """store"""              """store"""
         else:          else:
             storename="foundCount"              storename="foundCount"
                           
       
   
         if args:          if args:
             argTmp=args              argTmp=args
         else:          else:
Line 931  class ZSQLExtendFolder(Folder,Persistent Line 950  class ZSQLExtendFolder(Folder,Persistent
             if type(argTmp[a]) is ListType: # ein parameter zweimal              if type(argTmp[a]) is ListType: # ein parameter zweimal
                     value=""                      value=""
                     #TODO find a better solution, currently only the last non empty entry is used.                      #TODO find a better solution, currently only the last non empty entry is used.
                     for x in argTmp[a]:                      #for x in argTmp[a]:
                         if x:                      #    if x:
                             value=x                      #        value=x
                       # version: join with spaces (makes sense with checkbox and -op=all)
                       value = " ".join(argTmp[a])
             else:              else:
                                 try:
                 value=str(argTmp[a])                  value=str(argTmp[a])
             qs.append(aFiltered+"="+urllib.quote(value))                 except:
                   value=utf8ify(argTmp[a])
                           
               qs.append(aFiltered+"="+urllib.quote(value))
               #logging.debug("InlineSearch:"+string.join(qs,","))
                                   
         #return []            #return []  
   
Line 1137  class ZSQLExtendFolder(Folder,Persistent Line 1161  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 1189  class ZSQLExtendFolder(Folder,Persistent Line 1216  class ZSQLExtendFolder(Folder,Persistent
         """search in database"""          """search in database"""
   
         def delEmpty(list):          def delEmpty(list):
             """"loesche leere elemente aus der liste"""              """loesche leere elemente aus der liste"""
             ret=[]              ret=[]
             for x in list:              for x in list:
                 splitted=x.split("=")                  splitted=x.split("=")
Line 1323  class ZSQLExtendFolder(Folder,Persistent Line 1350  class ZSQLExtendFolder(Folder,Persistent
           
     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"""
                  logging.debug("parseQueryString qs=%s"%qs)
                 
         #setzte generische werte          #setzte generische werte
                   
Line 1479  class ZSQLExtendFolder(Folder,Persistent Line 1506  class ZSQLExtendFolder(Folder,Persistent
                     op=opfields[name]                      op=opfields[name]
                 else:                  else:
                     op="ct"                      op="ct"
   
                 namealt=name                  namealt=name
                 name="LOWER("+punktsplit[1]+")"                   name="LOWER("+punktsplit[1]+")" 
                 value=value.lower()                  value=value.lower()
Line 1835  class ZSQLExtendFolder(Folder,Persistent Line 1863  class ZSQLExtendFolder(Folder,Persistent
         return "<a href='%s'>%s</a>"%(self.REQUEST['URL']+"?"+newquerystring,html)          return "<a href='%s'>%s</a>"%(self.REQUEST['URL']+"?"+newquerystring,html)
   
   
       def pydev_settrace(self):
           """do settrace to start debugging"""
           import pydevd
           pydevd.settrace()
           
     
 manage_addZSQLExtendFolderForm=DTMLFile('ZSQLExtendFolderAdd', globals())  manage_addZSQLExtendFolderForm=DTMLFile('ZSQLExtendFolderAdd', globals())
Line 2148  def manage_addZSQLBibliography(self, id, Line 2180  def manage_addZSQLBibliography(self, id,
   
           
   
       

Removed from v.1.129  
changed lines
  Added in v.1.137


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