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>