--- MPIWGWeb/MPIWGProjects.py 2008/08/25 07:55:02 1.47.2.89 +++ MPIWGWeb/MPIWGProjects.py 2008/08/29 07:31:05 1.47.2.95 @@ -12,13 +12,13 @@ from OFS.Image import Image from Globals import package_home import urllib import re -import os +import os from types import * import logging import xmlhelper # Methoden zur Verwaltung der projekt xml from OFS.SimpleItem import SimpleItem from OFS.Folder import Folder - +from OFS.Image import Image from AccessControl import ClassSecurityInfo from bibliography import * import time @@ -39,7 +39,7 @@ import MPIWGRoot import MPIWGLink import MPIWGTemplate -# die folgenden Klassen sind jetzt in einzelne Files ausgelagert aus KompatibilitŠtsgrŸnden, bleiben die Klassen hier noch drin. +# die folgenden Klassen sind jetzt in einzelne Files ausgelagert aus Kompatibilitaetsgruenden, bleiben die Klassen hier noch drin. # Sonst funktionieren die alten Webseiten nicht mehr. class MPIWGRoot(MPIWGRoot.MPIWGRoot): @@ -51,21 +51,37 @@ class MPIWGLink(MPIWGLink.MPIWGLink): class MPIWGTemplate(MPIWGTemplate.MPIWGTemplate): """depricated""" -class MPIWGProject_publication(SimpleItem): +class MPIWGProject_publication(Folder): """publications object fuer project""" meta_type="MPIWGProject_publication" - def editPublication(self,text=None,RESPONSE=None): + def editPublication(self,text=None,image1=None,image2=None,description=None,RESPONSE=None): """edit a publication""" - if (not text): + if (not text) and (not description): pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_publicationForm.zpt')).__of__(self) return pt() self.text=text[0:] - + self.description=description + + if image1: + if hasattr(self,'publicationImage1'): + self.publicationImage1.manage_upload(image1) + else: + nO = Image('publicationImage1','',image1) + self._setObject('publicationImage1',nO) + + if image2: + if hasattr(self,'publicationImage2'): + self.publicationImage2.manage_upload(image2) + else: + nO = Image('publicationImage2','',image2) + self._setObject('publicationImage2',nO) + + if RESPONSE: RESPONSE.redirect("../managePublications") @@ -600,6 +616,12 @@ class MPIWGProject(CatalogAware,Folder): if date: return self.reTransformDate(date); else: + # test ob parent abgeschlossen ist + + ct=self.getContexts(parents=self.getContent('xdata_05'),depth=1) + if (len(ct)>0): #is there are parent + + return ct[0][0].getCompletedAt() return ''; def getStartedAt(self): @@ -923,9 +945,9 @@ class MPIWGProject(CatalogAware,Folder): if (text5=="
") or (text5=="
"): text5="" - logging.debug("getcontent: field=%s filter=%s -> %s"%(field,filter,repr(text5))) - #return unicodify(text5) - return utf8ify(text5) # return as utf-8 byte string + #logging.debug("getcontent: field=%s filter=%s -> %s"%(field,filter,repr(text5))) + return unicodify(text5) + #return utf8ify(text5) # return as utf-8 byte string def showImagesOfPage(self,imageUrl=None): @@ -987,6 +1009,53 @@ class MPIWGProject(CatalogAware,Folder): else: return style + def getLabel(self): + """returns label (or title) of this project""" + l = self.getContent('xdata_07') + if l: + return l + l = self.getContent('WEB_title') + if l: + return l + return self.title + + def getBreadcrumbs(self): + """return list of breadcrumbs from here to the root""" + crumbs = [] + # skip direct parent Folder /projects/ + parent = self.aq_parent.aq_parent + # get parents breadcrumbs + if hasattr(parent, 'getBreadcrumbs'): + crumbs = parent.getBreadcrumbs() + + # try to get acquisition URL from parent + if hasattr(parent, 'absolute_url'): + baseUrl = "%s/%s/"%(parent.absolute_url(), 'projects') + else: + baseUrl = "/en/research/projects/" + + # add in the internal project hierarchy + ct=self.getContexts(parents=self.getContent('xdata_05')) + # start with grandparents + ct.reverse() + for c in ct: + label = shortenString(c[0].getLabel(), 13) + crumbs.append((label, baseUrl+c[0].getId(), c[0])) + + # add this project + crumbs.append((self.getLabel(), baseUrl+self.getId(), self)) + + return crumbs + + def getRootProject(self): + """returns the current root (=top level) project""" + ct=self.getContexts(parents=self.getContent('xdata_05')) + if len(ct) > 0: + return ct[-1][0] + else: + return self + + def preview(self,description): """preview""" tmpPro=getattr(self,"previewTemplate",None) @@ -1078,8 +1147,10 @@ class MPIWGProject(CatalogAware,Folder): logging.info("Search: %s %s %s"%(name,firstname,lastname)) firstname=firstname.capitalize() lastname=lastname.capitalize() - cataloggedNames=self.MembersCatalog(firstName=firstname,lastName=lastname) - + try: + cataloggedNames=self.MembersCatalog(firstName=firstname,lastName=lastname) + except: + cataloggedNames=[] #Teste ob die ensprechenden Namen schon der Liste zu geordnet sind #if not hasattr(self,'responsibleScientistsList'): # self.responsibleScientistsList={}