--- MPIWGWeb/MPIWGProjects.py 2010/09/13 11:23:58 1.47.2.117 +++ MPIWGWeb/MPIWGProjects.py 2010/09/14 06:22:50 1.47.2.118 @@ -143,6 +143,64 @@ class MPIWGProject_publication(Folder): if RESPONSE: self.redirect(RESPONSE,"../managePublications") +class MPIWGProject_relatedProject(Folder): + """publications object fuer project""" + + meta_type="MPIWGProject_relatedProject" + def redirect(self,RESPONSE,url): + """mache ein redirect mit einem angehaengten time stamp um ein reload zu erzwingen""" + + timeStamp=time.time() + + if url.find("?")>-1: #giebt es schon parameter + addStr="&time=%s" + else: + addStr="?time=%s" + + RESPONSE.setHeader('Last-Modified',email.Utils.formatdate().split("-")[0]+'GMT') + logging.debug(email.Utils.formatdate()+' GMT') + RESPONSE.redirect(url+addStr%timeStamp) + + + def editRelatedProject(self,link=None,RESPONSE=None): + """edit a publication""" + + if (not link): + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_relatedProjectForm.zpt')).__of__(self) + return pt() + + + + + + # hole die id des projektes + splitted=link.split("/") + + #teste ob es das project gibt + if len(splitted)<1: + self.redirect(RESPONSE,'errorRelatedProjects?link='+link) + + objid=splitted[-1] + object = getattr(self.projects,objid,None) + + if object==None: + self.redirect(RESPONSE,'errorRelatedProjects?link='+link) + + + + + + self.orginallink=link[0:] + self.objid=objid[0:] + + self.projectWEB_title=object.getContent('WEB_title')[0:] + + self.enabled=True; + + + if RESPONSE: + self.redirect(RESPONSE,"../manageRelatedProjects") + class MPIWGProject_image(Image): """Images for Projects""" @@ -383,6 +441,36 @@ class MPIWGProject(CatalogAware,Folder,C pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGProject_managePublicationsForm.zpt')).__of__(self) return pt() + + def manageRelatedProjects(self,pubName=None,op=None): + """managage relatedProjectd""" + + + if pubName and op: + if op=='up': + relatedProjects=self.getRelatedProjects() + for project in relatedProjects: + if project[0]==pubName: + nr=relatedProjects.index(project) + if not nr==0: + relatedProjects[nr-1][1].place+=1 + relatedProjects[nr][1].place-=1 + pass + elif op=='down': + relatedProjects=self.getRelatedProjects() + for project in relatedProjects: + if project[0]==pubName: + nr=relatedProjects.index(project) + if not (nr==len(relatedProjects)-1): + relatedProjects[nr+1][1].place-=1 + relatedProjects[nr][1].place+=1 + pass + + + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGProject_manageRelatedProjectsForm.zpt')).__of__(self) + return pt() + + def hasExtendedPublicationList(self): """test if extended publication list exists""" if not hasattr(self,"publicationList"): @@ -418,6 +506,16 @@ class MPIWGProject(CatalogAware,Folder,C publications.sort(sort_images) return publications + def getRelatedProjects(self): + """get all Publications""" + def sort_images(x,y): + return cmp(getattr(x[1],'place',0),getattr(y[1],'place',0)) + + publications=self.ZopeFind(self,obj_metatypes=['MPIWGProject_relatedProject']) + + publications.sort(sort_images) + return publications + def addPublication(self,text,RESPONSE=None): """add an MPIWG_Publication""" @@ -436,7 +534,49 @@ class MPIWGProject(CatalogAware,Folder,C self.redirect(RESPONSE,'managePublications') + def errorRelatedProjects(self,link): + """error creating a related project""" + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_project_error_relatedProject.zpt')).__of__(self) + return pt(link=link) + + def addRelatedProject(self,link,RESPONSE=None): + """add an MPIWG_Publication""" + + name="RelatedProject"+str(self.getLastRelatedProjectNumber()+1) + + # hole die id des projektes + splitted=link.split("/") + + #teste ob es das project gibt + if len(splitted)<1: + self.redirect(RESPONSE,'errorRelatedProjects?link='+link) + + objid=splitted[-1] + object = getattr(self.projects,objid,None) + + if object==None: + self.redirect(RESPONSE,'errorRelatedProjects?link='+link) + return + + newPublication=MPIWGProject_relatedProject(name) + + self._setObject(name,newPublication) + obj=getattr(self,name) + obj.orginallink=link[0:] + obj.objid=objid[0:] + logging.debug("add relobj:objid"+repr(obj.objid)) + obj.projectWEB_title=object.getContent('WEB_title')[0:] + logging.debug("add relobj:webtitle"+repr(obj.projectWEB_title)) + obj.enabled=True; + obj.place=self.getLastRelatedProjectNumber()+1 + obj.id=name + + if RESPONSE is not None: + + self.redirect(RESPONSE,'manageRelatedProjects') + + def getLastPublicationNumber(self): publications=self.getPublications() @@ -445,13 +585,28 @@ class MPIWGProject(CatalogAware,Folder,C else: return getattr(publications[-1][1],'place',0) + def getLastRelatedProjectNumber(self): + publications=self.getRelatedProjects() + + if not publications: + return 0 + else: + return getattr(publications[-1][1],'place',0) + def deletePublication(self,id,RESPONSE=None): """delete Publication id""" self.manage_delObjects([id]) if RESPONSE: self.redirect(RESPONSE,'managePublications') - + + def deleteRelatedProject(self,id,RESPONSE=None): + """delete Publication id""" + self.manage_delObjects([id]) + if RESPONSE: + + self.redirect(RESPONSE,'manageRelatedProjects') + def getImages(self): """get all Images"""