Annotation of ZSQLExtend/ZSQLExtend.py, revision 1.1
1.1 ! dwinter 1: from OFS.Folder import Folder
! 2: from Globals import Persistent
! 3: from Acquisition import Implicit
! 4: from Globals import DTMLFile
! 5: import urllib
! 6: import re
! 7: import string
! 8: from AccessControl import getSecurityManager
! 9:
! 10: class ZSQLExtendFolder(Persistent, Implicit, Folder):
! 11: """Folder"""
! 12: meta_type="ZSQLExtendFolder"
! 13:
! 14: def ZSQLInlineSearch(self,**argv):
! 15: """inlinesearch"""
! 16: qs=[]
! 17:
! 18:
! 19: for a in argv.keys():
! 20: qs.append(a+"="+urllib.quote(str(argv[a])))
! 21:
! 22: return self.parseQueryString(string.join(qs,","),"_")
! 23:
! 24: def ZSQLAdd(self):
! 25: """Neuer Eintrag"""
! 26: qs=self.REQUEST['QUERY_STRING']
! 27: addList={}
! 28: for q in qs.split("&"):
! 29: name=re.sub("r'+'"," ",q.split("=")[0].lower())
! 30: value=q.split("=")[1]
! 31: value=re.sub(r'\+'," ",value)
! 32: value=urllib.unquote(value)
! 33: if name=="-table":
! 34: table=urllib.unquote(value)
! 35: elif name=="-format":
! 36: format=urllib.unquote(value)
! 37: elif (not name[0]=="-") and (not len(value)==0):
! 38: addList[urllib.unquote(name)]=urllib.unquote(value)
! 39:
! 40: keyList=[]
! 41: valueList=[]
! 42: for x in addList.keys():
! 43: keyList.append("\""+x+"\"")
! 44: valueList.append("\'"+addList[x]+"\'")
! 45:
! 46: keyString=string.join(keyList,",")
! 47: valueString=string.join(valueList,",")
! 48:
! 49: queryString="INSERT INTO %s (%s) VALUES (%s)"%(table,keyString,valueString)
! 50: self.search(var=queryString)
! 51: return self.REQUEST.RESPONSE.redirect(format)
! 52:
! 53: def ZSQLChange(self):
! 54: """Ändern von Einträgen"""
! 55: qs=self.REQUEST['QUERY_STRING']
! 56: #print "CHANGE QS",self.REQUEST
! 57: #return self.REQUEST
! 58: changeList=[]
! 59: for q in qs.split("&"):
! 60: name=urllib.unquote(re.sub("r'+'"," ",q.split("=")[0].lower()))
! 61: value=q.split("=")[1]
! 62: value=re.sub(r'\+'," ",value)
! 63: value=urllib.unquote(value)
! 64: if name=="-table":
! 65: table=urllib.unquote(value)
! 66: elif name=="-identify":
! 67: identify=urllib.unquote(value)
! 68: identify=identify.split("=")[0]+"=\'"+identify.split("=")[1]+"\'"
! 69: elif name=="-format":
! 70: format=urllib.unquote(value)
! 71: elif (not name[0]=="-") and (not len(value)==0):
! 72: changeList.append("\""+name+"\"=\'"+urllib.unquote(value)+"\'")
! 73: changeString=string.join(changeList,",")
! 74: queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify)
! 75: self.search(var=queryString)
! 76: return self.REQUEST.RESPONSE.redirect(format)
! 77:
! 78: def ZSQLFind(self,qs="",select="*"):
! 79: """Find"""
! 80:
! 81:
! 82: if qs=="":
! 83: if self.REQUEST['QUERY_STRING']:
! 84: qs=self.REQUEST['QUERY_STRING']
! 85: qs=string.join(qs.split("&"),",")
! 86: else:
! 87: qs=self.REQUEST.SESSION['query']
! 88: else:
! 89: qs=string.join(qs.split("&"),",")
! 90: return self.parseQueryString(qs,"-",select=select,storemax="yes")
! 91:
! 92: def ZSQLFoundCount(self,founds):
! 93: try:
! 94: return len(founds)
! 95: except:
! 96: return 0
! 97:
! 98: def parseQueryString(self,qs,iCT,storemax="no",select=None):
! 99: """analysierren den QueryString"""
! 100: lop="AND" # standardsuche mit and
! 101: max="ALL" #standard alle auswählen
! 102: whereList=[]
! 103: sort=""
! 104: op="bw"
! 105:
! 106: if not select:
! 107: select="*"
! 108:
! 109: for q in qs.split(","):
! 110: try:
! 111:
! 112: name=re.sub("r'+'"," ",q.split("=")[0].lower())
! 113: value=urllib.unquote(q.split("=")[1])
! 114:
! 115: if name==iCT+"lop":
! 116: lop=value
! 117: elif name==iCT+"table":
! 118: table=value
! 119: elif name==iCT+"select":
! 120: select=value
! 121: elif name==iCT+"max":
! 122: max=str(value)
! 123:
! 124: elif name==iCT+"join":
! 125: whereList.append(value)
! 126: elif name==iCT+"sort":
! 127: sort="ORDER BY "+value
! 128: elif name==iCT+"token":
! 129: self.REQUEST.SESSION['token']=value
! 130:
! 131: elif name==iCT+"op":
! 132: op=value
! 133:
! 134: elif (not name[0]==iCT) and (not len(value)==0):
! 135: if op=="ct":
! 136: whereList.append(name+"~\'.*"+value+".*\'")
! 137: elif op=="gt":
! 138: whereList.append(name+">\'"+value+"\'")
! 139: elif op=="lt":
! 140: whereList.append(name+"<\'"+value+"\'")
! 141: elif op=="eq":
! 142: whereList.append(name+"=\'"+value+"\'")
! 143: elif op=="bw":
! 144: whereList.append(name+"~\'"+value+".*\'")
! 145: elif op=="ew":
! 146: whereList.append(name+"~\'.*"+value+"\'")
! 147: op="ct"
! 148: except:
! 149: print "END"
! 150: if len(whereList)>0:
! 151: where="WHERE "+string.join(whereList," "+lop+" ")
! 152: else:
! 153: where=""
! 154: #print "QE",table
! 155:
! 156: query="SELECT %s FROM %s %s %s"%(select,table,where,sort)
! 157:
! 158: return self.search(var=query)
! 159:
! 160: def ZSQLSearch(self):
! 161: """To be done"""
! 162: rq=self.REQUEST['QUERY_STRING']
! 163: querys=rq.split("&")
! 164:
! 165:
! 166: for querytemp in querys:
! 167: query=querytemp.split("=")
! 168: try:
! 169: if query[0].lower()=="-format":
! 170: formatfile=query[1]
! 171: except:
! 172: """nothing"""
! 173: #print formatfile
! 174: self.REQUEST.SESSION['query']=string.join(self.REQUEST['QUERY_STRING'].split("&"),",")
! 175: return self.REQUEST.RESPONSE.redirect(urllib.unquote(formatfile))
! 176:
! 177:
! 178: def ZSQLint(self,string):
! 179: try:
! 180:
! 181: return(int(string))
! 182: except:
! 183: return 0
! 184: def prevLink(self,html):
! 185: """prev link"""
! 186: if self.REQUEST['QUERY_STRING']=="":
! 187: qs=self.REQUEST.SESSION['query']
! 188: else:
! 189: qs=self.REQUEST['QUERY_STRING']
! 190: max=re.search(r'max\=(.*)\,',qs.lower())
! 191: offset=re.search(r'offset\=(.*)\,',qs.lower())
! 192: if not offset:
! 193: offsetnew=0
! 194: else:
! 195: offsetnew=int(offset)-max
! 196: if offsetnew<0:
! 197: offsetnew=0
! 198: queries=string.split(qs,",")
! 199: newquery=[]
! 200: if offset:
! 201: for query in queries:
! 202: if query.split("=")[0].lower()=="offset":
! 203: query="-offset=%i"%offsetnew
! 204: newquery.append(query)
! 205: newquerystring=string.join(newquery,"&")
! 206: else:
! 207: queries.append("-offset=%i"%offsetnew)
! 208: newquerystring=string.join(queries,"&")
! 209: return "<a href='%s'>%s</a>"%(self.REQUEST['URL0']+"?"+newquerystring,html)
! 210:
! 211: def nextLink(self,html):
! 212: """prev link"""
! 213: if self.REQUEST['QUERY_STRING']=="":
! 214: qs=self.REQUEST.SESSION['query']
! 215: else:
! 216: qs=self.REQUEST['QUERY_STRING']
! 217: max=re.search(r'max\=(.*)\,',qs.lower())
! 218:
! 219: offset=re.search(r'offset\=(.*)\,',qs.lower())
! 220: if not offset:
! 221: offsetnew=1
! 222: else:
! 223: offsetnew=int(offset)+int(max)
! 224: if offsetnew<0:
! 225: offsetnew=0
! 226: queries=string.split(qs,",")
! 227: newquery=[]
! 228: if offset:
! 229: for query in queries:
! 230:
! 231: if query.split("=")[0].lower()=="-offset":
! 232: query="-offset=%i"%offsetnew
! 233: newquery.append(query)
! 234: newquerystring=string.join(newquery,"&")
! 235: else:
! 236: queries.append("-offset=%i"%offsetnew)
! 237: newquerystring=string.join(queries,"&")
! 238:
! 239: return "<a href='%s'>%s</a>"%(self.REQUEST['URL0']+"?"+newquerystring,html)
! 240:
! 241: def ZSQLrangeStart(self):
! 242: if self.REQUEST['QUERY_STRING']=="":
! 243: qs=self.REQUEST.SESSION['query']
! 244: else:
! 245: qs=self.REQUEST['QUERY_STRING']
! 246: offset=re.search(r'offset\=(.*)\,',qs.lower())
! 247: if not offset:
! 248: offset=1
! 249: return offset
! 250: # def search(self,**argv):
! 251: # """to be done"""
! 252:
! 253:
! 254:
! 255: manage_addZSQLExtendFolderForm=DTMLFile('ZSQLExtendFolderAdd', globals())
! 256:
! 257: def manage_addZSQLExtendFolder(self, id, title='',
! 258: createPublic=0,
! 259: createUserF=0,
! 260: REQUEST=None):
! 261: """Add a new Folder object with id *id*.
! 262:
! 263: If the 'createPublic' and 'createUserF' parameters are set to any true
! 264: value, an 'index_html' and a 'UserFolder' objects are created respectively
! 265: in the new folder.
! 266: """
! 267:
! 268:
! 269: ob=ZSQLExtendFolder()
! 270: ob.id=str(id)
! 271: ob.title=title
! 272: self._setObject(id, ob)
! 273: ob=self._getOb(id)
! 274:
! 275: checkPermission=getSecurityManager().checkPermission
! 276:
! 277: if createUserF:
! 278: if not checkPermission('Add User Folders', ob):
! 279: raise Unauthorized, (
! 280: 'You are not authorized to add User Folders.'
! 281: )
! 282: ob.manage_addUserFolder()
! 283:
! 284: if createPublic:
! 285: if not checkPermission('Add Page Templates', ob):
! 286: raise Unauthorized, (
! 287: 'You are not authorized to add Page Templates.'
! 288: )
! 289: ob.manage_addProduct['PageTemplates'].manage_addPageTemplate(
! 290: id='index_html', title='')
! 291:
! 292: if REQUEST is not None:
! 293: return self.manage_main(self, REQUEST, update_menu=1)
! 294:
! 295:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>