--- ZSQLExtend/ZSQLExtend.py 2004/01/21 16:54:45 1.5
+++ ZSQLExtend/ZSQLExtend.py 2004/02/11 17:44:54 1.12
@@ -17,7 +17,40 @@ def quoteString(name):
class ZSQLExtendFolder(Persistent, Implicit, Folder):
"""Folder"""
meta_type="ZSQLExtendFolder"
-
+
+ def getSAttribute(self,obj,atribute,pref=''):
+ """get Attribute or emptystring"""
+
+ print "obj",obj
+ try:
+ return pref+getattr(obj,atribute)
+ except:
+ return ""
+
+ def getS(self,str):
+ """make none to empty string"""
+ if str:
+ return str
+ else:
+ return ""
+
+ def actualPath(self,url=None):
+ """path"""
+
+ if self.REQUEST['HTTP_X_FORWARDED_SERVER']=='':
+ host=self.REQUEST['HTTP_HOST']
+ else:
+ host=self.REQUEST['HTTP_X_FORWARDED_SERVER']
+ if not url:
+ return "http://"+host+self.REQUEST['PATH_TRANSLATED']
+ else:
+ temp=self.REQUEST[url].split("/")
+ temp[2]=host
+ return string.join(temp,"/")
+
+ def getRequest(self):
+ """request"""
+ return self.REQUEST
def lowerEnd(self,path):
"""oinly for demo"""
@@ -25,21 +58,22 @@ class ZSQLExtendFolder(Persistent, Impli
def ZSQLisEmpty(self,field):
"""Teste ob Treffer leer"""
- print "field",field
+ #print "field",field
if not field:
return 1
if field=="":
return 1
return 0
- def ZSQLsearchOptions(self):
+ def ZSQLsearchOptions(self,fieldname=""):
"""return HTML Fragment with search options"""
- ret=""""""%fieldname
return ret
def ZSQLInlineSearch(self,storename=None,**argv):
@@ -156,7 +190,7 @@ class ZSQLExtendFolder(Persistent, Impli
self.search(var=queryString)
return self.REQUEST.RESPONSE.redirect(format)
- def ZSQLFind(self,qs="",select="*",storename=None):
+ def ZSQLFind(self,qs="",select="oid,*",storename=None):
"""Find"""
@@ -171,6 +205,7 @@ class ZSQLExtendFolder(Persistent, Impli
qs=self.REQUEST.SESSION['query']
else:
qs=string.join(qs.split("&"),",")
+
qs=re.sub("\\+"," ",qs)# Austauschen da Leerzeichen bei http-get durch + ersetzt wird, generell sollte alles auf post umgeschrieben werden. vom search formular.
#print "QS",qs
@@ -242,19 +277,25 @@ class ZSQLExtendFolder(Persistent, Impli
#print "NO",nostore
lop="AND" # standardsuche mit and
max="ALL" #standard alle auswählen
+ maxstr=""
whereList=[]
sort=""
op="bw"
opfields={}
skip=""
rangeStart=0
+ limit=0
+ searchFields={}
if not select:
- select="*"
+ select="oid,*"
#print "Q",nostore,qs
#check for op in the case of inline search
- if iCT=="_":
- for q in qs.split(","):
+
+ splitted=qs.split(",")
+
+
+ for q in splitted:
name=re.sub("r'+'"," ",q.split("=")[0].lower())
value=urllib.unquote(q.split("=")[1])
@@ -263,7 +304,8 @@ class ZSQLExtendFolder(Persistent, Impli
op=value
field=name[4:]
opfields[field]=op
-
+
+ #print opfieldsa
#now analyse the querystring
for q in qs.split(","):
@@ -282,7 +324,7 @@ class ZSQLExtendFolder(Persistent, Impli
elif name==iCT+"select":
select=value
elif name==iCT+"max":
- max="LIMIT "+str(value)
+ maxstr="LIMIT "+str(value)
limit=str(value)
elif name==iCT+"skip":
skip="OFFSET "+str(value)
@@ -301,10 +343,17 @@ class ZSQLExtendFolder(Persistent, Impli
elif (not name[0]==iCT) and (not len(value)==0):
- name="LOWER("+name+")"
+
+ #print "OP",op,name
value=value.lower()
+
+ searchFields[name]=value
+
if opfields.has_key(name):
op=opfields[name]
+ else:
+ op="ct"
+ name="LOWER("+name+")"
if op=="ct":
whereList.append(name+" LIKE "+libpq.PgQuoteString("%"+value+"%"))
elif op=="gt":
@@ -317,7 +366,7 @@ class ZSQLExtendFolder(Persistent, Impli
whereList.append(name+" LIKE "+libpq.PgQuoteString(value+"%"))
elif op=="ew":
whereList.append(name+" LIKE "+libpq.PgQuoteString("%"+value))
- op="ct"
+ op="ct"
#except:
# print "END",value,name,Exception
@@ -327,14 +376,14 @@ class ZSQLExtendFolder(Persistent, Impli
where=""
#print "QE",table
- query="SELECT %s FROM %s %s %s %s %s"%(select,table,where,sort,max,skip)
+ query="SELECT %s FROM %s %s %s %s %s"%(select,table,where,sort,maxstr,skip)
if not nostore=="yes":
self.REQUEST.SESSION['qs']=opfields
- print "IAMHERE again:", query
+ #print "IAMHERE again:", query
if storename:
- query2="SELECT count(%s) FROM %s %s"%(select,table,where)
+ query2="SELECT count(*) FROM %s %s"%(table,where)
#print "storing",query2
#print "QUERYSTRING:",self.REQUEST.SESSION[storename]['queryString2']
if not self.REQUEST.SESSION.has_key(storename):
@@ -359,9 +408,11 @@ class ZSQLExtendFolder(Persistent, Impli
else:
self.REQUEST.SESSION[storename]['rangeEnd']=int(rangeStart)+int(limit)
self.REQUEST.SESSION[storename]['rangeSize']=limit
+ self.REQUEST.SESSION[storename]['searchFields']=searchFields
-
+ print query
return self.search(var=query)
+
def ZSQLSearch(self):
"""To be done"""
@@ -388,6 +439,17 @@ class ZSQLExtendFolder(Persistent, Impli
except:
return 0
+ def getZSQLSearchFieldsList(self,storename="foundCount"):
+ """get searchfieldList"""
+ print self.REQUEST.SESSION[storename]['searchFields'].keys()
+ return self.REQUEST.SESSION[storename]['searchFields'].keys()
+
+ def getZSQLSearchFields(self,storename="foundCount"):
+ """get searchfield"""
+ print "SF",self.REQUEST.SESSION[storename]['searchFields']
+ return self.REQUEST.SESSION[storename]['searchFields']
+
+
def nextLink(self,html,storename="foundCount"):
"""nextLink"""
try:
@@ -433,7 +495,8 @@ class ZSQLExtendFolder(Persistent, Impli
newquery.append(query)
newquerystring=string.join(newquery,"&")
- return "%s"%(self.REQUEST['URL0']+"?"+newquerystring,html)
+
+ return "%s"%(self.actualPath()+"?"+newquerystring,html)
def prevLink(self,html,storename="foundCount"):
@@ -484,7 +547,10 @@ class ZSQLExtendFolder(Persistent, Impli
newquery.append(query)
newquerystring=string.join(newquery,"&")
- return "%s"%(self.REQUEST['URL0']+"?"+newquerystring,html)
+
+ return "%s"%(self.actualPath()+"?"+newquerystring,html)
+
+
def prevLink_old(self,html):
"""prev link"""
@@ -511,7 +577,7 @@ class ZSQLExtendFolder(Persistent, Impli
else:
queries.append("-offset=%i"%offsetnew)
newquerystring=string.join(queries,"&")
- return "%s"%(self.REQUEST['URL0']+"?"+newquerystring,html)
+ return "%s"%(self.actualPath()+"?"+newquerystring,html)
def nextLink_old(self,html):
"""prev link"""
@@ -541,7 +607,7 @@ class ZSQLExtendFolder(Persistent, Impli
queries.append("-offset=%i"%offsetnew)
newquerystring=string.join(queries,"&")
- return "%s"%(self.REQUEST['URL0']+"?"+newquerystring,html)
+ return "%s"%(self.actualPath()+"?"+newquerystring,html)
manage_addZSQLExtendFolderForm=DTMLFile('ZSQLExtendFolderAdd', globals())