--- ZSQLExtend/ZSQLExtend.py 2005/10/11 13:15:01 1.66 +++ ZSQLExtend/ZSQLExtend.py 2005/10/14 15:08:18 1.69 @@ -42,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): @@ -231,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: @@ -249,7 +249,10 @@ 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 @@ -351,12 +354,13 @@ class ZSQLExtendFolder(Folder,Persistent 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: @@ -365,7 +369,7 @@ class ZSQLExtendFolder(Folder,Persistent except : if sys.exc_info()[0]=="Database Error": try: - getattr(self,self.connection_id).manage_open_connection() + self.getConnectionObj().manage_open_connection() except: zLOG.LOG("ZSQLSimpleSearch",zLOG.ERROR, '%s %s'%sys.exc_info()[:2]) else: @@ -376,10 +380,14 @@ class ZSQLExtendFolder(Folder,Persistent except : if sys.exc_info()[0]=="Database Error": try: - getattr(self,self.connection_id).manage_open_connection() + 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""" @@ -457,35 +465,37 @@ class ZSQLExtendFolder(Folder,Persistent else: return True - def ZSQLChange(self,format=None,RESPONSE=None,**argv): + 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,",") + for field in argv.keys(): + if field[0]=="_": fieldTmp="-"+field[1:] else: fieldTmp=field - qs+=",%s=%s"%(fieldTmp,argv[field]) - + qs_temp.append("%s=%s"%(fieldTmp,argv[field])) + qs=string.join(qs_temp,",") changeList=[] - for q in qs.split(","): + for q in qs.split(","): + name=urllib.unquote(re.sub("r'+'"," ",q.split("=")[0].lower())) value="=".join(q.split("=")[1:]) value=re.sub(r'\+'," ",value) value=urllib.unquote(value) - + if name=="-table": table=urllib.unquote(value) elif name=="-identify": @@ -498,7 +508,7 @@ class ZSQLExtendFolder(Folder,Persistent changeString=string.join(changeList,",") queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify) - + self.ZSQLSimpleSearch(queryString) @@ -958,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)