--- MPIWGWeb/MPIWGStaff.py 2008/08/22 06:09:28 1.10.2.45 +++ MPIWGWeb/MPIWGStaff.py 2008/09/07 17:13:32 1.10.2.58 @@ -13,13 +13,17 @@ from Products.versionedFile.extVersioned 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 +import email +import re +from MPIWGHelper import * #ersetzt logging def logger(txt,method,txt2): """logging""" @@ -52,8 +56,8 @@ def createNewDBEntry(self,publish_the_da return False,"ERROR:key%s already exists"%key #eintragen - columnlist="""publish_the_data,key,last_name,first_name,title,status,e_mail,e_mail_p,date_from,date_to,department,home_inst,funded_by,e_mail2,date_stay_at_mpiwg,web_object_created,"group" """ - insertTuple=(publish_the_data,key,name,vorname,title,position,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by,e_mail2,stay_at_mpiwg,web_object_created,group) + columnlist="""publish_the_data,key,last_name,first_name,title,status,e_mail,e_mail_p,date_from,date_to,department,home_inst,funded_by,e_mail2,date_stay_at_mpiwg,web_object_created,"group",current_work,current_work_p """ + insertTuple=(publish_the_data,key,name,vorname,title,position,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by,e_mail2,stay_at_mpiwg,web_object_created,group,current_work,"yes") insert=[] for element in insertTuple: @@ -68,10 +72,10 @@ def createNewDBEntry(self,publish_the_da self.ZSQLQuery(queryStr) logging.info("QQQQ %s:"%queryStr) #currentwork - if not (current_work==""): - queryStr="INSERT INTO current_work (key_main,current,publish) VALUES ('%s',%s,'%s')"%(key,self.ZSQLQuote(current_work),"yes") + #if not (current_work==""): + # queryStr="INSERT INTO current_work (key_main,current,publish) VALUES ('%s',%s,'%s')"%(key,self.ZSQLQuote(current_work),"yes") - self.ZSQLQuery(queryStr) + # self.ZSQLQuery(queryStr) return True,msg class MPIWGStaff(CatalogAware,ZSQLExtendFolder): @@ -82,12 +86,33 @@ 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.setHeader('Last-Modified',email.Utils.formatdate().split("-")[0]+'GMT') + logging.error(email.Utils.formatdate()+' GMT') + RESPONSE.redirect(url+addStr%timeStamp) + + def getKeyUTF8(self): + """get db_key utf8""" + return utf8ify(self.getKey()) + def getKey(self): """get database key""" if hasattr(self,'key'): - return self.key.lower() + #logging.error("SAVED KEY:%s"%self.key) + return unicodify(self.key.lower()) + #return self.key.lower() #fuer alt faelle ohne key + #logging.error("NEW KEY:%s"%(self.firstName+'_'+self.lastName).lower().replace(' ','')) return (self.firstName+'_'+self.lastName).lower().replace(' ','') def getConnectionObj(self):#ueberschreibe connection id methode @@ -138,7 +163,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend self.publicationSelectionMode=publicationSelectionMode if RESPONSE: - RESPONSE.redirect("editPublications") + self.redirect(RESPONSE,"%s""" if founds.profile and founds.profile != "": @@ -492,7 +571,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend if preview: #TODO: not supported yet if RESPONSE: - RESPONSE.redirect("editProfile") + self.redirect(RESPONSE,"editProfile") #return self.preview(newcontent) @@ -500,7 +579,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend self.ZSQLQuery(query%(self.ZSQLQuote(newcontent),oid)) logging.error("PROFILE:"+query%(self.ZSQLQuote(newcontent),oid)) if RESPONSE: - RESPONSE.redirect("editProfile") + self.redirect(RESPONSE,"editProfile") @@ -510,18 +589,18 @@ class MPIWGStaff(CatalogAware,ZSQLExtend ret="" founds=self.ZSQLInlineSearch(_table='research_interest',key_main=person.key) if founds: - ret="Research interests:

" + ret="

Research interests:


" for found in self.sortPriority(founds): ret+=found.interest+"
" - if not person.current_work=="": - ret="Current work:

" + if (person.current_work) and (not person.current_work==""): + ret+="

Current work:


" ret+=person.current_work+"
" - - ret+="
" - ret+=self.formatAscii(person.cv) + if (person.cv) and (not person.cv==""): + ret+="

Curriculum Vitae:


" + ret+=self.formatAscii(person.cv) return ret security.declareProtected('View management screens','editDownloads') @@ -531,6 +610,14 @@ class MPIWGStaff(CatalogAware,ZSQLExtend pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editDownloads.zpt')).__of__(self) return pt() + security.declareProtected('View management screens','editAdditionalLinks.zpt') + def editAdditionalLinks(self): + """editiere die Downloads von der Webseite""" + + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editAdditionalLinks.zpt')).__of__(self) + return pt() + + security.declareProtected('View management screens','editAwards') def editAwards(self,awards=None,oid=None,RESPONSE=None): """edit a awards""" @@ -544,7 +631,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend self.ZSQLQuery(query%(self.ZSQLQuote(awards),oid)) if RESPONSE: - RESPONSE.redirect("editAwards") + self.redirect(RESPONSE,"editAwards") security.declareProtected('View management screens','editTalks') def editTalks(self): @@ -578,7 +665,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend else: self.ZSQLChange(argv,_table="personal_www",_identify="key=%s"%self.getKey(),USE_FORM="yes") if RESPONSE: - RESPONSE.redirect("editMainData") + self.redirect(RESPONSE,"editMainData") security.declareProtected('View management screens','newBibliogrpaphy') def newBibliography(self,_docType=None, _addEntry=None,RESPONSE=None,**argv): @@ -608,7 +695,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend if RESPONSE: - RESPONSE.redirect("editPublications") + self.redirect(RESPONSE,"editPublications") return True @@ -637,7 +724,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend self.sortingMode=sortingMode if RESPONSE and REQUEST: - REQUEST.RESPONSE.redirect(REQUEST['HTTP_REFERER']) + self.redirect(RESPONSE,REQUEST['HTTP_REFERER']) return True @@ -656,16 +743,17 @@ class MPIWGStaff(CatalogAware,ZSQLExtend return 0 security.declareProtected('View management screens','changePublications') - def changePublications(self): + def changePublications(self,RESPONSE=None): """change the publication list""" self.changeResearch(noredirect=True) #self.updatePublicationDB(personId=self.getDBId()) - self.REQUEST.RESPONSE.redirect(self.REQUEST['HTTP_REFERER']) + self.redirect(RESPONSE,self.REQUEST['HTTP_REFERER']) + security.declareProtected('View management screens','addPublications') - def addPublications(self,submit=None,REQUEST=None,noredirect=None): + def addPublications(self,submit=None,REQUEST=None,noredirect=None,RESPONSE=None): """add publications""" #setzte flag ob aufruf aus suchformular @@ -697,7 +785,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend if not noredirect: - self.REQUEST.RESPONSE.redirect("./editPublications") + self.redirect(RESPONSE,"./editPublications") return True @@ -778,12 +866,12 @@ class MPIWGStaff(CatalogAware,ZSQLExtend tmp.sort(sort) return tmp - def deleteField(self,table,oid): + def deleteField(self,table,oid,RESPONSE=None): """delete entry""" query="DELETE FROM %s WHERE oid = '%s'"%(table,oid) self.ZSQLQuery(query) - self.REQUEST.RESPONSE.redirect(self.REQUEST['HTTP_REFERER']) + self.redirect(RESPONSE,self.REQUEST['HTTP_REFERER']) def manage_addMPIWGStaffForm(self): @@ -799,6 +887,6 @@ def manage_addMPIWGStaff(self,id,lastNam if RESPONSE is not None: - RESPONSE.redirect('manage_main') + self.redirect(RESPONSE,'manage_main')