--- MPIWGWeb/MPIWGStaff.py 2008/08/18 13:27:55 1.10.2.40 +++ MPIWGWeb/MPIWGStaff.py 2008/08/26 16:04:25 1.10.2.51 @@ -8,14 +8,17 @@ from Products.ZSQLExtend.ZSQLExtend impo from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.PageTemplate import PageTemplate from Products.ZCatalog.CatalogPathAwareness import CatalogAware +from Products.versionedFile.extVersionedFile import extVersionedFileFolder + import os import logging import bibliography +import email from Globals import package_home from Products.PythonScripts.standard import sql_quote from types import * from AccessControl import ClassSecurityInfo - +import time import logging #ersetzt logging @@ -80,6 +83,17 @@ class MPIWGStaff(CatalogAware,ZSQLExtend departmentList=departmentList security=ClassSecurityInfo() + 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.redirect(url+addStr%timeStamp) + def getKey(self): """get database key""" if hasattr(self,'key'): @@ -136,9 +150,72 @@ class MPIWGStaff(CatalogAware,ZSQLExtend self.publicationSelectionMode=publicationSelectionMode if RESPONSE: - RESPONSE.redirect("editPublications") + self.redirect(RESPONSE,"editPublications") + + + def downloadCV(self,RESPONSE): + """download cv file""" + ob=self._getOb("downloadableFiles")._getOb("cv.pdf") + + RESPONSE.redirect(ob.absolute_url()+"/download") + + def getLastUpdateCV(self): + """getDate of Last Update""" + try: + ob=self._getOb("downloadableFiles")._getOb("cv.pdf") + return ob.getLastChangeDate() + except: + return "No file yet!" + def getLastUpdatePublications(self): + """getDate of Last Update""" + try: + ob=self._getOb("downloadableFiles")._getOb("publications.pdf") + return ob.getLastChangeDate() + except: + return "No file yet!" + def downloadPublications(self,RESPONSE): + """download publications""" + ob=self._getOb("downloadableFiles")._getOb("publications.pdf") + + RESPONSE.redirect(ob.absolute_url()+"/download") + + def changeDownloads(self,cv_pdf=None,cv_publish=None,publications_pdf=None,publications_publish=None,RESPONSE=None): + """"change the downloadable files""" + + if not hasattr(self,'downloadableFiles'): + + extFolder = extVersionedFileFolder() + extFolder.id = "downloadableFiles" + self._setObject(extFolder.id,extFolder) + + ob = self._getOb("downloadableFiles") + + if cv_publish: + self.cv_publish=cv_publish + + if publications_publish: + self.publications_publish=publications_publish + + if cv_pdf: + if not hasattr(ob,"cv.pdf"): + ob.addFile("",cv_pdf,newName="cv.pdf") + else: + cvFile = getattr(ob,"cv.pdf") + cvFile.addContentObject("","",file=cv_pdf) + + if publications_pdf: + if not hasattr(ob,"publications.pdf"): + ob.addFile("",cv_pdf,newName="publications.pdf") + else: + cvFile = getattr(ob,"publications.pdf") + cvFile.addContentObject("","",file=publications_pdf) + + if RESPONSE: + self.redirect(RESPONSE,self.REQUEST['HTTP_REFERER']) + + def getPublishImage(self): """publish the image??, default no""" return getattr(self,'publishImage','no') @@ -164,7 +241,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend self.publishImage=publishImage if RESPONSE: - RESPONSE.redirect("edit") + self.redirect(RESPONSE,"edit") def getImageFolder(self): """getImageFolder""" @@ -249,7 +326,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend self.specialPublicationsField=specialPublicationsField[0:] if RESPONSE is not None: - RESPONSE.redirect('manage_main') + self.redirect(RESPONSE,'manage_main') def publications_full(self): @@ -282,7 +359,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend self.key = key if RESPONSE is not None: - RESPONSE.redirect('manage_main') + self.redirect(RESPONSE,'manage_main') security.declareProtected('View management screens','edit') def edit(self): @@ -297,6 +374,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend return pt() mainEditFile=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMPIWGStaff_main.zpt')) + addPublicationsBib=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addPublicationsBib.zpt')) def getPathStyle(self, path, selected, style=""): """returns a string with the given style + 'sel' if path == selected.""" @@ -306,8 +384,23 @@ class MPIWGStaff(CatalogAware,ZSQLExtend else: return style + + def changeCurrentWork(self,current_work,key,publish="yes",RESPONSE=None): + """change current work""" + + query="UPDATE personal_www SET current_work =%s WHERE key='%s'" + + self.ZSQLQuery(query%(self.ZSQLQuote(current_work),key)) + + query="UPDATE personal_www SET current_work_p =%s WHERE key='%s'" + + self.ZSQLQuery(query%(self.ZSQLQuote(publish),key)) + + if RESPONSE: + self.redirect(RESPONSE,"edit") + security.declareProtected('View management screens','changeResearch') - def changeResearch(self,noredirect=None): + def changeResearch(self,noredirect=None,RESPONSE=None): """change the research entries""" newEntries={} key_main=self.REQUEST.form['key_main'] @@ -356,7 +449,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend self.ZSQLQuery(query) if not noredirect: - self.REQUEST.RESPONSE.redirect(self.REQUEST['HTTP_REFERER']) + self.redirect(RESPONSE,self.REQUEST['HTTP_REFERER']) security.declareProtected('View management screens','editCV') def editCV(self,cv=None,oid=None,RESPONSE=None): @@ -371,8 +464,96 @@ class MPIWGStaff(CatalogAware,ZSQLExtend self.ZSQLQuery(query%(self.ZSQLQuote(cv),oid)) if RESPONSE: - RESPONSE.redirect("editCV") + self.redirect(RESPONSE,"editCV") + + + def getProfile(self): + """get the profile""" + self.REQUEST.RESPONSE.setHeader('Last-Modified',email.Utils.formatdate().split("-")[0]+'GMT') + + founds=self.ZSQLInlineSearchU(_table='personal_www',key=self.getKey()) + html="""
%s""" + if founds.profile and founds.profile != "": + + return html%founds.profile + else: + + return html%self.generateProfileForPerson(founds) + + def editProfile(self,oid=None,RESPONSE=None, kupu=None, preview=None): + """edit Profile, new entry replaces CD, current work and research interests""" + + if (not oid): + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editProfile.zpt')).__of__(self) + return pt() + + + + + if preview: + pass + #TODO: not supported yet + #kupu=preview + # find content of body tags + + start=kupu.find("") + end=kupu.find("") + + newcontent= kupu[start+6:end] + + + + + if preview: + #TODO: not supported yet + if RESPONSE: + self.redirect(RESPONSE,"editProfile") + + #return self.preview(newcontent) + + query="UPDATE personal_www SET profile=%s WHERE oid='%s'" + self.ZSQLQuery(query%(self.ZSQLQuote(newcontent),oid)) + logging.error("PROFILE:"+query%(self.ZSQLQuote(newcontent),oid)) + if RESPONSE: + self.redirect(RESPONSE,"editProfile") + + + def generateProfileForPerson(self,person): + """erzeugt ein automatisches Profil aus den alten Eintraegen CV, Current work, und research interests""" + + ret="" + founds=self.ZSQLInlineSearch(_table='research_interest',key_main=person.key) + if founds: + ret="Research interests: