--- ZSQLExtend/ZSQLExtend.py 2004/08/18 14:47:58 1.31
+++ ZSQLExtend/ZSQLExtend.py 2004/08/27 23:03:48 1.32
@@ -172,8 +172,8 @@ class ZSQLExtendFolder(Folder,Persistent
ret+=""""""
return ret
- def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None, multiple=''):
- """generate select oprions form a cr seperated list"""
+ def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None, multiple='',startValue=None):
+ """generate select oprions form a search list seperated list"""
if not valueName:
valueName=fieldName
@@ -182,7 +182,10 @@ class ZSQLExtendFolder(Folder,Persistent
if start:
if start==' ':
start=''
- ret+=""""""%(start,start)
+ if not startValue:
+ startValue=start
+
+ ret+=""""""%(startValue,start)
for result in results:
field=getattr(result,fieldName)
fieldValue=getattr(result,valueName)
@@ -340,8 +343,24 @@ class ZSQLExtendFolder(Folder,Persistent
queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify)
self.ZSQLSimpleSearch(queryString)
return self.REQUEST.RESPONSE.redirect(format)
+
+
+
+ def ZSQLFind2(self,qs="",select="oid,*",storename=None,tableList=['cdli_translit','cdli_cat'],**argv):
+ """find2"""
+ #search1= self.ZSQLFind(qs="",select="oid,*",storename=None,tableExt='cdli_translit',restrictField='id_text',NoQuery='yes',NoLimit='yes',**argv)
+
+
+ #search2 = self.ZSQLFind(tableExt='cdli_cat',qs="",select="oid,*",storename=None,restrictConnect=('cdli_cat.id_text',search1),**argv)
+
+ search1= self.ZSQLFind(qs="",select="oid,*",storename=None,tableExt='cdli_cat',restrictField='id_text',NoQuery='yes',NoLimit='yes',**argv)
+
+ search2 = self.ZSQLFind(tableExt='cdli_translit',qs="",select="oid,*",storename=None,restrictConnect=('cdli_translit.id_text',search1),**argv)
+ return search2
+
+ #return self.ZSQLFind(qs="",select="oid,*",storename=None,tableExt=None,NoQuery=None,**argv)
- def ZSQLFind(self,qs="",select="oid,*",storename=None,**argv):
+ def ZSQLFind(self,qs="",select="oid,*",storename=None,tableExt=None,NoQuery=None,NoLimit=None,restrictField=None,restrictConnect=None,**argv):
"""Find"""
def delEmpty(list):
@@ -354,9 +373,10 @@ class ZSQLExtendFolder(Folder,Persistent
#self.REQUEST.SESSION['come_from_search']="no" # zurücksetzen
if qs=="":
+ print "HI"
if self.REQUEST['QUERY_STRING']:
qs=self.REQUEST['QUERY_STRING']
-
+
qs=string.join(qs.split("&"),",")
@@ -367,7 +387,7 @@ class ZSQLExtendFolder(Folder,Persistent
else:
qs=self.REQUEST.SESSION.get('query','')
-
+ print "QS:",qs
for field in argv.keys():
#print field
qs+=",-%s=%s"%(field,argv[field])
@@ -389,11 +409,11 @@ class ZSQLExtendFolder(Folder,Persistent
storename="foundCount"
-
- ret=self.parseQueryString(qs,"-",select=select,storemax="yes",storename=storename)
+ 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)
#print self.REQUEST.SESSION["foundCount"]
-
+ print "called query"
return ret
def ZSQLFoundCountLen(self,var):
@@ -449,7 +469,7 @@ class ZSQLExtendFolder(Folder,Persistent
return str(min(int(self.REQUEST.SESSION[storename]['rangeEnd']),int(self.REQUEST.SESSION[storename]['count'])))
- def parseQueryString(self,qs,iCT,storemax="no",select=None,nostore=None,storename=None):
+ def parseQueryString(self,qs,iCT,storemax="no",select=None,nostore=None,storename=None,tableExt=None,NoQuery=None,NoLimit=None,restrictField=None,restrictConnect=None):
"""analysieren den QueryString"""
#print "NO",nostore
lop="AND" # standardsuche mit and
@@ -471,7 +491,11 @@ class ZSQLExtendFolder(Folder,Persistent
#check for op
splitted=qs.split(",")
-
+ if tableExt:
+ table=tableExt
+
+ if restrictField:
+ select=restrictField
for q in splitted:
@@ -512,12 +536,15 @@ class ZSQLExtendFolder(Folder,Persistent
if name==iCT+"lop":
lop=value
elif name==iCT+"table":
- table=value
+ if not tableExt:
+ table=value
elif name==iCT+"select":
- select=value
+ if not restrictField:
+ select=value
elif name==iCT+"max":
- maxstr="LIMIT "+str(value)
- limit=str(value)
+ if not NoLimit:
+ maxstr="LIMIT "+str(value)
+ limit=str(value)
elif name==iCT+"skip":
skip="OFFSET "+str(value)
rangeStart=str(value)
@@ -543,6 +570,7 @@ class ZSQLExtendFolder(Folder,Persistent
op=opfields[name]
else:
op="ct"
+ namealt=name
name="LOWER("+name+")"
if op=="ct":
tmp=(name+" LIKE "+libpq.PgQuoteString("%"+value+"%"))
@@ -557,13 +585,14 @@ class ZSQLExtendFolder(Folder,Persistent
elif op=="ew":
tmp=(name+" LIKE "+libpq.PgQuoteString("%"+value))
op="ct"
-
- if searchFields.has_key(name):
- searchFields[name]+=lopfields.get(name,'OR')+" "+tmp
- searchFieldsOnly[name]+=lopfields.get(name,'OR')+" "+value
- else:
- searchFields[name]=tmp
- searchFieldsOnly[name]=value
+ print "TTT",tableExt
+ if (not tableExt) or (namealt.split('.')[0]==tableExt):
+ if searchFields.has_key(name):
+ searchFields[name]+=lopfields.get(name,'OR')+" "+tmp
+ searchFieldsOnly[name]+=lopfields.get(name,'OR')+" "+value
+ else:
+ searchFields[name]=tmp
+ searchFieldsOnly[name]=value
## for name in searchFields.keys():
@@ -594,9 +623,18 @@ class ZSQLExtendFolder(Folder,Persistent
whereList=["("+searchFields[x]+")" for x in searchFields.keys()]
if len(whereList)>0:
+
where="WHERE "+string.join(whereList," "+lop+" ")
else:
where=""
+
+ if restrictConnect:
+ print "resticted"
+ if len(where)==0:
+ where="WHERE "+restrictConnect[0]+" in ("+restrictConnect[1]+")"
+ else:
+ where+="and "+restrictConnect[0]+" in ("+restrictConnect[1]+")"
+
#print "QE",table
query="SELECT %s FROM %s %s %s %s %s"%(select,table,where,sort,maxstr,skip)
@@ -606,21 +644,23 @@ class ZSQLExtendFolder(Folder,Persistent
self.REQUEST.SESSION['qs']=opfields
#print "IAMHERE again:", query
- if storename:
+ if storename and (not NoQuery):
query2="SELECT count(*) FROM %s %s"%(table,where)
- #print "storing",query2
+ print "storing",query2
#print "QUERYSTRING:",self.REQUEST.SESSION[storename]['queryString2']
if not self.REQUEST.SESSION.has_key(storename):
self.REQUEST.SESSION[storename]={}
if self.REQUEST.SESSION[storename].has_key('queryString2'):
- #print "HI",storename
+ print "HI",storename
if not self.REQUEST.SESSION[storename]['queryString2']==query2:
#print "HOOOOO",storename
self.REQUEST.SESSION[storename]['queryString2']=query2
self.REQUEST.SESSION[storename]['count']=self.ZSQLSimpleSearch(query2)[0].count
+
#print "QUERY",query2,"::::",self.REQUEST.SESSION[storename]['queryString2']
else:
+ print "go"
self.REQUEST.SESSION[storename]['queryString2']=query2
self.REQUEST.SESSION[storename]['count']=self.ZSQLSimpleSearch(query2)[0].count
#print "QUERYNEW",self.REQUEST.SESSION[storename]['queryString2']
@@ -635,9 +675,13 @@ class ZSQLExtendFolder(Folder,Persistent
self.REQUEST.SESSION[storename]['searchFields']=searchFields
self.REQUEST.SESSION[storename]['searchFieldsOnly']=searchFieldsOnly
-
- return self.ZSQLQuery(query)
-
+ if not NoQuery:
+ print "noquery",query
+ return self.ZSQLQuery(query)
+ else:
+ print "query"
+ return query
+
def ZSQLQuery(self,query):
"""query"""
return self.ZSQLSimpleSearch(query)