Annotation of ZSQLExtend/ZSQLExtend.py.~1.9.~, 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 pyPgSQL import libpq
        !             9: from AccessControl import getSecurityManager
        !            10: import os.path
        !            11: 
        !            12: def quoteString(name):
        !            13:     #return re.sub(r'([\(\)\?])',"\\\1",name)
        !            14:     #return "Euklid"
        !            15:     return name
        !            16: 
        !            17: class ZSQLExtendFolder(Persistent, Implicit, Folder):
        !            18:     """Folder"""
        !            19:     meta_type="ZSQLExtendFolder"
        !            20: 
        !            21:     def actualPath(self,url=None):
        !            22:    """path"""
        !            23:    if not url:
        !            24:        return "http://"+self.REQUEST['HTTP_X_FORWARDED_SERVER']+self.REQUEST['PATH_TRANSLATED']
        !            25:        else:
        !            26:        temp=self.REQUEST[url].split("/")
        !            27:        temp[2]=self.REQUEST['HTTP_X_FORWARDED_SERVER']
        !            28:        return string.join(temp,"/")
        !            29: 
        !            30:     def getRequest(self):
        !            31:    """request"""
        !            32:    return self.REQUEST
        !            33: 
        !            34:     def lowerEnd(self,path):
        !            35:         """oinly for demo"""
        !            36:         return os.path.splitext(path)[0]+".jpg"
        !            37:         
        !            38:     def ZSQLisEmpty(self,field):
        !            39:         """Teste ob Treffer leer"""
        !            40:         #print "field",field
        !            41:         if not field:
        !            42:             return 1
        !            43:         if field=="":
        !            44:             return 1
        !            45:         return 0
        !            46: 
        !            47:     def ZSQLsearchOptions(self,fieldname=""):
        !            48:         """return HTML Fragment with search options"""
        !            49:    
        !            50:         ret="""<select name="-op_%s">
        !            51:    <option value="bw">begins with</option>             <!-- begins with / beginnt mit, "Wort*" -->
        !            52:    <option value="ew">ends with</option>
        !            53:        <option value="ct" selected>contains</option>               <!-- contains / enthaellt, "Wort" -->
        !            54:     <option value="eq">equals</option>                 <!-- equals / ist, =Wort -->
        !            55: </select>"""%fieldname
        !            56:         return ret
        !            57:     
        !            58:     def ZSQLInlineSearch(self,storename=None,**argv):
        !            59:         """inlinesearch"""
        !            60:         qs=[]
        !            61:         if storename:
        !            62:             """store"""
        !            63:         else:
        !            64:             storename="foundCount"
        !            65:             
        !            66:     
        !            67: 
        !            68:         #print "INLINE:",argv
        !            69:         for a in argv.keys():
        !            70:             qs.append(a+"="+urllib.quote(str(argv[a])))
        !            71:         #return []  
        !            72:         return self.parseQueryString(string.join(qs,","),"_",storename=storename)
        !            73: 
        !            74:     def ZSQLInlineSearch2(self,query):
        !            75:         """inlinesearch"""
        !            76:         qs=[]
        !            77:         
        !            78:     
        !            79: 
        !            80:         #print "INLINE:",query
        !            81:         
        !            82:         return self.search(var=query)
        !            83:     
        !            84:     def ZSQLAdd(self):
        !            85:         """Neuer Eintrag"""
        !            86:         qs=self.REQUEST['QUERY_STRING']
        !            87:         addList={}
        !            88:         for q in qs.split("&"):
        !            89:             name=re.sub("r'+'"," ",q.split("=")[0].lower())
        !            90:             value=q.split("=")[1]
        !            91:        value=re.sub(r'\+'," ",value)
        !            92:        value=urllib.unquote(value) 
        !            93:             if name=="-table":
        !            94:                 table=urllib.unquote(value)
        !            95:             elif name=="-format":
        !            96:                 format=urllib.unquote(value)
        !            97:             elif (not name[0]=="-") and (not len(value)==0):
        !            98:                 addList[urllib.unquote(name)]=urllib.unquote(value)
        !            99: 
        !           100:         keyList=[]
        !           101:         valueList=[]
        !           102:         for x in addList.keys():
        !           103:             keyList.append("\""+x+"\"")
        !           104:             valueList.append(libpq.PgQuoteString(addList[x]))
        !           105: 
        !           106:         keyString=string.join(keyList,",")
        !           107:         valueString=string.join(valueList,",")
        !           108:         
        !           109:         queryString="INSERT INTO %s (%s) VALUES (%s)"%(table,keyString,valueString)
        !           110:         self.search(var=queryString)
        !           111:         return self.REQUEST.RESPONSE.redirect(format)
        !           112:         
        !           113:     def ZSQLChange(self,**argv):
        !           114:         """Ändern von Einträgen"""
        !           115:         #qs=self.REQUEST['QUERY_STRING']
        !           116:         # very bad hack
        !           117:         qs_temp=[]
        !           118:     
        !           119:         for a in self.REQUEST.form.keys():
        !           120:             qs_temp.append(a+"="+urllib.quote(str(self.REQUEST.form[a])))
        !           121: 
        !           122:         qs=string.join(qs_temp,"&")
        !           123: 
        !           124:     
        !           125:         #print "CHANGE QS",self.REQUEST
        !           126:         #return self.REQUEST
        !           127:         changeList=[]
        !           128:         for q in qs.split("&"):
        !           129:             name=urllib.unquote(re.sub("r'+'"," ",q.split("=")[0].lower()))
        !           130:             value=q.split("=")[1]
        !           131:             value=re.sub(r'\+'," ",value)
        !           132:        value=urllib.unquote(value)
        !           133:        if name=="-table":
        !           134:                 table=urllib.unquote(value)
        !           135:             elif name=="-identify":
        !           136:                 identify=urllib.unquote(value)
        !           137:                 identify=identify.split("=")[0]+"="+libpq.PgQuoteString(identify.split("=")[1])
        !           138:             elif name=="-format":
        !           139:                 format=urllib.unquote(value)
        !           140:             elif (not name[0]=="-") and (not len(value)==0):
        !           141:                 changeList.append("\""+name+"\"="+libpq.PgQuoteString(urllib.unquote(value)))
        !           142:         changeString=string.join(changeList,",")
        !           143:         queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify)
        !           144:         self.search(var=queryString)
        !           145:         return self.REQUEST.RESPONSE.redirect(format)
        !           146: 
        !           147:     def ZSQLChange_old(self):
        !           148:         """Ändern von Einträgen"""
        !           149:         qs=self.REQUEST['QUERY_STRING']
        !           150:         #print "CHANGE QS",self.REQUEST
        !           151:         #return self.REQUEST
        !           152:         changeList=[]
        !           153:         for q in qs.split("&"):
        !           154:             name=urllib.unquote(re.sub("r'+'"," ",q.split("=")[0].lower()))
        !           155:             value=q.split("=")[1]
        !           156:             value=re.sub(r'\+'," ",value)
        !           157:        value=urllib.unquote(value)
        !           158:        if name=="-table":
        !           159:                 table=urllib.unquote(value)
        !           160:             elif name=="-identify":
        !           161:                 identify=urllib.unquote(value)
        !           162:                 identify=identify.split("=")[0]+"="+libpq.PgQuoteString(identify.split("=")[1])
        !           163:             elif name=="-format":
        !           164:                 format=urllib.unquote(value)
        !           165:             elif (not name[0]=="-") and (not len(value)==0):
        !           166:                 changeList.append("\""+name+"\"="+libpq.PgQuoteString(urllib.unquote(value)))
        !           167:         changeString=string.join(changeList,",")
        !           168:         queryString="UPDATE %s SET %s WHERE %s"%(table,changeString,identify)
        !           169:         self.search(var=queryString)
        !           170:         return self.REQUEST.RESPONSE.redirect(format)
        !           171:     
        !           172:     def ZSQLFind(self,qs="",select="*",storename=None):
        !           173:         """Find"""
        !           174: 
        !           175: 
        !           176:         if qs=="":
        !           177:            if self.REQUEST['QUERY_STRING']:
        !           178:                qs=self.REQUEST['QUERY_STRING']
        !           179:                
        !           180:                
        !           181:                qs=string.join(qs.split("&"),",")
        !           182:            else:
        !           183:                
        !           184:                qs=self.REQUEST.SESSION['query']
        !           185:         else:
        !           186:             qs=string.join(qs.split("&"),",")
        !           187:    
        !           188: 
        !           189:         qs=re.sub("\\+"," ",qs)# Austauschen da Leerzeichen bei http-get durch + ersetzt wird, generell sollte alles auf post umgeschrieben werden. vom search formular.
        !           190:         #print "QS",qs
        !           191:         if storename:
        !           192:             """store"""
        !           193:         else:
        !           194:             storename="foundCount"
        !           195:         
        !           196:         ret=self.parseQueryString(qs,"-",select=select,storemax="yes",storename=storename)
        !           197:         #print self.REQUEST.SESSION["foundCount"]
        !           198:         
        !           199:         return ret
        !           200: 
        !           201:     def ZSQLFoundCountLen(self,var):
        !           202:         return len(var)
        !           203:             
        !           204:     def ZSQLFoundCount(self,qs="",select="*",storename=None):
        !           205:         
        !           206:        ##  if qs=="":
        !           207:             
        !           208: ##             if self.REQUEST['QUERY_STRING']:
        !           209:             
        !           210: ##                 qs=self.REQUEST['QUERY_STRING']
        !           211: ##                 qs=string.join(qs.split("&"),",")
        !           212: ##             else:
        !           213:             
        !           214: ##                 qs=self.REQUEST.SESSION['query']
        !           215: ##         else:
        !           216: ##             qs=string.join(qs.split("&"),",")
        !           217: 
        !           218: 
        !           219: ##         temp= self.parseQueryString(qs,"-",select=select,storemax="yes",nostore="yes")
        !           220:         if storename:
        !           221:             """store"""
        !           222:         else:
        !           223:             storename="foundCount"
        !           224:         
        !           225:         return self.REQUEST.SESSION[storename]['count']
        !           226: 
        !           227:     def ZSQLRangeStart(self,storename=None):
        !           228:         
        !           229:         if storename:
        !           230:             """store"""
        !           231:         else:
        !           232:             storename="foundCount"
        !           233:         
        !           234:         return self.REQUEST.SESSION[storename]['rangeStart']
        !           235:     
        !           236:     def ZSQLRangeSize(self,storename=None):
        !           237:         
        !           238:         if storename:
        !           239:             """store"""
        !           240:         else:
        !           241:             storename="foundCount"
        !           242:             
        !           243:         return self.REQUEST.SESSION[storename]['rangeSize']
        !           244: 
        !           245:     def ZSQLRangeEnd(self,storename=None):
        !           246:         
        !           247:         if storename:
        !           248:             """store"""
        !           249:         else:
        !           250:             storename="foundCount"
        !           251:         
        !           252:         return self.REQUEST.SESSION[storename]['rangeEnd']
        !           253:     
        !           254:     def parseQueryString(self,qs,iCT,storemax="no",select=None,nostore=None,storename=None):
        !           255:         """analysieren den QueryString"""
        !           256:         #print "NO",nostore
        !           257:         lop="AND" # standardsuche mit and
        !           258:         max="ALL" #standard alle auswählen
        !           259:         whereList=[]
        !           260:         sort=""
        !           261:         op="bw"
        !           262:         opfields={}
        !           263:         skip=""
        !           264:         rangeStart=0
        !           265:         
        !           266:         if not select:
        !           267:             select="*"
        !           268:         #print "Q",nostore,qs
        !           269:         #check for op in the case of inline search
        !           270:         
        !           271:    splitted=qs.split(",")
        !           272:    
        !           273:             
        !           274:         for q in splitted:
        !           275:                 
        !           276:                 name=re.sub("r'+'"," ",q.split("=")[0].lower())
        !           277:                 value=urllib.unquote(q.split("=")[1])
        !           278: 
        !           279:                 if name[0:3]==iCT+"op":
        !           280:                     op=value
        !           281:                     field=name[4:]
        !           282:                     opfields[field]=op
        !           283:    
        !           284:    #print opfieldsa
        !           285:         #now analyse the querystring
        !           286:         for q in qs.split(","):
        !           287:             
        !           288:             
        !           289:             #try:
        !           290: 
        !           291:             name=re.sub("r'+'"," ",q.split("=")[0].lower())
        !           292:             value=urllib.unquote(q.split("=")[1])
        !           293:             #value=libpq.PgQuoteString(value)
        !           294:             
        !           295:             
        !           296:             if name==iCT+"lop":
        !           297:                 lop=value
        !           298:             elif name==iCT+"table":
        !           299:                 table=value
        !           300:             elif name==iCT+"select":
        !           301:                 select=value
        !           302:             elif name==iCT+"max":
        !           303:                 max="LIMIT "+str(value)
        !           304:                 limit=str(value)
        !           305:             elif name==iCT+"skip":
        !           306:                 skip="OFFSET "+str(value)
        !           307:                 rangeStart=str(value)
        !           308:             elif name==iCT+"join":
        !           309:                 whereList.append(value)
        !           310:             elif name==iCT+"sort":
        !           311:                 sort="ORDER BY "+value
        !           312:             elif name==iCT+"token":
        !           313:                 if not nostore=="yes":
        !           314:                     self.REQUEST.SESSION['token']=value
        !           315: 
        !           316:             elif name==iCT+"op":
        !           317:                 op=value
        !           318: 
        !           319: 
        !           320: 
        !           321:             elif (not name[0]==iCT) and (not len(value)==0):
        !           322:                 
        !           323:        #print "OP",op,name
        !           324:                 value=value.lower()
        !           325:                 if opfields.has_key(name):
        !           326:                     op=opfields[name]
        !           327:        else:
        !           328:            op="ct"
        !           329:        name="LOWER("+name+")"    
        !           330:                 if op=="ct":
        !           331:                     whereList.append(name+" LIKE "+libpq.PgQuoteString("%"+value+"%"))
        !           332:                 elif op=="gt":
        !           333:                     whereList.append(name+">"+libpq.PgQuoteString(value))
        !           334:                 elif op=="lt":
        !           335:                     whereList.append(name+"<"+libpq.PgQuoteString(value))
        !           336:                 elif op=="eq":
        !           337:                     whereList.append(name+"="+libpq.PgQuoteString(value))
        !           338:                 elif op=="bw":
        !           339:                     whereList.append(name+" LIKE "+libpq.PgQuoteString(value+"%"))
        !           340:                 elif op=="ew":
        !           341:                     whereList.append(name+" LIKE "+libpq.PgQuoteString("%"+value))
        !           342:                 op="ct"
        !           343:             
        !           344:             #except:
        !           345:             #    print "END",value,name,Exception       
        !           346:         if len(whereList)>0:
        !           347:             where="WHERE "+string.join(whereList," "+lop+" ")
        !           348:         else:
        !           349:             where=""
        !           350:         #print "QE",table
        !           351:         
        !           352:         query="SELECT %s FROM %s %s %s %s %s"%(select,table,where,sort,max,skip)
        !           353:         if not nostore=="yes":
        !           354:             
        !           355:             self.REQUEST.SESSION['qs']=opfields
        !           356:         #print "IAMHERE again:", query
        !           357: 
        !           358:         if storename:
        !           359:             query2="SELECT count(*) FROM %s %s"%(table,where)
        !           360:             #print "storing",query2
        !           361:             #print "QUERYSTRING:",self.REQUEST.SESSION[storename]['queryString2']
        !           362:             if not self.REQUEST.SESSION.has_key(storename):
        !           363:                 self.REQUEST.SESSION[storename]={}
        !           364:             if self.REQUEST.SESSION[storename].has_key('queryString2'):
        !           365:                 #print "HI",storename
        !           366:                 if not self.REQUEST.SESSION[storename]['queryString2']==query2:
        !           367:                     #print "HOOOOO",storename
        !           368:                     self.REQUEST.SESSION[storename]['queryString2']=query2
        !           369:                     self.REQUEST.SESSION[storename]['count']=self.search(var=query2)[0].count
        !           370:                     #print "QUERY",query2,"::::",self.REQUEST.SESSION[storename]['queryString2']
        !           371:                 
        !           372:             else:
        !           373:                 self.REQUEST.SESSION[storename]['queryString2']=query2
        !           374:                 self.REQUEST.SESSION[storename]['count']=self.search(var=query2)[0].count
        !           375:                 #print "QUERYNEW",self.REQUEST.SESSION[storename]['queryString2']
        !           376:             
        !           377:             
        !           378:             self.REQUEST.SESSION[storename]['rangeStart']=rangeStart
        !           379:             if limit=="all":
        !           380:                 self.REQUEST.SESSION[storename]['rangeEnd']=self.REQUEST.SESSION[storename]['count']
        !           381:             else:
        !           382:                 self.REQUEST.SESSION[storename]['rangeEnd']=int(rangeStart)+int(limit)
        !           383:             self.REQUEST.SESSION[storename]['rangeSize']=limit
        !           384:             
        !           385:    #print query            
        !           386:         return self.search(var=query)
        !           387:     
        !           388:     def ZSQLSearch(self):
        !           389:         """To be done"""
        !           390:         rq=self.REQUEST['QUERY_STRING']
        !           391:         querys=rq.split("&")
        !           392:         
        !           393: 
        !           394:         for querytemp in querys:
        !           395:             query=querytemp.split("=")
        !           396:             try:
        !           397:                 if query[0].lower()=="-format":
        !           398:                     formatfile=query[1]
        !           399:             except:
        !           400:                 """nothing"""
        !           401:         #print formatfile        
        !           402:         self.REQUEST.SESSION['query']=string.join(self.REQUEST['QUERY_STRING'].split("&"),",")
        !           403:         return self.REQUEST.RESPONSE.redirect(urllib.unquote(formatfile))
        !           404: 
        !           405:     
        !           406:     def ZSQLint(self,string):
        !           407:         try:
        !           408: 
        !           409:             return(int(string))
        !           410:         except:
        !           411:             return 0
        !           412: 
        !           413:     def nextLink(self,html,storename="foundCount"):
        !           414:         """nextLink"""
        !           415:         try:
        !           416:             limit=self.REQUEST.SESSION[storename]['rangeSize']
        !           417:             newRangeStart=int(self.REQUEST.SESSION[storename]['rangeStart'])+int(limit)
        !           418:         except:
        !           419:             limit=0
        !           420:             newRangeStart=0
        !           421:             
        !           422:         if newRangeStart>self.REQUEST.SESSION[storename]['count']:
        !           423:             newRangeStart=self.REQUEST.SESSION[storename]['count']-10
        !           424: 
        !           425:         
        !           426:         #create new query string
        !           427:         
        !           428:         if self.REQUEST['QUERY_STRING']=="":
        !           429:             qs=self.REQUEST.SESSION['query']
        !           430:             
        !           431:             queries=string.split(qs,",")
        !           432:             
        !           433:             
        !           434:         else:
        !           435:             qs=self.REQUEST['QUERY_STRING']
        !           436:             queries=string.split(qs,"&")
        !           437:             
        !           438:             
        !           439:             
        !           440:         newquery=[]
        !           441: 
        !           442:         skipFound=0
        !           443:         
        !           444:         for query in queries:
        !           445:             #print query.split("=")[0]
        !           446:             if query[0]=="_" : query[0]="-"
        !           447: 
        !           448:             if query.split("=")[0].lower()=="-skip":
        !           449:                 skipFound=1
        !           450:                 query="-skip=%i"%newRangeStart
        !           451:             newquery.append(query)
        !           452: 
        !           453:         if skipFound==0 :
        !           454:             query="-skip=%i"%newRangeStart
        !           455:             newquery.append(query)
        !           456:                 
        !           457:         newquerystring=string.join(newquery,"&")
        !           458:    
        !           459:         return "<a href='%s'>%s</a>"%(self.actualPath()+"?"+newquerystring,html)
        !           460:             
        !           461:         
        !           462:     def prevLink(self,html,storename="foundCount"):
        !           463:         """prev link"""
        !           464:         try:
        !           465:             limit=self.REQUEST.SESSION[storename]['rangeSize']
        !           466:             newRangeStart=int(self.REQUEST.SESSION[storename]['rangeStart'])-int(limit)
        !           467:         except:
        !           468:             limit=0
        !           469:             newRangeStart=0
        !           470: 
        !           471:         #print "limit",limit,newRangeStart,int(self.REQUEST.SESSION[storename]['rangeStart'])
        !           472:         
        !           473:         if newRangeStart<0:
        !           474:                 newRangeStart=0
        !           475: 
        !           476:         #create new query string
        !           477:         
        !           478:         if self.REQUEST['QUERY_STRING']=="":
        !           479:             qs=self.REQUEST.SESSION['query']
        !           480:             #qs=re.sub(r'_','-',qs) #aendern für query
        !           481:             queries=string.split(qs,",")
        !           482:             
        !           483:             
        !           484:         else:
        !           485:             qs=self.REQUEST['QUERY_STRING']
        !           486:             queries=string.split(qs,"&")
        !           487:             
        !           488:             
        !           489:             
        !           490:         newquery=[]
        !           491:         
        !           492:         skipFound=0
        !           493: 
        !           494:         for query in queries:
        !           495:             #print query.split("=")[0]
        !           496: 
        !           497:             if query[0]=="_" : query[0]="-"
        !           498:             
        !           499:             if query.split("=")[0].lower()=="-skip":
        !           500:                 #print"HI"
        !           501:                 query="-skip=%i"%newRangeStart
        !           502:                 skipFound=1
        !           503:             newquery.append(query)
        !           504: 
        !           505:         if skipFound==0 :
        !           506:             query="-skip=%i"%newRangeStart
        !           507:             newquery.append(query)
        !           508:             
        !           509:         newquerystring=string.join(newquery,"&")
        !           510: 
        !           511:         return "<a href='%s'>%s</a>"%(self.actualPath()+"?"+newquerystring,html)
        !           512: 
        !           513: 
        !           514:     
        !           515:     def prevLink_old(self,html):
        !           516:         """prev link"""
        !           517:         if self.REQUEST['QUERY_STRING']=="":
        !           518:             qs=self.REQUEST.SESSION['query']
        !           519:         else:
        !           520:             qs=self.REQUEST['QUERY_STRING']
        !           521:         max=re.search(r'max\=(.*)\,',qs.lower())
        !           522:         offset=re.search(r'offset\=(.*)\,',qs.lower())
        !           523:         if not offset:
        !           524:             offsetnew=0
        !           525:         else:
        !           526:             offsetnew=int(offset)-max
        !           527:             if offsetnew<0:
        !           528:                 offsetnew=0
        !           529:         queries=string.split(qs,",")
        !           530:         newquery=[]
        !           531:         if offset:
        !           532:             for query in queries:
        !           533:                 if query.split("=")[0].lower()=="offset":
        !           534:                     query="-offset=%i"%offsetnew
        !           535:                 newquery.append(query)
        !           536:                 newquerystring=string.join(newquery,"&")
        !           537:         else:
        !           538:             queries.append("-offset=%i"%offsetnew)
        !           539:             newquerystring=string.join(queries,"&")
        !           540:         return "<a href='%s'>%s</a>"%(self.actualPath()+"?"+newquerystring,html)
        !           541:         
        !           542:     def nextLink_old(self,html):
        !           543:         """prev link"""
        !           544:         if self.REQUEST['QUERY_STRING']=="":
        !           545:             qs=self.REQUEST.SESSION['query']
        !           546:         else:
        !           547:             qs=self.REQUEST['QUERY_STRING']
        !           548:         max=re.search(r'max\=(.*)\,',qs.lower())
        !           549:     
        !           550:         offset=re.search(r'offset\=(.*)\,',qs.lower())
        !           551:         if not offset:
        !           552:             offsetnew=1
        !           553:         else:
        !           554:             offsetnew=int(offset)+int(max)
        !           555:             if offsetnew<0:
        !           556:                 offsetnew=0
        !           557:         queries=string.split(qs,",")
        !           558:         newquery=[]
        !           559:         if offset:
        !           560:             for query in queries:
        !           561: 
        !           562:                 if query.split("=")[0].lower()=="-offset":
        !           563:                     query="-offset=%i"%offsetnew
        !           564:                 newquery.append(query)
        !           565:                 newquerystring=string.join(newquery,"&")
        !           566:         else:
        !           567:             queries.append("-offset=%i"%offsetnew)
        !           568:             newquerystring=string.join(queries,"&")
        !           569:         
        !           570:         return "<a href='%s'>%s</a>"%(self.actualPath()+"?"+newquerystring,html)
        !           571:         
        !           572:     
        !           573: manage_addZSQLExtendFolderForm=DTMLFile('ZSQLExtendFolderAdd', globals())
        !           574: 
        !           575: def manage_addZSQLExtendFolder(self, id, title='',
        !           576:                      createPublic=0,
        !           577:                      createUserF=0,
        !           578:                      REQUEST=None):
        !           579:     """Add a new Folder object with id *id*.
        !           580: 
        !           581:     If the 'createPublic' and 'createUserF' parameters are set to any true
        !           582:     value, an 'index_html' and a 'UserFolder' objects are created respectively
        !           583:     in the new folder.
        !           584:     """
        !           585:     
        !           586:     
        !           587:     ob=ZSQLExtendFolder()
        !           588:     ob.id=str(id)
        !           589:     ob.title=title
        !           590:     self._setObject(id, ob)
        !           591:     ob=self._getOb(id)
        !           592: 
        !           593:     checkPermission=getSecurityManager().checkPermission
        !           594: 
        !           595:     if createUserF:
        !           596:         if not checkPermission('Add User Folders', ob):
        !           597:             raise Unauthorized, (
        !           598:                   'You are not authorized to add User Folders.'
        !           599:                   )
        !           600:         ob.manage_addUserFolder()
        !           601: 
        !           602:     if createPublic:
        !           603:         if not checkPermission('Add Page Templates', ob):
        !           604:             raise Unauthorized, (
        !           605:                   'You are not authorized to add Page Templates.'
        !           606:                   )
        !           607:         ob.manage_addProduct['PageTemplates'].manage_addPageTemplate(
        !           608:             id='index_html', title='')
        !           609: 
        !           610:     if REQUEST is not None:
        !           611:         return self.manage_main(self, REQUEST, update_menu=1)
        !           612: 
        !           613:     

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>