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>