Annotation of ECHO_content/ECHO_collection.py, revision 1.1

1.1     ! casties     1: 
        !             2: """Echo collection provides the classes for the ECHO content web-site.
        !             3: 
        !             4: class ECHO_collection is the basis class for an ECHO collection.
        !             5: 
        !             6: class ECHO_resource contains information on ECHO resources (e.g. an Display environment for Metadata
        !             7: 
        !             8: class ECHO_externalLink contains information on externalLinks
        !             9: 
        !            10: 
        !            11: 
        !            12: """
        !            13: import string
        !            14: import OFS.Image
        !            15: from types import *
        !            16: from OFS.Image import Image
        !            17: from Globals import DTMLFile
        !            18: from OFS.Folder import Folder
        !            19: from OFS.SimpleItem import SimpleItem
        !            20: from AccessControl import ClassSecurityInfo
        !            21: from Globals import InitializeClass
        !            22: from Globals import DTMLFile
        !            23: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
        !            24: from Products.PageTemplates.PageTemplate import PageTemplate
        !            25: from Globals import Persistent
        !            26: from Acquisition import Implicit
        !            27: 
        !            28: 
        !            29: import urllib
        !            30: import xml.dom.minidom
        !            31: 
        !            32: 
        !            33: def toList(field):
        !            34:     """Einzelfeld in Liste umwandeln"""
        !            35:     if type(field)==StringType:
        !            36:         return [field]
        !            37:     else:
        !            38:         return field
        !            39:     
        !            40: def getText(nodelist):
        !            41: 
        !            42:     rc = ""
        !            43:     for node in nodelist:
        !            44:        if node.nodeType == node.TEXT_NODE:
        !            45:            rc = rc + node.data
        !            46:     return rc
        !            47: 
        !            48: 
        !            49: def readMetadata(url):
        !            50:     """Methoden zum Auslesen der Metadateninformation zu einer Resource
        !            51:     Vorerst noch Typ bib"""
        !            52:     
        !            53:     metadict={}
        !            54:     try:
        !            55:         geturl=""
        !            56:         for line in urllib.urlopen(url).readlines():
        !            57:             geturl=geturl+line
        !            58:         
        !            59:         
        !            60:     except:
        !            61:         return (None,"Cannot open: "+url)
        !            62: 
        !            63:     try:
        !            64:         dom=xml.dom.minidom.parseString(geturl)
        !            65:     except:
        !            66:         return (None,"Cannot parse: "+url+"<br>"+geturl)
        !            67: 
        !            68:     metanode=dom.getElementsByTagName('bib')
        !            69:     metadict['bib_type']='Book'
        !            70:     if len(metanode)==0:
        !            71:         metanode=dom.getElementsByTagName('archimedes')
        !            72:         metadict['bib_type']='Archimedes'
        !            73:         #print "HELLO"
        !            74:         
        !            75:     if not len(metanode)==0:    
        !            76:         metacontent=metanode[0].childNodes
        !            77:     
        !            78:         try:
        !            79:             metadict['bib_type']=getText(dom.getElementsByTagName('bib')[0].attributes['type'].childNodes)
        !            80:         except:
        !            81:             """nothing"""
        !            82:         
        !            83:         for node in metacontent:
        !            84:             try:
        !            85:                 metadict[node.tagName.lower()]=getText(node.childNodes)
        !            86:             except:
        !            87:                 """nothing"""
        !            88: 
        !            89:     #print metadict
        !            90:     return metadict,""
        !            91:     
        !            92: 
        !            93: def setECHO_CollectionInformation(self,context,science,practice,source_type,period,id,title,label,description,content_type,responsible,credits,weight,coords):
        !            94: 
        !            95:         """Allegemeine Informationen zu einer ECHO Collection"""
        !            96: 
        !            97:         self.label = label
        !            98:         self.title=title
        !            99:         self.description=description
        !           100:         self.content_type=content_type
        !           101:         self.responsible=responsible
        !           102:         self.credits=toList(credits)
        !           103:         self.weight=weight
        !           104: 
        !           105:         self.scientific_Information.source_type=source_type
        !           106:         self.scientific_Information.period=period
        !           107:         self.scientific_Information.scientific_Classification.context=context
        !           108:         self.scientific_Information.scientific_Classification.science=science
        !           109:         self.scientific_Information.scientific_Classification.practice=practice
        !           110:         
        !           111: 
        !           112:         #coordinates of for rectangles
        !           113:         self.coords=coords
        !           114:             
        !           115: 
        !           116: class scientificClassification(SimpleItem,Persistent,Implicit):
        !           117:     """subclass"""
        !           118:     security=ClassSecurityInfo()
        !           119:     
        !           120:     def __init__(self,context,science,practice):
        !           121:         self.context=context
        !           122:         self.science=science
        !           123:         self.practice=practice
        !           124:         self.id="scientific_Classification"
        !           125:         
        !           126:     security.declarePublic('get_context')
        !           127:     def get_context(self):
        !           128:         return self.context
        !           129:     
        !           130:     security.declarePublic('get_science')
        !           131:     def get_science(self):
        !           132:         return self.science
        !           133:         
        !           134:     security.declarePublic('get_practice')
        !           135:     def get_practice(self):
        !           136:         return self.practice
        !           137:     
        !           138:                 
        !           139: class scientificInformation(Folder,Persistent,Implicit):
        !           140:     """subclass scientificInformation"""
        !           141:     security=ClassSecurityInfo()
        !           142:     
        !           143:     
        !           144:     
        !           145:     def __init__(self,source_type,period):
        !           146: 
        !           147:         self.id="scientific_Information"
        !           148:         self.source_type=source_type
        !           149:         self.period=period
        !           150:         
        !           151: 
        !           152: 
        !           153:     security.declarePublic('get_source_type')
        !           154:     def get_source_type(self):
        !           155:         return self.source_type
        !           156:     
        !           157:     security.declarePublic('get_period')
        !           158:     def get_period(self):
        !           159:         return self.period
        !           160: 
        !           161: 
        !           162: class ECHO_resource(Folder):
        !           163:     """ECHO Ressource"""
        !           164:     meta_type='ECHO_resource'
        !           165: 
        !           166: 
        !           167:     def __init__(self,id,link,metalink,title,label,description,content_type,responsible,credits,weight,coords):
        !           168: 
        !           169:         self.id = id
        !           170:         """Festlegen der ID"""
        !           171:         
        !           172:         self.label = label
        !           173:         self.link= link
        !           174:         self.metalink=metalink
        !           175:         self.title=title
        !           176:         self.weight=weight
        !           177:         self.credits=toList(credits)
        !           178:         self.description=description
        !           179:         self.content_type=content_type
        !           180:         self.responsible=responsible
        !           181:         coordsnew=[ string.split(x,",") for x in coords]
        !           182:         self.coords=coordsnew
        !           183: 
        !           184:         
        !           185: 
        !           186:     def ECHO_resource_config(self):
        !           187:         """Main configuration"""
        !           188: 
        !           189:         if not hasattr(self,'weight'):
        !           190:             self.weight=""
        !           191:         if not hasattr(self,'coords'):
        !           192:             self.coords=[]
        !           193: 
        !           194:         pt=PageTemplateFile('Products/ECHO_content/ChangeECHO_resource.zpt').__of__(self)
        !           195:         return pt()
        !           196:     
        !           197: 
        !           198:     def changeECHO_resource(self,metalink,link,context,science,practice,source_type,period,title,label,description,content_type,responsible,credits,weight,coords,RESPONSE=None):
        !           199: 
        !           200:         """Änderung der Properties"""
        !           201:         
        !           202: 
        !           203:         setECHO_CollectionInformation(self,context,science,practice,source_type,period,id,title,label,description,content_type,responsible,credits,weight,coords)
        !           204: 
        !           205:         
        !           206:         self.link=link
        !           207:         self.metalink=metalink
        !           208:         
        !           209:         if RESPONSE is not None:
        !           210:             RESPONSE.redirect('manage_main')
        !           211:             
        !           212:             
        !           213:     manage_options = Folder.manage_options+(
        !           214:         {'label':'Main Config','action':'ECHO_resource_config'},
        !           215:         {'label':'Metadata','action':'ECHO_getResourceMD'},
        !           216:      
        !           217:         )
        !           218: 
        !           219:     
        !           220:     def ECHO_getResourceMD(self,template="yes"):
        !           221:         """Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource"""
        !           222:         (metadict, error)=readMetadata(self.metalink)
        !           223: 
        !           224:         #print "BLA"        
        !           225: 
        !           226:         if not error=="": #Fehler beim Auslesen des Metafiles
        !           227:             return "ERROR:",error
        !           228:         for key in metadict.keys():#Hinzufügen der Felder
        !           229: 
        !           230:             setattr(self,key,metadict[key].encode('ascii','replace'))
        !           231:         
        !           232: 
        !           233:         self.metadata=metadict.keys()
        !           234:         #return "BLUccssB"
        !           235:         self.label=self.generate_label()
        !           236:         
        !           237:         if template=="yes":
        !           238:             pt=PageTemplateFile('Products/ECHO_content/ECHO_resourceMD.zpt').__of__(self)
        !           239:             return pt()
        !           240:     
        !           241:     def ECHO_getMD(self,item):
        !           242:         """Ausgabe der MD"""
        !           243:         return getattr(self,item)
        !           244:         
        !           245:     def index_html(self):
        !           246:         """standard page"""
        !           247:         
        !           248:         return self.REQUEST.RESPONSE.redirect(self.link)
        !           249: 
        !           250:     def generate_label(self):
        !           251:         """Erzeugt_standard_Label aus Template"""
        !           252:         pt=getattr(self,"label_template_"+self.bib_type)
        !           253:         #return pt
        !           254:         #pt.content_type="text/html; charset=utf-8"
        !           255:         return pt()
        !           256: 
        !           257: def manage_AddECHO_resourceForm(self):
        !           258:         """Nothing yet"""
        !           259:         pt=PageTemplateFile('Products/ECHO_content/AddECHO_resourceForm.zpt').__of__(self)
        !           260:         return pt()
        !           261: 
        !           262: 
        !           263: def manage_AddECHO_resource(self,context,science,practice,source_type,period,id,title,label,description,content_type,responsible,link,metalink,credits,weight,coords,RESPONSE=None):
        !           264: 
        !           265:     """nothing yet"""
        !           266:     scientificClassificationObj=scientificClassification(context,science,practice)
        !           267:     
        !           268:     scientificInformationObj=scientificInformation(source_type,period)
        !           269:     
        !           270: 
        !           271:     newObj=ECHO_resource(id,link,metalink,title,label,description,content_type,responsible,credits,weight,coords)
        !           272: 
        !           273:     self._setObject(id,newObj)
        !           274:     getattr(self,id)._setObject('scientific_Information',scientificInformationObj)
        !           275:     getattr(self,id).scientific_Information._setObject('scientific_Classification',scientificClassificationObj)
        !           276:     if RESPONSE is not None:
        !           277:         RESPONSE.redirect('manage_main')
        !           278:  
        !           279: 
        !           280: class ECHO_externalLink(Folder):
        !           281:     """Link zu einer externen Ressource"""
        !           282:     security=ClassSecurityInfo()
        !           283:     meta_type='ECHO_externalLink'
        !           284: 
        !           285: 
        !           286:     def __init__(self,id,link,title,label,description,content_type,responsible,credits,weight,coords):
        !           287: 
        !           288:         self.id = id
        !           289:         """Festlegen der ID"""
        !           290: 
        !           291:         self.credits=toList(credits)
        !           292:         self.label = label
        !           293:         self.link= link
        !           294:         self.title=title
        !           295:         self.weight=weight
        !           296:         self.description=description
        !           297:         self.content_type=content_type
        !           298:         self.responsible=responsible
        !           299:         coordsnew=[ string.split(x,",") for x in coords]
        !           300:         self.coords=coordsnew
        !           301: 
        !           302:     def ECHO_externalLink_config(self):
        !           303:         """Main configuration"""
        !           304: 
        !           305:         if not hasattr(self,'weight'):
        !           306:             self.weight=""
        !           307:         if not hasattr(self,'coords'):
        !           308:             print "HI"
        !           309:             self.coords=['']
        !           310:             print "G",self.coords
        !           311: 
        !           312:         pt=PageTemplateFile('Products/ECHO_content/ChangeECHO_externalLink.zpt').__of__(self)
        !           313:         return pt()
        !           314:     
        !           315: 
        !           316:     def changeECHO_externalLink(self,link,context,science,practice,source_type,period,title,label,description,content_type,responsible,credits,weight,coords,RESPONSE=None):
        !           317: 
        !           318:         """Änderung der Properties"""
        !           319:         
        !           320: 
        !           321:         setECHO_CollectionInformation(self,context,science,practice,source_type,period,id,title,label,description,content_type,responsible,credits,weight,coords)
        !           322: 
        !           323:         
        !           324:         self.link=link
        !           325:         if RESPONSE is not None:
        !           326:             RESPONSE.redirect('manage_main')
        !           327:             
        !           328:             
        !           329:     manage_options = Folder.manage_options+(
        !           330:         {'label':'Main Config','action':'ECHO_externalLink_config'},
        !           331:         )
        !           332:     
        !           333:     def index_html(self):
        !           334:         """standard page"""
        !           335:         
        !           336:         return self.REQUEST.RESPONSE.redirect(self.link)
        !           337: 
        !           338: def manage_AddECHO_externalLinkForm(self):
        !           339:         """Nothing yet"""
        !           340:         pt=PageTemplateFile('Products/ECHO_content/AddECHO_externalLinkForm.zpt').__of__(self)
        !           341:         return pt()
        !           342: 
        !           343: 
        !           344: def manage_AddECHO_externalLink(self,context,science,practice,source_type,period,id,title,label,description,content_type,responsible,link,credits,weight,coords,RESPONSE=None):
        !           345: 
        !           346:     """nothing yet"""
        !           347:     scientificClassificationObj=scientificClassification(context,science,practice)
        !           348:     
        !           349:     scientificInformationObj=scientificInformation(source_type,period)
        !           350:     
        !           351: 
        !           352:     newObj=ECHO_externalLink(id,link,title,label,description,content_type,responsible,credits,weight,coords)
        !           353: 
        !           354:     self._setObject(id,newObj)
        !           355:     getattr(self,id)._setObject('scientific_Information',scientificInformationObj)
        !           356:     getattr(self,id).scientific_Information._setObject('scientific_Classification',scientificClassificationObj)
        !           357:     if RESPONSE is not None:
        !           358:         RESPONSE.redirect('manage_main')
        !           359:  
        !           360:         
        !           361: class ECHO_collection(Folder, Persistent, Implicit):
        !           362:     """ECHO Collection"""
        !           363:     security=ClassSecurityInfo()
        !           364:     meta_type='ECHO_collection'
        !           365: 
        !           366: 
        !           367:     
        !           368:     security.declarePublic('getCreditObject')
        !           369:     def getCreditObject(self,name):
        !           370:         """credit id to credititem"""
        !           371:         return getattr(self.partners,name)
        !           372:     
        !           373:     security.declarePublic('ECHO_generateNavBar')
        !           374:     def ECHO_generateNavBar(self):
        !           375:         """Erzeuge Navigationsbar"""
        !           376:         link=""
        !           377:         object="self"
        !           378:         ret=[]
        !           379:         path=self.getPhysicalPath()
        !           380:         for element in path:
        !           381:             
        !           382:            
        !           383:             if not element=="":
        !           384:                 object+="."+element
        !           385:                 
        !           386:                 label=eval(object).label
        !           387:                 link+="/"+element
        !           388:                 if not label=="":
        !           389:                     ret.append((label,link))
        !           390:         return ret
        !           391:     
        !           392:     security.declarePublic('ECHO_rerenderLinksMD')
        !           393:     def ECHO_rerenderLinksMD(self):
        !           394:         """Rerender all Links"""
        !           395:         #print "HI"
        !           396:         #return "OK"
        !           397:         for entry in self.__dict__.keys():
        !           398:             object=getattr(self,entry)
        !           399:             
        !           400:             
        !           401:             try:
        !           402:                 
        !           403:                 if object.meta_type == 'ECHO_resource':
        !           404:                     
        !           405:                     object.ECHO_getResourceMD(template="no")
        !           406:                     
        !           407:             except:
        !           408:                 """nothing"""
        !           409:                 
        !           410:         return "Rerenderd all links to resources in: "+self.title
        !           411:     
        !           412: 
        !           413: 
        !           414:     security.declarePublic('printall')
        !           415:     def printall(self):
        !           416:             return self.scientific_information.__dict__.keys()
        !           417: 
        !           418: 
        !           419:     def getCoords(self):
        !           420:         try:
        !           421:             return [ string.join(x,",") for x in self.coords]
        !           422:         except:
        !           423:             return []
        !           424:     def __init__(self,id,title,label,description,content_type,responsible,credits,weight,sortfield,coords):
        !           425:         print "CO",coords
        !           426: 
        !           427:         self.id = id
        !           428:         """Festlegen der ID"""
        !           429:         self.credits=toList(credits)
        !           430:         self.label = label
        !           431:         self.title=title
        !           432:         self.description=description
        !           433:         self.content_type=content_type
        !           434:         self.responsible=responsible
        !           435: 
        !           436:         self.weight=weight
        !           437:         self.sortfield=sortfield
        !           438:         coordsnew=[ string.split(x,",") for x in coords]
        !           439:         self.coords=coordsnew
        !           440: 
        !           441: 
        !           442:     manage_options = Folder.manage_options+(
        !           443:         {'label':'Main Config','action':'ECHO_Collection_config'},
        !           444:         {'label':'Rerender Links','action':'ECHO_rerenderLinksMD'},
        !           445:         {'label':'Graphics','action':'ECHO_graphicEntry'},
        !           446: 
        !           447:         )
        !           448: 
        !           449:     def ECHO_graphicEntry(self):
        !           450:         """DO nothing"""
        !           451:         if 'overview' in self.aq_parent.__dict__.keys():
        !           452:             pt=PageTemplateFile('Products/ECHO_content/ECHO_draw.zpt').__of__(self)
        !           453:             return pt()
        !           454:         else:
        !           455:             return "NO OVERVIEW GRAPHICS"
        !           456: 
        !           457:     def ECHO_enterCoords(self,coordstr):
        !           458:         """Enter coords"""
        !           459:         self.coords.append(coordstr.split(","))
        !           460:         pt=PageTemplateFile('Products/ECHO_content/ECHO_draw.zpt').__of__(self)
        !           461:         return pt()
        !           462: 
        !           463:     
        !           464:     security.declarePublic('ECHO_Collection_config')
        !           465:     def ECHO_Collection_config(self):
        !           466:         """Main configuration"""
        !           467: 
        !           468:         if not hasattr(self,'weight'):
        !           469:             self.weight=""
        !           470: 
        !           471:         if not hasattr(self,'sortfield'):
        !           472:             self.sortfield="weight"
        !           473:         #print "HI"
        !           474:         if not hasattr(self,'coords'):
        !           475:             self.coords=[]
        !           476: 
        !           477:         pt=PageTemplateFile('Products/ECHO_content/ChangeECHO_Collection.zpt').__of__(self)
        !           478:         return pt()
        !           479: 
        !           480: 
        !           481:     security.declarePublic('changeECHO_Collection')
        !           482: 
        !           483:     def changeECHO_Collection(self,context,science,practice,source_type,period,id,title,label,description,content_type,responsible,credits,weight,coords,sortfield="weight",RESPONSE=None):
        !           484: 
        !           485:         """Änderung der Properties"""
        !           486: 
        !           487:         coordsnew=[ string.split(x,",") for x in coords]
        !           488:         setECHO_CollectionInformation(self,context,science,practice,source_type,period,id,title,label,description,content_type,responsible,credits,weight,coordsnew)
        !           489: 
        !           490:         self.sortfield=sortfield
        !           491: 
        !           492:         if RESPONSE is not None:
        !           493:             RESPONSE.redirect('manage_main')
        !           494:             
        !           495:     security.declarePublic('index_html')
        !           496: 
        !           497:     showOverview=DTMLFile('ECHO_content_overview',globals())
        !           498:     
        !           499:     
        !           500:     def index_html(self):
        !           501:         """standard page"""
        !           502:         #print self.objectIDs()
        !           503:         
        !           504:         if 'index.html' in self.__dict__.keys():
        !           505:             return getattr(self,'index.html')()
        !           506:         elif 'overview' in self.__dict__.keys():
        !           507:             return self.showOverview()
        !           508:             
        !           509:         
        !           510:         pt=PageTemplateFile('Products/ECHO_content/ECHO_content_standard.zpt').__of__(self)
        !           511:         pt.content_type="text/html"
        !           512:         return pt()
        !           513: 
        !           514: 
        !           515:     def getGraphicCoords(self):
        !           516:         """Give list of coordinates"""
        !           517:         subColTypes=['ECHO_collection','ECHO_externalLink','ECHO_resource']
        !           518:         ids=[]
        !           519:         for entry in self.__dict__.keys():
        !           520:             object=getattr(self,entry)
        !           521:             #print "OB:",object
        !           522:             
        !           523:             try:
        !           524:                 print "MT:",object.meta_type
        !           525:                 if object.meta_type in subColTypes:
        !           526:                     for coord in object.coords:
        !           527:                         if len(coord)==4:
        !           528:                             ids.append([string.join(coord,", "),object.getId()])
        !           529:                         
        !           530:                     
        !           531:             except:
        !           532:                 """nothing"""
        !           533:         print "IDS",ids
        !           534:         return ids
        !           535:     
        !           536:     def getSubCols(self,sortfield="weight"):
        !           537: 
        !           538:         subColTypes=['ECHO_collection','ECHO_externalLink','ECHO_resource']
        !           539:         ids=[]
        !           540:         for entry in self.__dict__.keys():
        !           541:             object=getattr(self,entry)
        !           542:             #print "OB:",object
        !           543:             
        !           544:             try:
        !           545:                 #print "MT:",object.meta_type
        !           546:                 if object.meta_type in subColTypes:
        !           547:                     ids.append(object)
        !           548:                     
        !           549:             except:
        !           550:                 """nothing"""
        !           551:         try:
        !           552:             sortfield=self.sortfield
        !           553:         except:
        !           554:             """nothing"""
        !           555:             
        !           556:         tmplist=[]
        !           557:         for x in ids:
        !           558:             if hasattr(x,sortfield):
        !           559:                 try:
        !           560:                     x=int(x)
        !           561:                 except:
        !           562:                     """nothing"""
        !           563:                 tmp=getattr(x,sortfield)
        !           564:             else:
        !           565:                 tmp=10000000
        !           566:             tmplist.append((tmp,x))
        !           567:         tmplist.sort()
        !           568:         return [x for (key,x) in tmplist]
        !           569:      
        !           570:         
        !           571:         
        !           572:                 
        !           573:     
        !           574:     
        !           575: def manage_AddECHO_collectionForm(self):
        !           576:         """Nothing yet"""
        !           577:         pt=PageTemplateFile('Products/ECHO_content/AddECHO_collectionForm.zpt').__of__(self)
        !           578:         return pt()
        !           579: 
        !           580: 
        !           581: def manage_AddECHO_collection(self,context,science,practice,source_type,period,id,title,label,description,content_type,responsible,credits,weight,sortfield,coords,RESPONSE=None):
        !           582: 
        !           583:     """nothing yet"""
        !           584:     scientificClassificationObj=scientificClassification(context,science,practice)
        !           585:     
        !           586:     scientificInformationObj=scientificInformation(source_type,period)
        !           587:     
        !           588: 
        !           589:     newObj=ECHO_collection(id,title,label,description,content_type,responsible,credits,weight,sortfield,coords)
        !           590: 
        !           591:     self._setObject(id,newObj)
        !           592:     getattr(self,id)._setObject('scientific_Information',scientificInformationObj)
        !           593:     getattr(self,id).scientific_Information._setObject('scientific_Classification',scientificClassificationObj)
        !           594:     if RESPONSE is not None:
        !           595:         RESPONSE.redirect('manage_main')
        !           596: 
        !           597: class ECHO_root(Folder,Persistent,Implicit):
        !           598:     """ECHO Root Folder"""
        !           599:     meta_type="ECHO_root"
        !           600: 
        !           601:     def __init__(self,id,title):
        !           602:         """init"""
        !           603:         self.id = id
        !           604:         self.title=title
        !           605:         
        !           606:     def getPartners(self):
        !           607:         """Get list of Partners. Presently only from a subfolder partners"""
        !           608:         partnerTypes=['ECHO_partner']
        !           609:         ids=[]
        !           610:         for entry in self.partners.__dict__.keys():
        !           611:             object=getattr(self.partners,entry)
        !           612:             
        !           613:             try:
        !           614:                 
        !           615:                 if object.meta_type in partnerTypes:
        !           616:                     ids.append(object)
        !           617:                     
        !           618:             except:
        !           619:                 """nothing"""
        !           620:         return ids
        !           621: 
        !           622:     def getCollectionTree(self):
        !           623:         """get the collection tree (list of triples (parent,child, depth)"""
        !           624: 
        !           625:         def getCollection(object,depth=0):
        !           626:             depth+=1
        !           627:             collections=[]
        !           628:             for entry in object.__dict__.keys():
        !           629:                 element=getattr(object,entry)
        !           630:                 try:
        !           631:                     if element.meta_type=="ECHO_collection":
        !           632:                         collections.append((object,element,depth))
        !           633:                         collections+=getCollection(element,depth)
        !           634:                 except:
        !           635:                     """nothing"""
        !           636:             return collections
        !           637:         
        !           638: 
        !           639:         return getCollection(self)
        !           640:     
        !           641:     def getCollectionTreeIds(self):
        !           642:         """Show the IDs of the Tree"""
        !           643:         ret=[]
        !           644:         for collection in self.getCollectionTree():
        !           645:             ret.append((collection[0].getId(),collection[1].getId(),collection[2]))
        !           646:         return ret
        !           647: 
        !           648:         
        !           649:         
        !           650: def manage_AddECHO_root(self,id,title,RESPONSE=None):
        !           651:     """Add an ECHO_root"""
        !           652:     self._setObject(id,ECHO_root(id,title))
        !           653:     
        !           654:     if RESPONSE is not None:
        !           655:         RESPONSE.redirect('manage_main')
        !           656: 
        !           657: def manage_AddECHO_rootForm(self):
        !           658:         """Nothing yet"""
        !           659:         pt=PageTemplateFile('Products/ECHO_content/AddECHO_root.zpt').__of__(self)
        !           660:         return pt()
        !           661:  
        !           662: class ECHO_partner(Image,Persistent):
        !           663:     """ECHO Partner"""
        !           664: 
        !           665:     meta_type="ECHO_partner"
        !           666: 
        !           667:     def __init__(self, id, title,url, file, content_type='', precondition=''):
        !           668:         self.__name__=id
        !           669:         self.title=title
        !           670:         self.url=url
        !           671:         self.precondition=precondition
        !           672: 
        !           673:         data, size = self._read_data(file)
        !           674:         content_type=self._get_content_type(file, data, id, content_type)
        !           675:         self.update_data(data, content_type, size)
        !           676: 
        !           677:     manage_options = Image.manage_options+(
        !           678:         {'label':'Partner Information','action':'ECHO_partner_config'},
        !           679:         )
        !           680: 
        !           681:     def changeECHO_partner(self,url,RESPONSE=None):
        !           682:         """Change main information"""
        !           683:         self.url=url
        !           684:         if RESPONSE is not None:
        !           685:             RESPONSE.redirect('manage_main')
        !           686:             
        !           687:             
        !           688: 
        !           689:     def ECHO_partner_config(self):
        !           690:         """Main configuration"""
        !           691:         if not hasattr(self,'url'):
        !           692:             self.url=""
        !           693:         pt=PageTemplateFile('Products/ECHO_content/ChangeECHO_partner.zpt').__of__(self)
        !           694:         return pt()
        !           695: 
        !           696:         
        !           697: manage_AddECHO_partnerForm=DTMLFile('ECHO_partnerAdd',globals(),
        !           698:                              Kind='ECHO_partner',kind='ECHO_partner')
        !           699: 
        !           700: 
        !           701: 
        !           702: def manage_AddECHO_partner(self, id, file,url, title='', precondition='', content_type='',
        !           703:                     REQUEST=None):
        !           704:     """
        !           705:     Add a new ECHO_partner object.
        !           706: 
        !           707:     Creates a new ECHO_partner object 'id' with the contents of 'file'.
        !           708:     Based on Image.manage_addImage
        !           709:     """
        !           710: 
        !           711:     id=str(id)
        !           712:     title=str(title)
        !           713:     content_type=str(content_type)
        !           714:     precondition=str(precondition)
        !           715: 
        !           716:     id, title = OFS.Image.cookId(id, title, file)
        !           717: 
        !           718:     self=self.this()
        !           719: 
        !           720:     # First, we create the image without data:
        !           721:     self._setObject(id, ECHO_partner(id,title,url,'',content_type, precondition))
        !           722: 
        !           723:     # Now we "upload" the data.  By doing this in two steps, we
        !           724:     # can use a database trick to make the upload more efficient.
        !           725:     if file:
        !           726:         self._getOb(id).manage_upload(file)
        !           727:     if content_type:
        !           728:         self._getOb(id).content_type=content_type
        !           729: 
        !           730:     if REQUEST is not None:
        !           731:         try:    url=self.DestinationURL()
        !           732:         except: url=REQUEST['URL1']
        !           733:         REQUEST.RESPONSE.redirect('%s/manage_main' % url)
        !           734:     return id
        !           735: 
        !           736: 

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