--- ZSQLExtend/ZSQLExtend.py 2007/04/02 09:48:13 1.107 +++ ZSQLExtend/ZSQLExtend.py 2007/04/05 14:20:08 1.110 @@ -4,9 +4,8 @@ from Globals import DTMLFile,package_hom import urllib import re import string -import sys #from pyPgSQL import libpq -from AccessControl import getSecurityManager +from AccessControl import getSecurityManager,Unauthorized from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate from Products.PageTemplates.PageTemplateFile import PageTemplateFile @@ -20,11 +19,11 @@ import os import copy import unicodedata import tempfile -import logging +import sys #ersetzt logging def logger(txt,method,txt2): - """logging""" + """logging""" logging.info(txt+ txt2) @@ -322,7 +321,7 @@ class ZSQLExtendFolder(Folder,Persistent return ret - def importXMLFile(self,table,data=None,identify=None,filename=None,RESPONSE=None): + def importXMLFile(self,table,containerTagName,fieldNames,data=None,identify=None,filename=None,RESPONSE=None): #TODO: finish importXMLFile ''' Import XML file into the table @@ -332,6 +331,7 @@ class ZSQLExtendFolder(Folder,Persistent @param identify: (optional) field res. tag which identifies a entry uniquely for updating purposes. @param RESPONSE: (optional) ''' + ret="" from xml.dom.pulldom import parseString doc=parseString(file.read()) @@ -409,7 +409,7 @@ class ZSQLExtendFolder(Folder,Persistent #print "wrote: %s"%fn - def importXMLFileFMP(self,table,dsn=None,uploadfile=None,update_fields=None,id_field=None,sync_mode=False,replace=False,redirect_url=None,RESPONSE=None): + def importXMLFileFMP(self,table,dsn=None,uploadfile=None,update_fields=None,id_field=None,sync_mode=False,replace=False,redirect_url=None,ascii_db=False,RESPONSE=None): ''' Import FileMaker XML file (FMPXMLRESULT format) into the table. @param dsn: database connection string @@ -443,6 +443,7 @@ class ZSQLExtendFolder(Folder,Persistent options.sync_mode=sync_mode options.replace_table=replace options.lc_names=True + options.ascii_db=ascii_db importFMPXML(options) os.remove(filename) @@ -690,7 +691,8 @@ class ZSQLExtendFolder(Folder,Persistent valueName=None,start=None, multiple='',startValue=None, additionalSelect="",size=None, - linelen=None,selected=None): + linelen=None,selected=None, + clear=False): """generate select options form a search list es wird """ return ret @@ -852,7 +858,7 @@ class ZSQLExtendFolder(Folder,Persistent def ZSQLSimpleSearch(self,query=None,max_rows=1000000): """simple search""" - + #logging.error("ZSQLSimpleSearch X %s"%query) #print query if not query: query=self.query @@ -864,14 +870,17 @@ class ZSQLExtendFolder(Folder,Persistent self._v_searchSQL.max_rows_=max_rows try: - return self._v_searchSQL.__call__(var=query) + logging.error("I am here") + t=self._v_searchSQL.__call__(var=query) + logging.error("I am here %s"%t) + return t except : - + logger("ZSQLSimpleSearch ERROR1",logging.ERROR, '%s %s'%sys.exc_info()[:2]) if sys.exc_info()[0]=="Database Error": try: self.getConnectionObj().manage_open_connection() except: - logger("ZSQLSimpleSearch",logging.ERROR, '%s %s'%sys.exc_info()[:2]) + logger("ZSQLSimpleSearch ERROR2",logging.ERROR, '%s %s'%sys.exc_info()[:2]) else: try: @@ -879,7 +888,7 @@ class ZSQLExtendFolder(Folder,Persistent return self._v_searchSQL.__call__(var=query) except : - + logger("ZSQLSimpleSearch ERROR2",logging.ERROR, '%s %s'%sys.exc_info()[:2]) if sys.exc_info()[0]=="Database Error": try: self.getConnectionObj().manage_open_connection() @@ -1037,7 +1046,7 @@ class ZSQLExtendFolder(Folder,Persistent return True - def ZSQLFindIndexed(self,qs="",select="oid,*",storename=None,indexedFields=['data_line'],restrictField='id_text',**argv): + def ZSQLFindIndexed(self,tableList=[],qs="",select="oid,*",storename=None,indexedFields=['data_line'],restrictField='id_text',**argv): """find2""" for index in self.ZopeFind(self,obj_ids=indexedFields): @@ -1123,9 +1132,11 @@ class ZSQLExtendFolder(Folder,Persistent #print "calling Query with",repr(NoQuery) + logging.error("blo") ret=self.parseQueryString(qs,"-",select=select,storemax="yes",storename=storename,tableExt=tableExt,NoQuery=NoQuery,NoLimit=NoLimit,restrictField=restrictField,restrictConnect=restrictConnect,filter=filter) #print self.REQUEST.SESSION["foundCount"] + logging.error("BlAAAAAAAAAA %s"%ret) return ret @@ -1349,6 +1360,7 @@ class ZSQLExtendFolder(Folder,Persistent #something is defined by _op_TABELLE.SUCHFELD_IN_DIESER_TABELLE.SELECT_FIELD.IDENTIFIER_IN_TABELLE elif (not name[0]==iCT) and len(punktsplit)==4: + if opfields.has_key(name): op=opfields[name] else: @@ -1389,10 +1401,10 @@ class ZSQLExtendFolder(Folder,Persistent op="all" + if value!='': #lehre Werte werde nicht hinzugefuegt + searchTmp="""%s in (select %s from %s where %s)"""%(punktsplit[3],punktsplit[2],punktsplit[0],tmp) - searchTmp="""%s in (select %s from %s where %s)"""%(punktsplit[3],punktsplit[2],punktsplit[0],tmp) - - queryTemplate.append(searchTmp) + queryTemplate.append(searchTmp) elif (not name[0]==iCT) and (not len(value)==0): @@ -1439,7 +1451,7 @@ class ZSQLExtendFolder(Folder,Persistent op="all" - if (not tableExt) or (namealt.split('.')[0]==tableExt): + if (value!='') and ((not tableExt) or (namealt.split('.')[0]==tableExt)): #keine leeren werde und keine auschluss if searchFields.has_key(namealt): searchFields[namealt]+=lopfields.get(name,'OR')+" "+tmp searchFieldsOnly[namealt]+=lopfields.get(name,'OR')+" "+value