version 1.81, 2006/04/20 17:40:11
|
version 1.85, 2006/05/16 15:56:03
|
Line 80 class ZSQLExtendFolder(Folder,Persistent
|
Line 80 class ZSQLExtendFolder(Folder,Persistent
|
"""quote str for sql""" |
"""quote str for sql""" |
return sql_quote(str) |
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): |
def importAccessModell(self,configFileName,RESPONSE=None): |
"""import tables from access |
"""import tables from access |
@param configFileName: xml-configfile |
@param configFileName: xml-configfile |
Line 164 class ZSQLExtendFolder(Folder,Persistent
|
Line 187 class ZSQLExtendFolder(Folder,Persistent
|
#check if table exists |
#check if table exists |
|
|
qstr="""select relname from pg_class where relname = '%s'"""%table |
qstr="""select relname from pg_class where relname = '%s'"""%table |
if len (self.ZSQLSimpleSearch(qstr))<1: # if not the create the table |
if not(self.ZSQLSimpleSearch(qstr)) or (len (self.ZSQLSimpleSearch(qstr))<1): # if not the create the table |
columns=[] |
columns=[] |
create=True |
create=True |
else: |
else: |
Line 269 class ZSQLExtendFolder(Folder,Persistent
|
Line 292 class ZSQLExtendFolder(Folder,Persistent
|
|
|
|
|
fields=",".join(dataSet.keys()) |
fields=",".join(dataSet.keys()) |
values=",".join([""" %s """%self.ZSQLQuote(x) for x in dataSet.keys()]) |
values=",".join([""" %s """%self.ZSQLQuote(dataSet[x]) for x in dataSet.keys()]) |
|
|
|
|
queryStr="""INSERT INTO %s (%s) VALUES (%s)"""%(table,fields,values) |
queryStr="""INSERT INTO %s (%s) VALUES (%s)"""%(table,fields,values) |
Line 632 class ZSQLExtendFolder(Folder,Persistent
|
Line 655 class ZSQLExtendFolder(Folder,Persistent
|
ret+="""</select>""" |
ret+="""</select>""" |
return ret |
return ret |
|
|
def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None, multiple='',startValue=None,additionalSelect="",size=None,linelen=None): |
def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None, multiple='',startValue=None,additionalSelect="",size=None,linelen=None,selected=None): |
"""generate select options form a search list |
"""generate select options form a search list |
es wird |
es wird |
<select name=fieldname mutiple> |
<select name=fieldname mutiple> |
Line 667 class ZSQLExtendFolder(Folder,Persistent
|
Line 690 class ZSQLExtendFolder(Folder,Persistent
|
field=getattr(result,fieldName) |
field=getattr(result,fieldName) |
fieldValue=getattr(result,valueName) |
fieldValue=getattr(result,valueName) |
if fieldValue: |
if fieldValue: |
|
print "XXX",field,repr(type(field)),repr(type(selected)) |
if not linelen: |
if not linelen: |
|
|
|
if field == selected: |
|
print "huhu" |
|
ret+="""<option value="%s" selected>%s</option>"""%(field,fieldValue) |
|
else: |
ret+="""<option value="%s">%s</option>"""%(field,fieldValue) |
ret+="""<option value="%s">%s</option>"""%(field,fieldValue) |
else: |
else: |
mist = """%s"""%(fieldValue) |
mist = """%s"""%(fieldValue) |
Line 700 class ZSQLExtendFolder(Folder,Persistent
|
Line 729 class ZSQLExtendFolder(Folder,Persistent
|
except: |
except: |
return None |
return None |
|
|
def ZSQLInlineSearch(self,storename=None,**argv): |
def ZSQLInlineSearch(self,storename=None,args=None,**argv): |
"""inlinesearch""" |
"""inlinesearch""" |
|
|
qs=[] |
qs=[] |
Line 710 class ZSQLExtendFolder(Folder,Persistent
|
Line 739 class ZSQLExtendFolder(Folder,Persistent
|
storename="foundCount" |
storename="foundCount" |
|
|
|
|
|
if args: |
|
argTmp=args |
|
else: |
|
argTmp=argv |
|
|
#print "INLINE:",argv |
#print "INLINE:",argv |
for a in argv.keys(): |
for a in argTmp.keys(): |
try: |
try: |
qs.append(a+"="+urllib.quote(str(argv[a]))) |
qs.append(a+"="+urllib.quote(str(argTmp[a]))) |
except: |
except: |
import urllib |
import urllib |
qs.append(a+"="+urllib.quote(str(argv[a]))) |
qs.append(a+"="+urllib.quote(str(argTmp[a]))) |
|
|
#return [] |
#return [] |
return self.parseQueryString(string.join(qs,","),"_",storename=storename) |
return self.parseQueryString(string.join(qs,","),"_",storename=storename) |
Line 743 class ZSQLExtendFolder(Folder,Persistent
|
Line 776 class ZSQLExtendFolder(Folder,Persistent
|
|
|
def ZSQLSimpleSearch(self,query=None,max_rows=1000000,debug=None): |
def ZSQLSimpleSearch(self,query=None,max_rows=1000000,debug=None): |
"""simple search""" |
"""simple search""" |
|
print query |
|
|
if not query: |
if not query: |
query=self.query |
query=self.query |
Line 809 class ZSQLExtendFolder(Folder,Persistent
|
Line 842 class ZSQLExtendFolder(Folder,Persistent
|
|
|
|
|
|
|
def ZSQLAdd(self,format=None,RESPONSE=None,**argv): |
def ZSQLAdd(self,format=None,RESPONSE=None,args=None,**argv): |
"""Neuer Eintrag""" |
"""Neuer Eintrag""" |
|
|
qs_temp=[] |
qs_temp=[] |
Line 819 class ZSQLExtendFolder(Folder,Persistent
|
Line 852 class ZSQLExtendFolder(Folder,Persistent
|
|
|
qs=string.join(qs_temp,",") |
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]=="_": |
if field[0]=="_": |
fieldTmp="-"+field[1:] |
fieldTmp="-"+field[1:] |
else: |
else: |
fieldTmp=field |
fieldTmp=field |
|
|
qs+=",%s=%s"%(fieldTmp,argv[field]) |
qs+=",%s=%s"%(fieldTmp,argTmp[field]) |
|
|
|
|
addList={} |
addList={} |
Line 859 class ZSQLExtendFolder(Folder,Persistent
|
Line 897 class ZSQLExtendFolder(Folder,Persistent
|
else: |
else: |
return True |
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""" |
"""change entries""" |
#qs=self.REQUEST['QUERY_STRING'] |
#qs=self.REQUEST['QUERY_STRING'] |
# very bad hack |
# very bad hack |
|
print args |
qs_temp=[] |
qs_temp=[] |
if USE_FORM or RESPONSE: |
if USE_FORM or RESPONSE: |
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]))) |
|
|
|
|
|
if args: |
|
argTmp=args |
|
else: |
|
argTmp=argv |
|
|
for field in argv.keys(): |
for field in argTmp.keys(): |
|
|
if field[0]=="_": |
if field[0]=="_": |
fieldTmp="-"+field[1:] |
fieldTmp="-"+field[1:] |
else: |
else: |
fieldTmp=field |
fieldTmp=field |
|
|
qs_temp.append("%s=%s"%(fieldTmp,argv[field])) |
qs_temp.append("%s=%s"%(fieldTmp,argTmp[field])) |
|
|
|
|
changeList=[] |
changeList=[] |
Line 960 class ZSQLExtendFolder(Folder,Persistent
|
Line 1002 class ZSQLExtendFolder(Folder,Persistent
|
if field[0]=="_": |
if field[0]=="_": |
fieldTmp="-"+field[1:] |
fieldTmp="-"+field[1:] |
else: |
else: |
fieldTmp=urllib.unqoute(field) |
fieldTmp=urllib.unquote(field) |
|
|
qs+=",%s=%s"%(fieldTmp,argv[field]) |
qs+=",%s=%s"%(fieldTmp,argv[field]) |
|
|
Line 989 class ZSQLExtendFolder(Folder,Persistent
|
Line 1031 class ZSQLExtendFolder(Folder,Persistent
|
|
|
qs=string.join(delEmpty(qs.split(",")),",") |
qs=string.join(delEmpty(qs.split(",")),",") |
|
|
if storename: |
if not storename: |
"""store""" |
|
else: |
|
storename="foundCount" |
storename="foundCount" |
|
|
#store query for further usage |
#store query for further usage |
self.REQUEST.SESSION['query']=qs |
self.REQUEST.SESSION['query']=qs |
|
print "st",storename,qs |
#print "calling Query with",repr(NoQuery) |
#print "calling Query with",repr(NoQuery) |
ret=self.parseQueryString(qs,"-",select=select,storemax="yes",storename=storename,tableExt=tableExt,NoQuery=NoQuery,NoLimit=NoLimit,restrictField=restrictField,restrictConnect=restrictConnect,filter=filter) |
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"] |
#print self.REQUEST.SESSION["foundCount"] |
|
|
|
# if not hasattr(self,'_v_results'): |
|
# self._v_results={} |
|
# |
|
# |
|
# self._v_results[urllib.quote(qs)]=ret[0:] |
|
|
return ret |
return ret |
|
|
Line 1056 class ZSQLExtendFolder(Folder,Persistent
|
Line 1100 class ZSQLExtendFolder(Folder,Persistent
|
else: |
else: |
storename="foundCount" |
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): |
def ZSQLNewQuery(self,linkText,storename=None,**argv): |
"""suche neu""" |
"""suche neu""" |
Line 1271 class ZSQLExtendFolder(Folder,Persistent
|
Line 1315 class ZSQLExtendFolder(Folder,Persistent
|
|
|
tmp=string.join(tmps,' OR ') |
tmp=string.join(tmps,' OR ') |
|
|
|
searchFieldsOnly[namealt]=value |
op="all" |
op="all" |
|
|
|
|
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): |
elif (not name[0]==iCT) and (not len(value)==0): |
Line 1400 class ZSQLExtendFolder(Folder,Persistent
|
Line 1446 class ZSQLExtendFolder(Folder,Persistent
|
self.REQUEST.SESSION[storename]['rangeEnd']=int(rangeStart)+int(limit) |
self.REQUEST.SESSION[storename]['rangeEnd']=int(rangeStart)+int(limit) |
self.REQUEST.SESSION[storename]['rangeSize']=limit |
self.REQUEST.SESSION[storename]['rangeSize']=limit |
self.REQUEST.SESSION[storename]['searchFields']=searchFields |
self.REQUEST.SESSION[storename]['searchFields']=searchFields |
|
print "SF",searchFieldsOnly,searchFields |
self.REQUEST.SESSION[storename]['searchFieldsOnly']=searchFieldsOnly |
self.REQUEST.SESSION[storename]['searchFieldsOnly']=searchFieldsOnly |
|
|
|
|