--- ZSQLExtend/ZSQLExtend.py 2005/04/27 19:35:22 1.62
+++ ZSQLExtend/ZSQLExtend.py 2005/10/24 23:50:53 1.70
@@ -18,6 +18,7 @@ import zLOG
import os.path
import os
+
def analyseIntSearch(word):
#analyse integer searches
@@ -41,7 +42,7 @@ def sql_quote(v):
quote_dict = {"\'": "''", "\\": "\\\\"}
for dkey in quote_dict.keys():
if string.find(v, dkey) >= 0:
- v=join(split(v,dkey),quote_dict[dkey])
+ v=string.join(string.split(v,dkey),quote_dict[dkey])
return "'%s'" % v
def showSQLConnectionIDs(self):
@@ -51,6 +52,7 @@ class ZSQLExtendFolder(Folder,Persistent
"""Folder"""
meta_type="ZSQLExtendFolder"
+
def testneu(self):
"""test"""
relStatement="""period like '%s%%'"""
@@ -229,7 +231,7 @@ class ZSQLExtendFolder(Folder,Persistent
return ret
- def ZSQLOptionsFromCRList(self,fieldname,listField, multiple='',start=None,startValue=None,size=None):
+ def ZSQLOptionsFromCRList(self,fieldname,listField, multiple='',start=None,startValue=None,size=None,selected=None):
"""generate select oprions form a cr seperated list"""
fields=listField.split("\n")
if size:
@@ -247,11 +249,14 @@ class ZSQLExtendFolder(Folder,Persistent
ret+=""""""%(startValue,start)
for field in fields:
- ret+=""""""%(field.encode('utf-8'),field.encode('utf-8'))
+ if selected and (field in selected.split("\n")):
+ ret+=""""""%(field.encode('utf-8'),field.encode('utf-8'))
+ else:
+ ret+=""""""%(field.encode('utf-8'),field.encode('utf-8'))
ret+=""""""
return ret
- def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None, multiple='',startValue=None,additionalSelect="",size=None):
+ def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,valueName=None,start=None, multiple='',startValue=None,additionalSelect="",size=None,linelen=None):
"""generate select options form a search list
es wird
"""
return ret
@@ -337,40 +348,50 @@ class ZSQLExtendFolder(Folder,Persistent
"""inlinesearch"""
qs=[]
-
-
#print "INLINE:",query
return self.ZSQLSimpleSearch(query)
-
+
+
def ZSQLSimpleSearch(self,query=None,max_rows=1000000):
"""simple search"""
-
+
if not query:
query=self.query
if (hasattr(self,"_v_searchSQL") and (self._v_searchSQL == None)) or (not hasattr(self,"_v_searchSQL")):
- self._v_searchSQL=Shared.DC.ZRDB.DA.DA("_v_searchSQL","_v_searchSQL",self.connection_id,"var","")
+
+ self._v_searchSQL=Shared.DC.ZRDB.DA.DA("_v_searchSQL","_v_searchSQL",self.getConnectionObj().getId(),"var","")
+
self._v_searchSQL.max_rows_=max_rows
try:
+
return self._v_searchSQL.__call__(var=query)
except :
if sys.exc_info()[0]=="Database Error":
try:
- getattr(self,self.connection_id).manage_open_connection()
- except: pass
+ self.getConnectionObj().manage_open_connection()
+ except:
+ zLOG.LOG("ZSQLSimpleSearch",zLOG.ERROR, '%s %s'%sys.exc_info()[:2])
else:
try:
self._v_searchSQL.max_rows_=max_rows
+
return self._v_searchSQL.__call__(var=query)
except :
if sys.exc_info()[0]=="Database Error":
try:
- getattr(self,self.connection_id).manage_open_connection()
- except: pass
+ self.getConnectionObj().manage_open_connection()
+ except:
+ zLOG.LOG("ZSQLSimpleSearch",zLOG.ERROR, '%s %s'%sys.exc_info()[:2])
+
+ def getConnectionObj(self):
+ if hasattr(self,'connection_id'):
+ return getattr(self,self.connection_id)
+
def ZSQLSimpleSearch2(self,query=None):
""" returrn SQLSearch"""
- #print "hi",query
+
if not query:
query=self.query
if getattr(self,'_v_search',None):
@@ -394,20 +415,36 @@ class ZSQLExtendFolder(Folder,Persistent
- def ZSQLAdd(self):
+ def ZSQLAdd(self,format=None,RESPONSE=None,**argv):
"""Neuer Eintrag"""
- qs=self.REQUEST['QUERY_STRING']
+
+ qs_temp=[]
+
+ for a in self.REQUEST.form.keys():
+ qs_temp.append(a+"="+urllib.quote(str(self.REQUEST.form[a])))
+
+ qs=string.join(qs_temp,",")
+
+ for field in argv.keys():
+ if field[0]=="_":
+ fieldTmp="-"+field[1:]
+ else:
+ fieldTmp=field
+
+ qs+=",%s=%s"%(fieldTmp,argv[field])
+
+
addList={}
- for q in qs.split("&"):
+ for q in qs.split(","):
name=re.sub("r'+'"," ",q.split("=")[0].lower())
value=q.split("=")[1]
- value=re.sub(r'\+'," ",value)
- value=urllib.unquote(value)
+ value=re.sub(r'\+'," ",value)
+ value=urllib.unquote(value)
if name=="-table":
table=urllib.unquote(value)
elif name=="-format":
format=urllib.unquote(value)
- elif (not name[0]=="-") and (not len(value)==0):
+ elif (not (name[0]=="-" or name[0]=="_")) and (not len(value)==0):
addList[urllib.unquote(name)]=urllib.unquote(value)
keyList=[]
@@ -420,43 +457,65 @@ class ZSQLExtendFolder(Folder,Persistent
valueString=string.join(valueList,",")
queryString="INSERT INTO %s (%s) VALUES (%s)"%(table,keyString,valueString)
+
self.ZSQLSimpleSearch(queryString)
- return self.REQUEST.RESPONSE.redirect(format)
- def ZSQLChange(self,**argv):
+ if RESPONSE and format:
+ return RESPONSE.redirect(format)
+ else:
+ return True
+
+ def ZSQLChange(self,format=None,RESPONSE=None,USE_FORM=None,**argv):
"""change entries"""
#qs=self.REQUEST['QUERY_STRING']
# very bad hack
+
qs_temp=[]
-
- for a in self.REQUEST.form.keys():
- qs_temp.append(a+"="+urllib.quote(str(self.REQUEST.form[a])))
+ if USE_FORM or RESPONSE:
+ for a in self.REQUEST.form.keys():
+ qs_temp.append(a+"="+urllib.quote(str(self.REQUEST.form[a])))
- qs=string.join(qs_temp,"&")
-
-
- #print "CHANGE QS",self.REQUEST
- #return self.REQUEST
+
+
+ for field in argv.keys():
+
+ if field[0]=="_":
+ fieldTmp="-"+field[1:]
+ else:
+ fieldTmp=field
+
+ qs_temp.append("%s=%s"%(fieldTmp,argv[field]))
+
+
changeList=[]
- for q in qs.split("&"):
+
+ for q in qs_temp:
+
name=urllib.unquote(re.sub("r'+'"," ",q.split("=")[0].lower()))
- value=q.split("=")[1]
+ value="=".join(q.split("=")[1:])
value=re.sub(r'\+'," ",value)
- value=urllib.unquote(value)
- if name=="-table":
- table=urllib.unquote(value)
+ value=urllib.unquote(value)
+
+ if name=="-table":
+ table=urllib.unquote(value)
elif name=="-identify":
identify=urllib.unquote(value)
identify=identify.split("=")[0]+"="+sql_quote(identify.split("=")[1])
elif name=="-format":
format=urllib.unquote(value)
- elif (not name[0]=="-") and (not len(value)==0):
+ elif (not (name[0]=="-" or name[0]=="_")) and (not len(value)==0):
changeList.append("\""+name+"\"="+sql_quote(urllib.unquote(value)))
+
changeString=string.join(changeList,",")
queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify)
+
self.ZSQLSimpleSearch(queryString)
- return self.REQUEST.RESPONSE.redirect(format)
-
+
+
+ if RESPONSE and format:
+ return RESPONSE.redirect(format)
+ else:
+ return True
def ZSQLFind2(self,qs="",select="oid,*",storename=None,tableList=['cdli_translit','cdli_cat'],restrictField='id_text',**argv):
@@ -909,9 +968,11 @@ class ZSQLExtendFolder(Folder,Persistent
else:
return value
- def ZSQLQuery(self,query):
+ def ZSQLQuery(self,query,debug=None):
"""query"""
-
+ if debug:
+ zLOG.LOG("ZSQLQuery", zLOG.INFO, query)
+
return self.ZSQLSimpleSearch(query)
@@ -1290,7 +1351,7 @@ class ZSQLBibliography(Folder,ZSQLExtend
return retdata,fieldlist
- def createRDFTag(self,tag,content,namespace="ns"):
+ def createRDFTag(self,tag,content,namespace="cdli"):
"""create RDF"""
if content:
tag=namespace+":"+tag
@@ -1315,7 +1376,7 @@ class ZSQLBibliography(Folder,ZSQLExtend
else:
return ""
- def getMetaDataXML2(self):
+ def getXML2(self):
"""crate index meta"""
fn=os.path.splitext(self.REQUEST['fn'])[0]+"."