|
|
| version 1.63, 2005/04/27 19:36:01 | version 1.67, 2005/10/11 20:05:06 |
|---|---|
| Line 18 import zLOG | Line 18 import zLOG |
| import os.path | import os.path |
| import os | import os |
| def analyseIntSearch(word): | def analyseIntSearch(word): |
| #analyse integer searches | #analyse integer searches |
| Line 41 def sql_quote(v): | Line 42 def sql_quote(v): |
| quote_dict = {"\'": "''", "\\": "\\\\"} | quote_dict = {"\'": "''", "\\": "\\\\"} |
| for dkey in quote_dict.keys(): | for dkey in quote_dict.keys(): |
| if string.find(v, dkey) >= 0: | 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 | return "'%s'" % v |
| def showSQLConnectionIDs(self): | def showSQLConnectionIDs(self): |
| Line 51 class ZSQLExtendFolder(Folder,Persistent | Line 52 class ZSQLExtendFolder(Folder,Persistent |
| """Folder""" | """Folder""" |
| meta_type="ZSQLExtendFolder" | meta_type="ZSQLExtendFolder" |
| def testneu(self): | def testneu(self): |
| """test""" | """test""" |
| relStatement="""period like '%s%%'""" | relStatement="""period like '%s%%'""" |
| Line 343 class ZSQLExtendFolder(Folder,Persistent | Line 345 class ZSQLExtendFolder(Folder,Persistent |
| """inlinesearch""" | """inlinesearch""" |
| qs=[] | qs=[] |
| #print "INLINE:",query | #print "INLINE:",query |
| return self.ZSQLSimpleSearch(query) | return self.ZSQLSimpleSearch(query) |
| def ZSQLSimpleSearch(self,query=None,max_rows=1000000): | def ZSQLSimpleSearch(self,query=None,max_rows=1000000): |
| """simple search""" | """simple search""" |
| Line 356 class ZSQLExtendFolder(Folder,Persistent | Line 357 class ZSQLExtendFolder(Folder,Persistent |
| if (hasattr(self,"_v_searchSQL") and (self._v_searchSQL == None)) or (not hasattr(self,"_v_searchSQL")): | 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","<dtml-var var>") | self._v_searchSQL=Shared.DC.ZRDB.DA.DA("_v_searchSQL","_v_searchSQL",self.connection_id,"var","<dtml-var var>") |
| self._v_searchSQL.max_rows_=max_rows | self._v_searchSQL.max_rows_=max_rows |
| try: | try: |
| return self._v_searchSQL.__call__(var=query) | return self._v_searchSQL.__call__(var=query) |
| except : | except : |
| if sys.exc_info()[0]=="Database Error": | if sys.exc_info()[0]=="Database Error": |
| try: | try: |
| getattr(self,self.connection_id).manage_open_connection() | getattr(self,self.connection_id).manage_open_connection() |
| except: pass | except: |
| zLOG.LOG("ZSQLSimpleSearch",zLOG.ERROR, '%s %s'%sys.exc_info()[:2]) | |
| else: | else: |
| try: | try: |
| self._v_searchSQL.max_rows_=max_rows | self._v_searchSQL.max_rows_=max_rows |
| return self._v_searchSQL.__call__(var=query) | return self._v_searchSQL.__call__(var=query) |
| except : | except : |
| if sys.exc_info()[0]=="Database Error": | if sys.exc_info()[0]=="Database Error": |
| try: | try: |
| getattr(self,self.connection_id).manage_open_connection() | getattr(self,self.connection_id).manage_open_connection() |
| except: pass | except: |
| zLOG.LOG("ZSQLSimpleSearch",zLOG.ERROR, '%s %s'%sys.exc_info()[:2]) | |
| def ZSQLSimpleSearch2(self,query=None): | def ZSQLSimpleSearch2(self,query=None): |
| """ returrn SQLSearch""" | """ returrn SQLSearch""" |
| #print "hi",query | |
| if not query: | if not query: |
| query=self.query | query=self.query |
| if getattr(self,'_v_search',None): | if getattr(self,'_v_search',None): |
| Line 400 class ZSQLExtendFolder(Folder,Persistent | Line 407 class ZSQLExtendFolder(Folder,Persistent |
| def ZSQLAdd(self): | def ZSQLAdd(self,format=None,RESPONSE=None,**argv): |
| """Neuer Eintrag""" | """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={} | addList={} |
| for q in qs.split("&"): | for q in qs.split(","): |
| name=re.sub("r'+'"," ",q.split("=")[0].lower()) | name=re.sub("r'+'"," ",q.split("=")[0].lower()) |
| value=q.split("=")[1] | value=q.split("=")[1] |
| value=re.sub(r'\+'," ",value) | value=re.sub(r'\+'," ",value) |
| Line 413 class ZSQLExtendFolder(Folder,Persistent | Line 436 class ZSQLExtendFolder(Folder,Persistent |
| table=urllib.unquote(value) | table=urllib.unquote(value) |
| elif name=="-format": | elif name=="-format": |
| format=urllib.unquote(value) | 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) | addList[urllib.unquote(name)]=urllib.unquote(value) |
| keyList=[] | keyList=[] |
| Line 426 class ZSQLExtendFolder(Folder,Persistent | Line 449 class ZSQLExtendFolder(Folder,Persistent |
| valueString=string.join(valueList,",") | valueString=string.join(valueList,",") |
| queryString="INSERT INTO %s (%s) VALUES (%s)"%(table,keyString,valueString) | queryString="INSERT INTO %s (%s) VALUES (%s)"%(table,keyString,valueString) |
| self.ZSQLSimpleSearch(queryString) | 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,**argv): | |
| """change entries""" | """change entries""" |
| #qs=self.REQUEST['QUERY_STRING'] | #qs=self.REQUEST['QUERY_STRING'] |
| # very bad hack | # very bad hack |
| qs_temp=[] | qs_temp=[] |
| 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]))) |
| qs=string.join(qs_temp,"&") | |
| #print "CHANGE QS",self.REQUEST | for field in argv.keys(): |
| #return self.REQUEST | if field[0]=="_": |
| fieldTmp="-"+field[1:] | |
| else: | |
| fieldTmp=field | |
| qs_temp.append("%s=%s"%(fieldTmp,argv[field])) | |
| qs=string.join(qs_temp,",") | |
| changeList=[] | changeList=[] |
| for q in qs.split("&"): | |
| for q in qs.split(","): | |
| name=urllib.unquote(re.sub("r'+'"," ",q.split("=")[0].lower())) | 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=re.sub(r'\+'," ",value) |
| value=urllib.unquote(value) | value=urllib.unquote(value) |
| if name=="-table": | if name=="-table": |
| table=urllib.unquote(value) | table=urllib.unquote(value) |
| elif name=="-identify": | elif name=="-identify": |
| Line 456 class ZSQLExtendFolder(Folder,Persistent | Line 494 class ZSQLExtendFolder(Folder,Persistent |
| identify=identify.split("=")[0]+"="+sql_quote(identify.split("=")[1]) | identify=identify.split("=")[0]+"="+sql_quote(identify.split("=")[1]) |
| elif name=="-format": | elif name=="-format": |
| format=urllib.unquote(value) | 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))) | changeList.append("\""+name+"\"="+sql_quote(urllib.unquote(value))) |
| changeString=string.join(changeList,",") | changeString=string.join(changeList,",") |
| queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify) | queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify) |
| self.ZSQLSimpleSearch(queryString) | 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): | def ZSQLFind2(self,qs="",select="oid,*",storename=None,tableList=['cdli_translit','cdli_cat'],restrictField='id_text',**argv): |
| """find2""" | """find2""" |
| Line 1321 class ZSQLBibliography(Folder,ZSQLExtend | Line 1365 class ZSQLBibliography(Folder,ZSQLExtend |
| else: | else: |
| return "" | return "" |
| def getMetaDataXML2(self): | def getXML2(self): |
| """crate index meta""" | """crate index meta""" |
| fn=os.path.splitext(self.REQUEST['fn'])[0]+"." | fn=os.path.splitext(self.REQUEST['fn'])[0]+"." |