--- ZSQLExtend/ZSQLExtend.py 2006/04/24 16:09:52 1.82 +++ ZSQLExtend/ZSQLExtend.py 2006/05/17 21:42:19 1.86 @@ -80,6 +80,29 @@ class ZSQLExtendFolder(Folder,Persistent """quote str for sql""" return sql_quote(str) + + def normalizeField(self,table,fieldname, newFieldName=None,mode="alter", RESPONSE=None): + """normalize a field""" + import unicodedata + + if not newFieldName: + newFieldName=fieldname+"_normal" + + def normal(str): + if str: + return unicodedata.normalize('NFKD', str.decode('utf-8')).encode('ASCII', 'ignore') + else: + return "" + if mode=="create": # create the field + qstr="""alter table %s add %s %s""" + self.ZSQLSimpleSearch(qstr%(table,newFieldName,'text')) + + qstr="select oid,%s from %s"%(fieldname,table) + for result in self.ZSQLSimpleSearch(qstr): + qstr="update %s set %s = %s where oid = %s" + + self.ZSQLSimpleSearch(qstr%(table,newFieldName,self.ZSQLQuote(normal(getattr(result,fieldname))),result.oid)) + def importAccessModell(self,configFileName,RESPONSE=None): """import tables from access @param configFileName: xml-configfile @@ -706,7 +729,7 @@ class ZSQLExtendFolder(Folder,Persistent except: return None - def ZSQLInlineSearch(self,storename=None,**argv): + def ZSQLInlineSearch(self,storename=None,args=None,**argv): """inlinesearch""" qs=[] @@ -716,14 +739,22 @@ class ZSQLExtendFolder(Folder,Persistent storename="foundCount" - + if args: + argTmp=args + else: + argTmp=argv + #print "INLINE:",argv - for a in argv.keys(): + for a in argTmp.keys(): + if a[0]=="-": + key="_"+a[1:] + else: + key=a try: - qs.append(a+"="+urllib.quote(str(argv[a]))) + qs.append(key+"="+urllib.quote(str(argTmp[a]))) except: import urllib - qs.append(a+"="+urllib.quote(str(argv[a]))) + qs.append(key+"="+urllib.quote(str(argTmp[a]))) #return [] return self.parseQueryString(string.join(qs,","),"_",storename=storename) @@ -749,7 +780,7 @@ class ZSQLExtendFolder(Folder,Persistent def ZSQLSimpleSearch(self,query=None,max_rows=1000000,debug=None): """simple search""" - + print query if not query: query=self.query @@ -815,7 +846,7 @@ class ZSQLExtendFolder(Folder,Persistent - def ZSQLAdd(self,format=None,RESPONSE=None,**argv): + def ZSQLAdd(self,format=None,RESPONSE=None,args=None,**argv): """Neuer Eintrag""" qs_temp=[] @@ -825,13 +856,18 @@ class ZSQLExtendFolder(Folder,Persistent qs=string.join(qs_temp,",") - for field in argv.keys(): + if args: + argTmp=args + else: + argTmp=argv + + for field in argTmp.keys(): if field[0]=="_": fieldTmp="-"+field[1:] else: fieldTmp=field - qs+=",%s=%s"%(fieldTmp,argv[field]) + qs+=",%s=%s"%(fieldTmp,argTmp[field]) addList={} @@ -865,26 +901,30 @@ class ZSQLExtendFolder(Folder,Persistent else: return True - def ZSQLChange(self,format=None,RESPONSE=None,USE_FORM=None,**argv): + def ZSQLChange(self,format=None,RESPONSE=None,USE_FORM=None,args=None,**argv): """change entries""" #qs=self.REQUEST['QUERY_STRING'] # very bad hack - + print args qs_temp=[] if USE_FORM or RESPONSE: for a in self.REQUEST.form.keys(): qs_temp.append(a+"="+urllib.quote(str(self.REQUEST.form[a]))) - - for field in argv.keys(): + if args: + argTmp=args + else: + argTmp=argv + + for field in argTmp.keys(): if field[0]=="_": fieldTmp="-"+field[1:] else: fieldTmp=field - qs_temp.append("%s=%s"%(fieldTmp,argv[field])) + qs_temp.append("%s=%s"%(fieldTmp,argTmp[field])) changeList=[] @@ -1064,7 +1104,7 @@ class ZSQLExtendFolder(Folder,Persistent else: storename="foundCount" - return str(min(int(self.REQUEST.SESSION[storename]['rangeEnd']),int(self.REQUEST.SESSION[storename]['count']))) + return str(min(int(self.REQUEST.SESSION[storename]['rangeEnd'])+1,int(self.REQUEST.SESSION[storename]['count']))) def ZSQLNewQuery(self,linkText,storename=None,**argv): """suche neu"""