--- MPIWGWeb/MPIWGStaff.py 2008/08/26 15:01:41 1.10.2.50 +++ MPIWGWeb/MPIWGStaff.py 2008/09/12 15:54:49 1.10.2.61 @@ -13,13 +13,18 @@ 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 OFS.Cache import Cacheable +from MPIWGHelper import * #ersetzt logging def logger(txt,method,txt2): """logging""" @@ -52,8 +57,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,13 +73,13 @@ 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): +class MPIWGStaff(CatalogAware,ZSQLExtendFolder,Cacheable): """Staff""" meta_type="MPIWGStaff" @@ -91,19 +96,30 @@ class MPIWGStaff(CatalogAware,ZSQLExtend 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 - - return getattr(self.de,self.de.connection_id) + def getConnectionObj(self): + """returns connection id (from root)""" + root = self.getMPIWGRoot() + return root.getConnectionObj() def isPublished(self): """gib publications status aus der datenbank aus""" @@ -299,11 +315,32 @@ class MPIWGStaff(CatalogAware,ZSQLExtend """ return self.id - def harvest_page(self): + def harvest_page_old(self,context=None): """geharvestete seite = verschlankte version von members_main""" - pt = getTemplate(self, "harvest_members_main") + #pt = getTemplate(self, "harvest_members_main") + + if not self.isPublished(): + return "" + if not context: + context=self + + + ext=getattr(self,"harvest_members_main",None) + if ext: + return getattr(self,ext.getId())() + + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','harvest_members_main')).__of__(context) + + return pt() + def harvest_page(self): + """harvest""" + if not self.isPublished(): + return "" + return getattr(self.en.staff.members,self.getId()).index_html() + + def index_html(self): """show homepage""" pt = getTemplate(self, "members_main") @@ -370,6 +407,9 @@ class MPIWGStaff(CatalogAware,ZSQLExtend # self.REQUEST.RESPONSE.redirect(redURL) pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMPIWGStaff.zpt')).__of__(self) + + + logging.error("XX:"+email.Utils.formatdate().split("-")[0]+'GMT') return pt() mainEditFile=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMPIWGStaff_main.zpt')) @@ -384,6 +424,33 @@ class MPIWGStaff(CatalogAware,ZSQLExtend return style + def getLabel(self): + """returns a label for this object""" + return self.title + + def getBreadcrumbs(self): + """return list of breadcrumbs from here to the root""" + crumbs = [] + # skip direct parent Folder /members/ + parent = self.aq_parent.aq_parent + # get parents breadcrumbs + logging.debug("getbreadcrumbs-: title=%s self=%s parent=%s"%(self.title, repr(self), repr(parent))) + if hasattr(parent, 'getBreadcrumbs'): + logging.debug("getbreadcrumbs: recurse to %s"%parent) + crumbs = parent.getBreadcrumbs() + + # try to get acquisition URL from parent + if hasattr(parent, 'absolute_url'): + baseUrl = "%s/%s/"%(parent.absolute_url(), 'members') + else: + baseUrl = "/en/staff/members/" + + # add this + crumbs.append((self.getLabel(), baseUrl+self.getId(), self)) + + return crumbs + + def changeCurrentWork(self,current_work,key,publish="yes",RESPONSE=None): """change current work""" @@ -468,6 +535,8 @@ class MPIWGStaff(CatalogAware,ZSQLExtend 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 != "": @@ -522,18 +591,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 (person.current_work) and (not person.current_work==""): - ret="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') @@ -657,7 +726,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend self.sortingMode=sortingMode if RESPONSE and REQUEST: - REQUEST.self.redirect(RESPONSE,REQUEST['HTTP_REFERER']) + self.redirect(RESPONSE,REQUEST['HTTP_REFERER']) return True @@ -684,6 +753,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend self.redirect(RESPONSE,self.REQUEST['HTTP_REFERER']) + security.declareProtected('View management screens','addPublications') def addPublications(self,submit=None,REQUEST=None,noredirect=None,RESPONSE=None): """add publications""" @@ -798,12 +868,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.self.redirect(RESPONSE,self.REQUEST['HTTP_REFERER']) + self.redirect(RESPONSE,self.REQUEST['HTTP_REFERER']) def manage_addMPIWGStaffForm(self):