Annotation of ECHO_content/ECHO_collection.py, revision 1.62
1.13 dwinter 1: """New version of the product started February, 8th. Without scientific classification, use content-type for further classification."""
1.1 casties 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: import string
1.14 dwinter 13: import re
1.29 dwinter 14: import os
1.1 casties 15: import OFS.Image
16: from types import *
17: from OFS.Image import Image
18: from Globals import DTMLFile
19: from OFS.Folder import Folder
20: from OFS.SimpleItem import SimpleItem
21: from AccessControl import ClassSecurityInfo
22: from Globals import InitializeClass
23: from Globals import DTMLFile
24: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
25: from Products.PageTemplates.PageTemplate import PageTemplate
1.29 dwinter 26: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
27: from Globals import Persistent, package_home
1.1 casties 28: from Acquisition import Implicit
1.52 dwinter 29: from ECHO_helpers import displayTypes
1.50 dwinter 30: try:
31: from psycopg import libpq
32: except:
33: try:
34: from pyPgSQL import libpq
35: except:
36: print "ECHO_collection: Warning - No libpq imported!"
37:
1.14 dwinter 38: import xml.dom.minidom
1.1 casties 39:
40: import urllib
41: import xml.dom.minidom
1.23 dwinter 42: from ECHO_graphicalOverview import javaHandler,javaScriptMain
1.41 dwinter 43: import ECHO_helpers
1.1 casties 44:
1.6 dwinter 45: #List of different types for the graphical linking viewer
46: viewClassificationListMaster=['view point','area']
47:
1.29 dwinter 48: def content_html(self,type):
49: """template fuer content"""
50: #templates = self.ZopeFind(self.aq_parent,obj_ids=[type+"_template"])
51: #
52: #if templates:
53: # return templates[0][1]()
1.6 dwinter 54:
1.29 dwinter 55: try:
56: obj=getattr(self,type+"_template")
57: return obj()
58: except:
59: pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_%s_template_standard.zpt'%type).__of__(self)
60: pt.content_type="text/html"
61: return pt()
62:
1.1 casties 63: def toList(field):
64: """Einzelfeld in Liste umwandeln"""
65: if type(field)==StringType:
66: return [field]
67: else:
68: return field
69:
70: def getText(nodelist):
71:
72: rc = ""
73: for node in nodelist:
74: if node.nodeType == node.TEXT_NODE:
75: rc = rc + node.data
76: return rc
77:
78:
79: def readMetadata(url):
80: """Methoden zum Auslesen der Metadateninformation zu einer Resource
81: Vorerst noch Typ bib"""
82:
83: metadict={}
84: try:
85: geturl=""
86: for line in urllib.urlopen(url).readlines():
87: geturl=geturl+line
88:
89:
90: except:
91: return (None,"Cannot open: "+url)
92:
93: try:
94: dom=xml.dom.minidom.parseString(geturl)
95: except:
96: return (None,"Cannot parse: "+url+"<br>"+geturl)
97:
98: metanode=dom.getElementsByTagName('bib')
99: metadict['bib_type']='Book'
100: if len(metanode)==0:
101: metanode=dom.getElementsByTagName('archimedes')
102: metadict['bib_type']='Archimedes'
103: #print "HELLO"
104:
105: if not len(metanode)==0:
106: metacontent=metanode[0].childNodes
107:
108: try:
109: metadict['bib_type']=getText(dom.getElementsByTagName('bib')[0].attributes['type'].childNodes)
110: except:
111: """nothing"""
112:
113: for node in metacontent:
114: try:
115: metadict[node.tagName.lower()]=getText(node.childNodes)
116: except:
117: """nothing"""
118:
119: #print metadict
120: return metadict,""
121:
122:
1.27 dwinter 123: def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs,viewClassification=""):
1.1 casties 124:
125: """Allegemeine Informationen zu einer ECHO Collection"""
126:
1.6 dwinter 127: self.viewClassification=viewClassification
128:
1.1 casties 129: self.label = label
130: self.title=title
131: self.description=description
1.27 dwinter 132: self.contentType=contentType
1.1 casties 133: self.responsible=responsible
134: self.credits=toList(credits)
135: self.weight=weight
136:
1.5 dwinter 137: coords=[]
1.1 casties 138: #coordinates of for rectangles
1.10 dwinter 139:
1.9 dwinter 140: #print "cs", coordstrs
141: if coordstrs:
142: for coordstr in coordstrs:
1.12 dwinter 143: #print "cs", coordstr
1.9 dwinter 144: try:
145: temco=coordstr.split(",")
146: except:
147: temco=[]
148: #temco.append(angle)
149: coords.append(temco)
150:
1.10 dwinter 151:
1.5 dwinter 152: self.coords=coords[0:]
1.1 casties 153:
154:
155: class scientificClassification(SimpleItem,Persistent,Implicit):
1.13 dwinter 156: """outdated will be deleeted in the next versions: subclass"""
1.1 casties 157: security=ClassSecurityInfo()
158:
159: def __init__(self,context,science,practice):
160: self.context=context
161: self.science=science
162: self.practice=practice
163: self.id="scientific_Classification"
164:
165: security.declarePublic('get_context')
166: def get_context(self):
167: return self.context
168:
169: security.declarePublic('get_science')
170: def get_science(self):
171: return self.science
172:
173: security.declarePublic('get_practice')
174: def get_practice(self):
175: return self.practice
176:
177:
178: class scientificInformation(Folder,Persistent,Implicit):
1.13 dwinter 179: """outdated will be deleted in the next versions: subclass scientificInformation"""
1.1 casties 180: security=ClassSecurityInfo()
181:
182:
183:
184: def __init__(self,source_type,period):
185:
186: self.id="scientific_Information"
187: self.source_type=source_type
188: self.period=period
189:
190:
191:
192: security.declarePublic('get_source_type')
193: def get_source_type(self):
194: return self.source_type
195:
196: security.declarePublic('get_period')
197: def get_period(self):
198: return self.period
199:
1.29 dwinter 200: class ECHO_layoutTemplate(ZopePageTemplate):
201: """Create a layout Template for different purposes"""
202:
203: meta_type="ECHO_layoutTemplate"
204:
205: def __init__(self, id, text=None, content_type=None,EchoType=None):
206: self.id = str(id)
207:
208:
209:
210: self.ZBindings_edit(self._default_bindings)
211: if text is None:
212: self._default_content_fn = os.path.join(package_home(globals()),
213: 'zpt/ECHO_%s_template_standard.zpt'%EchoType)
214: text = open(self._default_content_fn).read()
215: self.pt_edit(text, content_type)
216:
1.32 dwinter 217:
1.29 dwinter 218: """change form"""
219:
220:
221: def manage_addECHO_layoutTemplateForm(self):
222: """Form for adding"""
223: pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_layoutTemplate.zpt').__of__(self)
224: return pt()
225:
226: from urllib import quote
227:
228:
229: def manage_addECHO_layoutTemplate(self, EchoType,title=None,REQUEST=None):
230: "Add a Page Template with optional file content."
231: if type(EchoType)==StringType:
232: EchoTypes=[EchoType]
233: else:
234: EchoTypes=EchoType
235:
236: for singleType in EchoTypes:
1.32 dwinter 237:
1.29 dwinter 238: id = str(singleType)+"_template"
239: if REQUEST is None:
240: self._setObject(id, ECHO_layoutTemplate(id, text,EchoType=singleType))
241: ob = getattr(self, id)
242:
243: if title:
244: ob.pt_setTitle(title)
245: return ob
246: else:
247: file = REQUEST.form.get('file')
248: headers = getattr(file, 'headers', None)
249: if headers is None or not file.filename:
250: zpt = ECHO_layoutTemplate(id,EchoType=singleType)
251: else:
252: zpt = ECHO_layoutTemplate(id, file, headers.get('content_type'))
253:
254: self._setObject(id, zpt)
255: ob = getattr(self, id)
256: if title:
257: ob.pt_setTitle(title)
258:
259: try:
260: u = self.DestinationURL()
261: except AttributeError:
262: u = REQUEST['URL1']
263:
264:
265: REQUEST.RESPONSE.redirect(u+'/manage_main')
266: return ''
1.1 casties 267:
268: class ECHO_resource(Folder):
269: """ECHO Ressource"""
270: meta_type='ECHO_resource'
271:
1.6 dwinter 272: viewClassificationList=viewClassificationListMaster
1.1 casties 273:
1.41 dwinter 274: getSubCols = ECHO_helpers.getSubCols
1.48 dwinter 275: def getTitle(self):
276: """title"""
277: return self.title.encode('utf-8')
278:
279: def getLabel(self):
280: """title"""
281: return self.label.encode('utf-8')
1.41 dwinter 282:
1.29 dwinter 283: def content_html(self):
284: """template fuer content"""
285: return content_html(self,'resource')
286:
1.6 dwinter 287: def getViewClassification(self):
288: if hasattr(self,'viewClassification'):
289: return self.viewClassification
290: else:
291: return ""
1.13 dwinter 292:
1.9 dwinter 293: def getCredits(self):
294: """Ausgabe der credits"""
295: if self.credits:
296: return self.credits
297: else:
298: return []
1.6 dwinter 299:
1.27 dwinter 300: def __init__(self,id,link,metalink,title,label,description,contentType,responsible,credits,weight,coords):
1.1 casties 301:
302: self.id = id
303: """Festlegen der ID"""
304:
305: self.label = label
306: self.link= link
307: self.metalink=metalink
308: self.title=title
309: self.weight=weight
310: self.credits=toList(credits)
311: self.description=description
1.27 dwinter 312: self.contentType=contentType
1.1 casties 313: self.responsible=responsible
1.9 dwinter 314:
315: if coords:
316: coordsnew=[ string.split(x,",") for x in coords]
317: else:
318: coordsnew=[]
319:
1.1 casties 320: self.coords=coordsnew
321:
1.3 dwinter 322:
323: def getCoords(self):
324: try:
1.4 dwinter 325: return [string.join(x,",") for x in self.coords]
1.3 dwinter 326: except:
327: return []
328:
1.49 dwinter 329: def getContentType(self):
330: try:
331: return self.contentType
332: except:
333: return ""
1.1 casties 334:
335: def ECHO_resource_config(self):
336: """Main configuration"""
337:
338: if not hasattr(self,'weight'):
339: self.weight=""
340: if not hasattr(self,'coords'):
341: self.coords=[]
342:
1.21 dwinter 343: print "vorher",self.coords
1.13 dwinter 344: pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource.zpt').__of__(self)
1.1 casties 345: return pt()
346:
347:
1.27 dwinter 348: def changeECHO_resource(self,metalink,link,title,label,description,contentType,responsible,weight,viewClassification="",coords=None,credits=None,RESPONSE=None):
1.1 casties 349: """Änderung der Properties"""
350:
1.33 dwinter 351: try:
352: coordsnew=[ string.split(x,",") for x in coords]
353: except:
354: coordsnew=[]
1.21 dwinter 355:
1.27 dwinter 356: setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordsnew)
1.62 ! dwinter 357: self.viewClassification=viewClassification
1.21 dwinter 358: self.coords=coordsnew[0:]
1.1 casties 359: self.link=link
360: self.metalink=metalink
361:
362: if RESPONSE is not None:
363: RESPONSE.redirect('manage_main')
364:
365:
366: manage_options = Folder.manage_options+(
367: {'label':'Main Config','action':'ECHO_resource_config'},
368: {'label':'Metadata','action':'ECHO_getResourceMD'},
1.3 dwinter 369: {'label':'Graphics','action':'ECHO_graphicEntry'},
1.1 casties 370: )
371:
1.20 dwinter 372: def getOverview(self):
373: """overview graphics"""
374:
375: return self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['overview'])[0][1]
376:
1.3 dwinter 377: def ECHO_graphicEntry(self):
378: """DO nothing"""
1.20 dwinter 379: overview = self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['overview'])
1.19 dwinter 380: if overview:
1.13 dwinter 381: pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_draw.zpt').__of__(self)
1.3 dwinter 382: return pt()
383: else:
384: return "NO OVERVIEW GRAPHICS"
385:
1.4 dwinter 386: def ECHO_enterCoords(self,coordstr,angle="",RESPONSE=None):
1.3 dwinter 387: """Enter coords"""
388: coords=self.coords
1.4 dwinter 389: temco=coordstr.split(",")
390: temco.append(angle)
391: coords.append(temco)
392:
1.3 dwinter 393: self.coords=coords[0:]
1.13 dwinter 394:
1.3 dwinter 395: if RESPONSE is not None:
396: RESPONSE.redirect('ECHO_graphicEntry')
397:
1.1 casties 398: def ECHO_getResourceMD(self,template="yes"):
399: """Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource"""
400: (metadict, error)=readMetadata(self.metalink)
401:
1.13 dwinter 402:
1.1 casties 403:
404: if not error=="": #Fehler beim Auslesen des Metafiles
405: return "ERROR:",error
406: for key in metadict.keys():#Hinzufügen der Felder
407:
408: setattr(self,key,metadict[key].encode('ascii','replace'))
409:
410:
411: self.metadata=metadict.keys()
1.13 dwinter 412:
1.1 casties 413: self.label=self.generate_label()
414:
415: if template=="yes":
1.13 dwinter 416: pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_resourceMD.zpt').__of__(self)
1.1 casties 417: return pt()
418:
419: def ECHO_getMD(self,item):
420: """Ausgabe der MD"""
421: return getattr(self,item)
422:
423: def index_html(self):
424: """standard page"""
425:
426: return self.REQUEST.RESPONSE.redirect(self.link)
427:
428: def generate_label(self):
429: """Erzeugt_standard_Label aus Template"""
430: pt=getattr(self,"label_template_"+self.bib_type)
1.13 dwinter 431:
1.1 casties 432: return pt()
433:
1.13 dwinter 434: def manage_addECHO_resourceForm(self):
435: """Form for adding a ressource"""
436: pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_resourceForm.zpt').__of__(self)
1.1 casties 437: return pt()
438:
439:
1.10 dwinter 440:
1.27 dwinter 441: def manage_addECHO_resource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None):
1.13 dwinter 442: """addaresource"""
1.1 casties 443:
1.27 dwinter 444: newObj=ECHO_resource(id,link,metalink,title,label,description,contentType,responsible,credits,weight,coords)
1.1 casties 445:
446: self._setObject(id,newObj)
1.13 dwinter 447:
1.1 casties 448: if RESPONSE is not None:
449: RESPONSE.redirect('manage_main')
450:
451:
452: class ECHO_externalLink(Folder):
453: """Link zu einer externen Ressource"""
454: security=ClassSecurityInfo()
455: meta_type='ECHO_externalLink'
456:
1.48 dwinter 457: def getTitle(self):
458: """title"""
459: return self.title.encode('utf-8')
460:
461: def getLabel(self):
462: """title"""
463: return self.label.encode('utf-8')
464:
1.29 dwinter 465: def content_html(self):
466: """template fuer content"""
467: return content_html(self,'externalLink')
468:
1.27 dwinter 469: def __init__(self,id,link,title,label,description,contentType,responsible,credits,weight,coords):
1.1 casties 470:
471: self.id = id
472: """Festlegen der ID"""
473:
474: self.credits=toList(credits)
475: self.label = label
476: self.link= link
477: self.title=title
478: self.weight=weight
479: self.description=description
1.27 dwinter 480: self.contentType=contentType
1.1 casties 481: self.responsible=responsible
482: coordsnew=[ string.split(x,",") for x in coords]
483: self.coords=coordsnew
484:
485: def ECHO_externalLink_config(self):
486: """Main configuration"""
487:
488: if not hasattr(self,'weight'):
489: self.weight=""
490: if not hasattr(self,'coords'):
1.9 dwinter 491:
1.1 casties 492: self.coords=['']
1.12 dwinter 493: #print "G",self.coords
1.1 casties 494:
1.13 dwinter 495: pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_externalLink.zpt').__of__(self)
1.1 casties 496: return pt()
497:
498:
1.37 dwinter 499: def changeECHO_externalLink(self,link,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None):
1.1 casties 500:
501: """Änderung der Properties"""
1.36 dwinter 502: try:
503: coordsnew=[ string.split(x,",") for x in coords]
504: except:
505: coordsnew=[]
1.1 casties 506:
1.27 dwinter 507: setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coords)
1.1 casties 508:
1.21 dwinter 509: self.coords=coordsnew[0:]
1.1 casties 510: self.link=link
511: if RESPONSE is not None:
512: RESPONSE.redirect('manage_main')
513:
514:
515: manage_options = Folder.manage_options+(
516: {'label':'Main Config','action':'ECHO_externalLink_config'},
517: )
1.17 dwinter 518:
519: def getCredits(self):
520: """Ausgabe der credits"""
521: if self.credits:
522: return self.credits
523: else:
524: return []
525:
1.1 casties 526: def index_html(self):
527: """standard page"""
528:
529: return self.REQUEST.RESPONSE.redirect(self.link)
530:
1.13 dwinter 531: def manage_addECHO_externalLinkForm(self):
532: """Form for external Links"""
533: pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_externalLinkForm.zpt').__of__(self)
1.1 casties 534: return pt()
535:
536:
1.27 dwinter 537: def manage_addECHO_externalLink(self,id,title,label,description,contentType,responsible,link,weight,coords=None,credits=None,RESPONSE=None):
1.13 dwinter 538: """Add an external Link"""
1.1 casties 539:
1.27 dwinter 540: newObj=ECHO_externalLink(id,link,title,label,description,contentType,responsible,credits,weight,coords)
1.1 casties 541:
542: self._setObject(id,newObj)
1.13 dwinter 543:
1.1 casties 544: if RESPONSE is not None:
545: RESPONSE.redirect('manage_main')
546:
1.24 dwinter 547:
1.51 dwinter 548: class ECHO_link(ECHO_externalLink):
549: """external_link"""
550:
551: meta_type="ECHO_link"
552:
553:
1.53 dwinter 554: def content_html(self):
555: """template fuer content"""
556: return content_html(self,'link')
557:
1.51 dwinter 558: def manage_addECHO_linkForm(self):
559: """Form for external Links"""
560: pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_linkForm.zpt').__of__(self)
561: return pt()
562:
563:
564: def manage_addECHO_link(self,id,title,label,description,contentType,responsible,link,weight,coords=None,credits=None,RESPONSE=None):
565: """Add an external Link"""
566:
567: newObj=ECHO_link(id,link,title,label,description,contentType,responsible,credits,weight,coords)
568:
569: self._setObject(id,newObj)
570:
571: if RESPONSE is not None:
572: RESPONSE.redirect('manage_main')
573:
1.24 dwinter 574:
1.1 casties 575: class ECHO_collection(Folder, Persistent, Implicit):
576: """ECHO Collection"""
577: security=ClassSecurityInfo()
578: meta_type='ECHO_collection'
1.48 dwinter 579:
1.60 dwinter 580: displayTypes=displayTypes
1.58 dwinter 581:
1.48 dwinter 582: def getTitle(self):
583: """title"""
584: return self.title.encode('utf-8')
585:
586: def getLabel(self):
587: """title"""
588: return self.label.encode('utf-8')
1.1 casties 589:
1.45 dwinter 590: def createRessourcesFromXMLForm(self):
591: """form"""
592: pt=PageTemplateFile('Products/ECHO_content/zpt/createRessourcesFromXMLForm.zpt').__of__(self)
593: return pt()
594: def createRessourcesFromXML(self,fileupload):
595: """read an XML file for generating resources"""
596: dom=xml.dom.minidom.parse(fileupload)
597: ret="<h2>Added</h2>"
598: for resource in dom.getElementsByTagName('resource'):
599: link=getText(resource.getElementsByTagName('link')[0].childNodes)
600: label=getText(resource.getElementsByTagName('label')[0].childNodes)
601: #splitted=link.split("?")[0].split("/")
602: #id=splitted[len(splitted)-1].encode('ascii')
603: id=re.sub(" ","_",label).encode('ascii')
604:
605: ret+="<p>"+label+"</p>"
1.46 dwinter 606: manage_addECHO_resource(self,id,label.encode('ascii'),label.encode('ascii'),"","","",link.encode('ascii'),"","")
1.45 dwinter 607: return ret
1.25 dwinter 608: def getImageTag(self):
609: """GetTag"""
610: try:
611: return self.imageTag
612: except:
613: return ""
614:
1.27 dwinter 615: def addResource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None):
1.24 dwinter 616: """SSS"""
617: try:
1.27 dwinter 618: manage_addECHO_resource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None)
1.24 dwinter 619: return "done"
620: except:
621: return None
1.32 dwinter 622:
623: def getSecondaryLink(self):
624: """secondary link"""
625: try:
626: return self.secondaryLink
627: except:
628: return ""
629:
630: def getSecondaryLinkTitle(self):
631: """secondary link"""
632: try:
633: return self.secondaryLinkTitle
634: except:
635: return ""
636:
1.24 dwinter 637: def getCollectionTreeXML(self):
638: """Tree as XML"""
639:
640: def getCollection(object,depth=0):
641: depth+=1
642: collections=""
643: for entry in object.__dict__.keys():
644: element=getattr(object,entry)
645: try:
1.40 dwinter 646: if element.meta_type in ["ECHO_collection","ECHO_group"]:
1.60 dwinter 647: collections+="<element name=\""+quote(element.title)+"\" url=\""+element.absolute_url()+"\">"
1.24 dwinter 648: collections+=getCollection(element,depth)+"</element>\n"
649: except:
650: """nothing"""
651: return collections
652:
1.60 dwinter 653: ret="""<?xml version="1.0" encoding="utf-8" ?>"""
654: return ret+"<collection>"+getCollection(self)+"</collection>"
1.24 dwinter 655:
1.23 dwinter 656: def createJavaScript(self):
657: """CreateJava"""
658: ret=javaScriptMain
659:
660: dynamical=""
661: for ob in self.getGraphicCoords():
1.47 casties 662: if ob[4][4] == "":
663: dynamical+="""Coords.push(new Coord('%s', Img, %s));\n"""%(ob[1],ob[0])
664: else:
665: dynamical+="""Coords.push(new Coord('%s', Img, %s));//%s\n"""%(ob[1],ob[0],ob[4][4])
666: dynamical+="ShowArrow(new getObj('i.%s'),Img,%s);\n"%(ob[1],ob[0])
1.23 dwinter 667: ret+=javaHandler%dynamical
668: return ret
1.1 casties 669:
670: security.declarePublic('getCreditObject')
671: def getCreditObject(self,name):
672: """credit id to credititem"""
1.15 dwinter 673: try:
674: return getattr(self.partners,name)
675: except:
676: return ""
1.17 dwinter 677:
1.1 casties 678: security.declarePublic('ECHO_generateNavBar')
679: def ECHO_generateNavBar(self):
680: """Erzeuge Navigationsbar"""
681: link=""
682: object="self"
683: ret=[]
684: path=self.getPhysicalPath()
685: for element in path:
686:
687:
688: if not element=="":
689: object+="."+element
690:
691: label=eval(object).label
692: link+="/"+element
693: if not label=="":
694: ret.append((label,link))
695: return ret
696:
697: security.declarePublic('ECHO_rerenderLinksMD')
1.49 dwinter 698: def ECHO_rerenderLinksMD(self,obj=None):
1.1 casties 699: """Rerender all Links"""
1.49 dwinter 700: if not obj:
701: obj = self
1.1 casties 702:
1.49 dwinter 703: entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_resource','ECHO_collection'])
704:
705: for entry in entries:
706: if entry[1].meta_type == 'ECHO_resource':
707: entry[1].ECHO_getResourceMD(template="no")
708: print "rerender",entry[1].getId()
709: else:
710: self.ECHO_rerenderLinksMD(entry[1])
711:
1.1 casties 712:
713:
714: return "Rerenderd all links to resources in: "+self.title
1.19 dwinter 715:
716: security.declarePublic('ECHO_newViewerLink')
1.1 casties 717:
718:
719: def getCoords(self):
720: try:
1.11 dwinter 721:
722: x= [string.join(x,",") for x in self.coords]
723: return x
1.4 dwinter 724:
1.11 dwinter 725: except:
1.4 dwinter 726:
1.1 casties 727: return []
1.3 dwinter 728:
1.34 dwinter 729: def __init__(self,id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,secondaryLinkTitle,secondaryLink,imageTag="",bgcolour=""):
1.9 dwinter 730: #print "CO",coords
1.1 casties 731:
732: self.id = id
733: """Festlegen der ID"""
734: self.credits=toList(credits)
735: self.label = label
736: self.title=title
737: self.description=description
1.27 dwinter 738: self.contentType=contentType
1.1 casties 739: self.responsible=responsible
1.25 dwinter 740: self.imageTag=imageTag
1.1 casties 741: self.weight=weight
742: self.sortfield=sortfield
743: coordsnew=[ string.split(x,",") for x in coords]
744: self.coords=coordsnew
1.32 dwinter 745: self.secondaryLinkTitle=secondaryLinkTitle
746: self.secondaryLink=secondaryLink
1.35 dwinter 747: self.bgcolour=bgcolour
1.32 dwinter 748:
1.1 casties 749:
750: manage_options = Folder.manage_options+(
1.13 dwinter 751: {'label':'Main Config','action':'ECHO_collection_config'},
1.1 casties 752: {'label':'Rerender Links','action':'ECHO_rerenderLinksMD'},
753: {'label':'Graphics','action':'ECHO_graphicEntry'},
1.45 dwinter 754: {'label':'create resources from XML','action':'createRessourcesFromXMLForm'},
1.1 casties 755:
756: )
757:
1.19 dwinter 758: def getOverview(self):
759: """overview graphics"""
1.20 dwinter 760:
761: return self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['overview'])[0][1]
762:
1.19 dwinter 763:
1.1 casties 764: def ECHO_graphicEntry(self):
765: """DO nothing"""
1.20 dwinter 766: overview = self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['overview'])
1.19 dwinter 767:
1.20 dwinter 768:
1.19 dwinter 769: if overview:
1.13 dwinter 770: pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_draw.zpt').__of__(self)
1.1 casties 771: return pt()
772: else:
773: return "NO OVERVIEW GRAPHICS"
774:
1.4 dwinter 775: def ECHO_enterCoords(self,coordstr,angle="",RESPONSE=None):
1.1 casties 776: """Enter coords"""
1.2 dwinter 777: coords=self.coords
1.4 dwinter 778: temco=coordstr.split(",")
779: temco.append(angle)
780: coords.append(temco)
1.2 dwinter 781: self.coords=coords[0:]
1.13 dwinter 782:
1.2 dwinter 783: if RESPONSE is not None:
784: RESPONSE.redirect('ECHO_graphicEntry')
1.1 casties 785:
786:
1.13 dwinter 787: security.declarePublic('ECHO_collection_config')
788: def ECHO_collection_config(self):
1.1 casties 789: """Main configuration"""
790:
791: if not hasattr(self,'weight'):
792: self.weight=""
793:
794: if not hasattr(self,'sortfield'):
795: self.sortfield="weight"
1.13 dwinter 796:
1.1 casties 797: if not hasattr(self,'coords'):
798: self.coords=[]
799:
1.13 dwinter 800: pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_collection.zpt').__of__(self)
1.1 casties 801: return pt()
802:
803:
1.13 dwinter 804: security.declarePublic('changeECHO_collection')
1.1 casties 805:
1.10 dwinter 806:
1.34 dwinter 807: def getBgcolour(self):
808: """colour"""
809: if hasattr(self,'bgcolour') and not (self.bgcolour==""):
810: return self.bgcolour
811: else:
812: return "#dddddd"
813:
814: def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour=""):
1.13 dwinter 815: """Änderung der Properties"""
1.10 dwinter 816:
1.32 dwinter 817: self.secondaryLink=secondaryLink
818: self.secondaryLinkTitle=secondaryLinkTitle
1.25 dwinter 819: self.imageTag=imageTag
1.34 dwinter 820: self.bgcolour=bgcolour
821:
1.32 dwinter 822: if coords:
823: coordsnew=[ string.split(x,",") for x in coords]
824: self.coords=coordsnew[0:]
825: else:
826: coordsnew=None
827: self.coords=None
828:
829: setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordsnew)
1.44 dwinter 830: try:
831: self.coords=coordsnew[0:] # HACK fehler in setECHO_collection
832: except:
833: """none"""
834:
1.1 casties 835: self.sortfield=sortfield
836:
837: if RESPONSE is not None:
838: RESPONSE.redirect('manage_main')
839:
840: security.declarePublic('index_html')
841:
1.23 dwinter 842:
843: def showOverview(self):
844: """overview"""
845: if 'ECHO_overview.html' in self.__dict__.keys():
846: return getattr(self,'ECHO_overview.html')()
847: pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_content_overview.zpt').__of__(self)
848: return pt()
849:
1.1 casties 850:
851: def index_html(self):
852: """standard page"""
853:
854: if 'index.html' in self.__dict__.keys():
855: return getattr(self,'index.html')()
1.32 dwinter 856:
1.1 casties 857: elif 'overview' in self.__dict__.keys():
858: return self.showOverview()
1.32 dwinter 859: elif hasattr(self,'collection_index_template'):
860: return self.collection_index_template()
1.54 dwinter 861: elif hasattr(self,'main_index_template'):
1.55 dwinter 862: return self.main_index_template()
1.1 casties 863:
1.54 dwinter 864: pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_main_index_template_standard.zpt').__of__(self)
1.29 dwinter 865: pt.content_type="text/html"
1.1 casties 866: return pt()
867:
1.29 dwinter 868: def content_html(self):
869: """template fuer content"""
870: return content_html(self,'collection')
871:
1.11 dwinter 872: def getCredits(self):
873: """Ausgabe der credits"""
874: if self.credits:
875: return self.credits
876: else:
877: return []
1.1 casties 878:
1.23 dwinter 879:
880:
1.1 casties 881: def getGraphicCoords(self):
882: """Give list of coordinates"""
883: subColTypes=['ECHO_collection','ECHO_externalLink','ECHO_resource']
884: ids=[]
885: for entry in self.__dict__.keys():
886: object=getattr(self,entry)
887: try:
888: if object.meta_type in subColTypes:
1.4 dwinter 889: for coordtemp in object.coords:
890: if len(coordtemp)>3:
891: coord=coordtemp[0:4]
1.23 dwinter 892: if hasattr(object,'label') and not object.label=="":
1.47 casties 893: ids.append([string.join(coord,", "),object.getId(),object.label,object,coordtemp])
1.23 dwinter 894: elif hasattr(object,'title'):
1.3 dwinter 895: if not object.title=="":
1.47 casties 896: ids.append([string.join(coord,", "),object.getId(),object.title,object,coordtemp])
1.3 dwinter 897: else:
1.47 casties 898: ids.append([string.join(coord,", "),object.getId(),object.getId(),object,coordtemp])
1.3 dwinter 899: else:
1.47 casties 900: ids.append([string.join(coord,", "),object.getId(),object.getId(),object,coordtemp])
1.1 casties 901:
902: except:
903: """nothing"""
1.13 dwinter 904:
1.1 casties 905: return ids
906:
1.42 dwinter 907:
908:
909:
1.41 dwinter 910: getSubCols = ECHO_helpers.getSubCols
1.1 casties 911:
912:
913:
914:
1.13 dwinter 915: def manage_addECHO_collectionForm(self):
916: """Add collection form"""
917: pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_collectionForm.zpt').__of__(self)
1.1 casties 918: return pt()
919:
920:
1.34 dwinter 921: def manage_addECHO_collection(self,id,title,label,description,contentType,responsible,weight,sortfield,coords="",secondaryLinkTitle="",secondaryLink="",credits=None,RESPONSE=None,imageTag="",bgcolour=""):
1.13 dwinter 922: """add a echo collection"""
1.1 casties 923:
924:
1.34 dwinter 925: newObj=ECHO_collection(id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,secondaryLinkTitle=secondaryLinkTitle,secondaryLink=secondaryLink,imageTag=imageTag,bgcolour="")
1.1 casties 926:
927: self._setObject(id,newObj)
1.13 dwinter 928:
1.1 casties 929: if RESPONSE is not None:
930: RESPONSE.redirect('manage_main')
931:
1.38 dwinter 932: class ECHO_group(ECHO_collection):
933: """ECHO Gruppe"""
934: meta_type="ECHO_group"
935:
936: manage_options = Folder.manage_options+(
937: {'label':'Main Config','action':'ECHO_group_config'},
938: {'label':'Rerender Links','action':'ECHO_rerenderLinksMD'},
939: {'label':'Graphics','action':'ECHO_graphicEntry'},
940: )
1.52 dwinter 941:
942: def index_html(self):
943: """standard page"""
944: displayedObjects=self.ZopeFind(self,obj_metatypes=displayTypes)
1.61 dwinter 945: #if (len(displayedObjects)==1) and (displayedObjects[0][1].meta_type=="ECHO_collection"): # nur ein Object dann redirect auf dieses Object
946: # return self.REQUEST.RESPONSE.redirect(displayedObjects[0][1].absolute_url())
1.52 dwinter 947:
948: if 'index.html' in self.__dict__.keys():
949: return getattr(self,'index.html')()
1.56 dwinter 950:
1.52 dwinter 951: elif 'overview' in self.__dict__.keys():
1.56 dwinter 952: return self.showOverview()
1.52 dwinter 953: elif hasattr(self,'group_index_template'):
1.56 dwinter 954: return self.group_index_template()
955: elif hasattr(self,'collection_index_template'):
956: return self.collection_index_template()
1.54 dwinter 957: elif hasattr(self,'main_index_template'):
1.55 dwinter 958: return self.main_index_template()
1.52 dwinter 959:
1.54 dwinter 960: pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_main_index_template_standard.zpt').__of__(self)
1.52 dwinter 961: pt.content_type="text/html"
962: return pt()
963:
1.38 dwinter 964: def ECHO_group_config(self):
965: """Main configuration"""
966:
967: if not hasattr(self,'weight'):
968: self.weight=""
969:
970: if not hasattr(self,'sortfield'):
971: self.sortfield="weight"
972:
973: if not hasattr(self,'coords'):
974: self.coords=[]
975:
976: pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_group.zpt').__of__(self)
977: return pt()
978:
1.43 dwinter 979: def changeECHO_group(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",logo=""):
1.38 dwinter 980: """Änderung der Properties"""
981:
982: self.secondaryLink=secondaryLink
983: self.secondaryLinkTitle=secondaryLinkTitle
984: self.imageTag=imageTag
985: self.bgcolour=bgcolour
1.43 dwinter 986: self.logo=logo
987:
1.38 dwinter 988: if coords:
989: coordsnew=[ string.split(x,",") for x in coords]
990: self.coords=coordsnew[0:]
991: else:
992: coordsnew=None
993: self.coords=None
994:
995: setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordsnew)
996:
997:
998:
999: self.sortfield=sortfield
1000:
1001: if RESPONSE is not None:
1002: RESPONSE.redirect('manage_main')
1.40 dwinter 1003:
1004: def getLogo(self):
1005: """logo ausgeben"""
1.43 dwinter 1006: try:
1007: return self.logo
1008: except:
1009: return "ECHO_groups"
1.40 dwinter 1010:
1.38 dwinter 1011: def content_html(self):
1012: """template fuer content"""
1013: return content_html(self,'group')
1014:
1015:
1016:
1017: def manage_addECHO_groupForm(self):
1018: """Add group form"""
1019: pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_groupForm.zpt').__of__(self)
1020: return pt()
1021:
1022:
1.43 dwinter 1023: def manage_addECHO_group(self,id,title,label,description,contentType,responsible,weight,sortfield,coords="",secondaryLinkTitle="",secondaryLink="",credits=None,RESPONSE=None,imageTag="",bgcolour="",logo=""):
1.38 dwinter 1024: """add a echo group"""
1025:
1026:
1027: newObj=ECHO_group(id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,secondaryLinkTitle=secondaryLinkTitle,secondaryLink=secondaryLink,imageTag=imageTag,bgcolour="")
1028:
1.43 dwinter 1029: setattr(newObj,'logo',logo)
1.38 dwinter 1030: self._setObject(id,newObj)
1.43 dwinter 1031:
1.38 dwinter 1032: if RESPONSE is not None:
1033: RESPONSE.redirect('manage_main')
1034:
1035:
1036:
1.1 casties 1037: class ECHO_root(Folder,Persistent,Implicit):
1038: """ECHO Root Folder"""
1039: meta_type="ECHO_root"
1.23 dwinter 1040:
1.49 dwinter 1041:
1042: def getImageTag(self):
1043: """needed by main_template"""
1044: return ""
1045: secondaryLink="" #needed by main_template
1046: secondaryLinkTitle="" #needed by main_template
1047:
1.35 dwinter 1048: def getBgcolour(self):
1049: """hack"""
1050: return "#dddddd"
1.28 dwinter 1051:
1052: def contentTypeSelector_HTML(self,selected=None):
1053: """give type selector"""
1054: if not selected:
1055: retStr="<option selected>\n"
1056: else:
1057: retStr="<option>\n"
1058:
1.62 ! dwinter 1059: try: # erste version contentTypes exists
1.52 dwinter 1060: for contentType in self.ZopeFind(self.contentTypes,obj_metatypes=["ECHO_contentType"]):
1.28 dwinter 1061: if selected and (contentType[0]==selected):
1062: retStr+="""<option selected value="%s">%s\n"""%(contentType[0],contentType[0])
1063: else:
1064: retStr+="""<option value="%s">%s\n"""%(contentType[0],contentType[0])
1065: except:
1.62 ! dwinter 1066: try:
! 1067: for contentType in self.ZopeFind(self.standardMD,obj_metatypes=["OSAS_MetadataMapping"]):
! 1068: if selected and (contentType[0]==selected):
! 1069: retStr+="""<option selected value="%s">%s\n"""%(contentType[0],contentType[0])
! 1070: else:
! 1071: retStr+="""<option value="%s">%s\n"""%(contentType[0],contentType[0])
! 1072: except:
! 1073: """nothing"""
! 1074:
1.28 dwinter 1075: return retStr
1076:
1.27 dwinter 1077: def patchContentType(self,obj=None):
1078: """austauschen content_type with contentType (patch bei umstieg von alter Version)"""
1079:
1080:
1081: if not obj:
1082: obj = self
1083:
1.30 dwinter 1084: entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_resource','ECHO_collection','ECHO_externalLink','ECHO_pageTemplate'])
1.27 dwinter 1085:
1086: for entry in entries:
1.31 dwinter 1087: setattr(entry[1],'contentType',entry[1].content_type)
1088: #entry[1].contentType == entry[1].content_type
1.27 dwinter 1089:
1090: if entry[1].meta_type == 'ECHO_collection':
1091: entry[1].patchContentType(entry[1])
1.19 dwinter 1092:
1.27 dwinter 1093:
1.49 dwinter 1094: return "changed all contenttypes in: "+self.title
1.27 dwinter 1095:
1.19 dwinter 1096: def ECHO_newViewerLink(self,obj=None):
1097: """change links (:86 faellt weg)"""
1098:
1099: if not obj:
1100: obj = self
1101:
1102: entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_resource','ECHO_collection'])
1103:
1104: for entry in entries:
1105:
1106: if entry[1].meta_type == 'ECHO_resource':
1107:
1108: entry[1].link=re.sub('\:86','',entry[1].link)
1109:
1110: else:
1111:
1112: entry[1].ECHO_newViewerLink(entry[1])
1113:
1114: return "Rerenderd all links to resources in: "+self.title
1.1 casties 1115:
1116: def __init__(self,id,title):
1117: """init"""
1118: self.id = id
1119: self.title=title
1.13 dwinter 1120:
1.14 dwinter 1121: def deleteSpace(self,str):
1122: """delete space at the end of a line"""
1123: if str[len(str)-1]==" ":
1124: return str[0:len(str)-1]
1125: else:
1126: return str
1127:
1128:
1129:
1130: # zusaetliche methoden fuer das vlp muessen in ein eigenes produkt
1131:
1132: def formatAscii(self,str,url=None):
1133: """ersetze ascii umbrueche durch <br>"""
1134: #url=None
1135: if url:
1136:
1137: retStr=""
1138: words=str.split("\n")
1139:
1140: for word in words:
1141: strUrl=url%word
1142: print "str",strUrl
1143: retStr+="""<a href="%s">%s</a><br/>"""%(strUrl,word)
1144: str=retStr
1145: if str:
1146: return re.sub(r"[\n]","<br/>",str)
1147: else:
1148: return ""
1149:
1150: def link2html(self,str):
1151: """link2html fuer VLP muss hier noch raus"""
1152: if str:
1153: print str
1154: str=re.sub("\&","&",str)
1155: dom=xml.dom.minidom.parseString("<?xml version='1.0' ?><txt>"+str+"</txt>")
1156: links=dom.getElementsByTagName("link")
1157:
1158: print "link",links
1159: for link in links:
1160: link.tagName="a"
1161: ref=link.getAttribute("ref")
1162: if self.checkRef(ref):
1163: link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)
1164:
1165: return dom.toxml('utf-8')
1166: return ""
1167:
1168:
1169: def checkRef(self,ref):
1170: dbs={'vl_literature':'AND CD LIKE \'%lise%\'','vl_technology':'','vl_people':''}
1171: res=None
1172: for db in dbs.keys():
1173: #print ref,"select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db])
1174:
1175: res=res or self.search(var=str("select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db])))
1176: return res
1177:
1178: #Ende Methode fuer vlp
1179:
1.13 dwinter 1180: def PgQuoteString(self,string):
1181: """Quote string"""
1.14 dwinter 1182: #print "PG",string
1.13 dwinter 1183: return libpq.PgQuoteString(string)
1.1 casties 1184:
1185: def getPartners(self):
1186: """Get list of Partners. Presently only from a subfolder partners"""
1.26 dwinter 1187:
1188: return [ item[1] for item in self.partners.ZopeFind(self.partners,obj_metatypes=['ECHO_partner'])]
1.13 dwinter 1189:
1.1 casties 1190:
1.26 dwinter 1191:
1.1 casties 1192:
1.24 dwinter 1193:
1.26 dwinter 1194: def getPartnersXML(self):
1195: """partner liste als xml"""
1196: partners=self.getPartners()
1.60 dwinter 1197: ret="""<?xml version="1.0" encoding="utf-8" ?>
1198: <partners>"""
1199:
1200: for partner in partners:
1201: ret+="""<partner id="%s" title="%s"/>\n"""%(partner.getId(),unicode(partner.title,'utf-8','replace'))
1.26 dwinter 1202:
1203: return ret+"\n</partners>"
1.24 dwinter 1204:
1.1 casties 1205: def getCollectionTree(self):
1206: """get the collection tree (list of triples (parent,child, depth)"""
1207:
1208: def getCollection(object,depth=0):
1209: depth+=1
1210: collections=[]
1211: for entry in object.__dict__.keys():
1212: element=getattr(object,entry)
1213: try:
1214: if element.meta_type=="ECHO_collection":
1215: collections.append((object,element,depth))
1216: collections+=getCollection(element,depth)
1217: except:
1218: """nothing"""
1219: return collections
1220:
1221:
1222: return getCollection(self)
1223:
1224: def getCollectionTreeIds(self):
1225: """Show the IDs of the Tree"""
1226: ret=[]
1227: for collection in self.getCollectionTree():
1228: ret.append((collection[0].getId(),collection[1].getId(),collection[2]))
1229: return ret
1230:
1231:
1232:
1.13 dwinter 1233: def manage_addECHO_root(self,id,title,RESPONSE=None):
1.1 casties 1234: """Add an ECHO_root"""
1235: self._setObject(id,ECHO_root(id,title))
1236:
1237: if RESPONSE is not None:
1238: RESPONSE.redirect('manage_main')
1239:
1.13 dwinter 1240: def manage_addECHO_rootForm(self):
1.1 casties 1241: """Nothing yet"""
1.13 dwinter 1242: pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_root.zpt').__of__(self)
1.1 casties 1243: return pt()
1244:
1245: class ECHO_partner(Image,Persistent):
1246: """ECHO Partner"""
1247:
1248: meta_type="ECHO_partner"
1249:
1.29 dwinter 1250: def __init__(self, id, title,url, file, content_type='', precondition=''):
1.1 casties 1251: self.__name__=id
1252: self.title=title
1253: self.url=url
1254: self.precondition=precondition
1255:
1256: data, size = self._read_data(file)
1.29 dwinter 1257: content_type=self._get_content_type(file, data, id, content_type)
1258: self.update_data(data, content_type, size)
1.1 casties 1259:
1260: manage_options = Image.manage_options+(
1261: {'label':'Partner Information','action':'ECHO_partner_config'},
1262: )
1263:
1264: def changeECHO_partner(self,url,RESPONSE=None):
1265: """Change main information"""
1266: self.url=url
1267: if RESPONSE is not None:
1268: RESPONSE.redirect('manage_main')
1269:
1270:
1271:
1272: def ECHO_partner_config(self):
1273: """Main configuration"""
1274: if not hasattr(self,'url'):
1275: self.url=""
1.13 dwinter 1276: pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_partner.zpt').__of__(self)
1.1 casties 1277: return pt()
1278:
1279:
1.13 dwinter 1280: manage_addECHO_partnerForm=DTMLFile('dtml/ECHO_partnerAdd',globals(),
1.1 casties 1281: Kind='ECHO_partner',kind='ECHO_partner')
1282:
1283:
1284:
1.29 dwinter 1285: def manage_addECHO_partner(self, id, file,url, title='', precondition='', content_type='',
1.1 casties 1286: REQUEST=None):
1287: """
1288: Add a new ECHO_partner object.
1289:
1290: Creates a new ECHO_partner object 'id' with the contents of 'file'.
1291: Based on Image.manage_addImage
1292: """
1293:
1294: id=str(id)
1295: title=str(title)
1.29 dwinter 1296: content_type=str(content_type)
1.1 casties 1297: precondition=str(precondition)
1298:
1299: id, title = OFS.Image.cookId(id, title, file)
1300:
1301: self=self.this()
1302:
1303: # First, we create the image without data:
1.29 dwinter 1304: self._setObject(id, ECHO_partner(id,title,url,'',content_type, precondition))
1.1 casties 1305:
1306: # Now we "upload" the data. By doing this in two steps, we
1307: # can use a database trick to make the upload more efficient.
1308: if file:
1309: self._getOb(id).manage_upload(file)
1.29 dwinter 1310: if content_type:
1311: self._getOb(id).content_type=content_type
1.1 casties 1312:
1313: if REQUEST is not None:
1314: try: url=self.DestinationURL()
1315: except: url=REQUEST['URL1']
1316: REQUEST.RESPONSE.redirect('%s/manage_main' % url)
1317: return id
1318:
1319:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>