--- MPIWGWeb/MPIWGStaff.py 2008/08/28 18:20:09 1.10.2.53 +++ MPIWGWeb/MPIWGStaff.py 2009/09/30 17:13:15 1.10.2.72 @@ -7,8 +7,10 @@ from OFS.Folder import Folder from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.PageTemplate import PageTemplate +from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate from Products.ZCatalog.CatalogPathAwareness import CatalogAware from Products.versionedFile.extVersionedFile import extVersionedFileFolder +from AccessControl import getSecurityManager import os import logging @@ -21,6 +23,10 @@ from AccessControl import ClassSecurityI import time import logging import email +import re +from OFS.Cache import Cacheable + +from MPIWGHelper import * #ersetzt logging def logger(txt,method,txt2): """logging""" @@ -29,17 +35,9 @@ def logger(txt,method,txt2): departmentList="Renn\nRheinberger\nDaston\nKlein\nSibum\nIT\nInstitut\nBibliothek" -def getTemplate(self, tpName): - """get a template file either form the instance or from the product""" - ext=self.ZopeFind(self.aq_parent,obj_ids=[tpName]) - if ext: - pt = getattr(self,ext[0][1].getId()) - else: - pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/'+tpName)).__of__(self) - assert(pt) - return pt -def createNewDBEntry(self,publish_the_data,key,name,vorname,title,position,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by="",e_mail2="",txt="",txt_p="no",stay_at_mpiwg="",group="",web_object_created="no",current_work=""): + +def createNewDBEntry(self,publish_the_data,key,name,vorname,titles_new,position,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by="",e_mail2="",txt="",txt_p="no",stay_at_mpiwg="",group="",web_object_created="no",current_work=""): """lege person in der datenbank an""" if date_to=="": # wenn date_to leer @@ -53,8 +51,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,titles_new,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,titles_new,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: @@ -69,13 +67,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" @@ -97,18 +95,33 @@ class MPIWGStaff(CatalogAware,ZSQLExtend logging.error(email.Utils.formatdate()+' GMT') RESPONSE.redirect(url+addStr%timeStamp) + def getKeyUTF8(self): + """get db_key utf8""" + return utf8ify(self.getKey()) + + def setKey(self,key): + """set key""" + self.key=key + 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)""" + try: + root = self.getMPIWGRoot() + return root.getConnectionObj() + except: + return self.en.getConnectionObj() + def isPublished(self): """gib publications status aus der datenbank aus""" key=self.getKey() @@ -122,7 +135,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend return False - + def updateDBEntry(self,publish_the_data,date_from,date_to,DBid=None,stay_at_mpiwg="",position="",abteilung=""): """zpddatedb""" if not DBid: @@ -151,9 +164,9 @@ class MPIWGStaff(CatalogAware,ZSQLExtend """change PublicationSelectionMode""" self.publicationSelectionMode=publicationSelectionMode - + self.ZCacheable_invalidate() if RESPONSE: - self.redirect(RESPONSE,"%s""" if founds.profile and founds.profile != "": @@ -515,12 +596,12 @@ class MPIWGStaff(CatalogAware,ZSQLExtend 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() - + self.ZCacheable_invalidate() if preview: @@ -558,18 +639,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') @@ -594,7 +675,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend if (not oid): pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editAwards.zpt')).__of__(self) return pt() - + self.ZCacheable_invalidate() query="UPDATE personal_www SET awards =%s WHERE oid='%s'" self.ZSQLQuery(query%(self.ZSQLQuote(awards),oid)) @@ -625,14 +706,14 @@ class MPIWGStaff(CatalogAware,ZSQLExtend security.declareProtected('View management screens','editMainData') def editMainData(self,REQUEST=None,RESPONSE=None): """edit main data""" - + self.ZCacheable_invalidate() argv=REQUEST.form if not argv.has_key('last_name'): pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMainData.zpt')).__of__(self) return pt() else: - self.ZSQLChange(argv,_table="personal_www",_identify="key=%s"%self.getKey(),USE_FORM="yes") + self.ZSQLChange(argv,_table="personal_www",_identify="lower(key)=%s"%utf8ify(self.getKey().lower()),USE_FORM="yes") if RESPONSE: self.redirect(RESPONSE,"editMainData") @@ -690,10 +771,11 @@ class MPIWGStaff(CatalogAware,ZSQLExtend def changeSortingMode(self,sortingMode,RESPONSE=None,REQUEST=None): """change sorting mode""" + self.ZCacheable_invalidate() self.sortingMode=sortingMode if RESPONSE and REQUEST: - REQUEST.self.redirect(RESPONSE,REQUEST['HTTP_REFERER']) + self.redirect(RESPONSE,REQUEST['HTTP_REFERER']) return True @@ -715,11 +797,12 @@ class MPIWGStaff(CatalogAware,ZSQLExtend def changePublications(self,RESPONSE=None): """change the publication list""" self.changeResearch(noredirect=True) - + self.ZCacheable_invalidate() #self.updatePublicationDB(personId=self.getDBId()) 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""" @@ -834,12 +917,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):