Diff for /MPIWGWeb/MPIWGStaff.py between versions 1.10.2.57 and 1.10.2.82

version 1.10.2.57, 2008/09/05 14:08:24 version 1.10.2.82, 2012/02/27 09:36:19
Line 7  from OFS.Folder import Folder Line 7  from OFS.Folder import Folder
 from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder  from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile  from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 from Products.PageTemplates.PageTemplate import PageTemplate  from Products.PageTemplates.PageTemplate import PageTemplate
   from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
 from Products.ZCatalog.CatalogPathAwareness import CatalogAware  from Products.ZCatalog.CatalogPathAwareness import CatalogAware
 from Products.versionedFile.extVersionedFile import extVersionedFileFolder  from Products.versionedFile.extVersionedFile import extVersionedFileFolder
   from AccessControl import getSecurityManager
   
 import os  import os
 import logging  import logging
Line 22  import time Line 24  import time
 import logging  import logging
 import email  import email
 import re  import re
   from OFS.Cache import Cacheable
   import urllib2
   import transaction
 from MPIWGHelper import *  from MPIWGHelper import *
 #ersetzt logging  #ersetzt logging
 def logger(txt,method,txt2):  def logger(txt,method,txt2):
Line 30  def logger(txt,method,txt2): Line 34  def logger(txt,method,txt2):
     logging.info(txt+ txt2)      logging.info(txt+ txt2)
   
 departmentList="Renn\nRheinberger\nDaston\nKlein\nSibum\nIT\nInstitut\nBibliothek"  departmentList="Renn\nRheinberger\nDaston\nKlein\nSibum\nIT\nInstitut\nBibliothek"
   coneService="http://127.0.0.1:8280/MetaDataManagerRestlet/cone/" # kann in MPIWGRoot konfiguriert werden.
   
   
 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"""          """lege person in der datenbank an"""
   
         if date_to=="": # wenn date_to leer          if date_to=="": # wenn date_to leer
Line 56  def createNewDBEntry(self,publish_the_da Line 52  def createNewDBEntry(self,publish_the_da
             return False,"ERROR:key%s already exists"%key              return False,"ERROR:key%s already exists"%key
                   
         #eintragen          #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",current_work,current_work_p """          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,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")          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=[]          insert=[]
         for element in insertTuple:          for element in insertTuple:
Line 78  def createNewDBEntry(self,publish_the_da Line 74  def createNewDBEntry(self,publish_the_da
         #  self.ZSQLQuery(queryStr)          #  self.ZSQLQuery(queryStr)
                   
         return True,msg          return True,msg
 class MPIWGStaff(CatalogAware,ZSQLExtendFolder):  class MPIWGStaff(CatalogAware,ZSQLExtendFolder,Cacheable):
     """Staff"""      """Staff"""
   
     meta_type="MPIWGStaff"      meta_type="MPIWGStaff"
     default_catalog='MembersCatalog'      default_catalog='MembersCatalog'
     departmentList=departmentList      departmentList=departmentList
       _v_cone=None;
     security=ClassSecurityInfo()      security=ClassSecurityInfo()
           
     def redirect(self,RESPONSE,url):      def redirect(self,RESPONSE,url):
Line 102  class MPIWGStaff(CatalogAware,ZSQLExtend Line 99  class MPIWGStaff(CatalogAware,ZSQLExtend
                   
     def getKeyUTF8(self):      def getKeyUTF8(self):
         """get db_key utf8"""          """get db_key utf8"""
           logging.debug("KEY - MPIWGStaff:"+self.getKey())
           logging.debug("KEY - MPIWGStaff:"+utf8ify(self.getKey()))
           
         return utf8ify(self.getKey())          return utf8ify(self.getKey())
           
       def setKey(self,key):
       """set key"""
       self.key=key
   
     def getKey(self):      def getKey(self):
         """get database key"""          """get database key"""
         if hasattr(self,'key'):          if hasattr(self,'key'):
Line 115  class MPIWGStaff(CatalogAware,ZSQLExtend Line 119  class MPIWGStaff(CatalogAware,ZSQLExtend
         #logging.error("NEW KEY:%s"%(self.firstName+'_'+self.lastName).lower().replace(' ',''))          #logging.error("NEW KEY:%s"%(self.firstName+'_'+self.lastName).lower().replace(' ',''))
         return (self.firstName+'_'+self.lastName).lower().replace(' ','')          return (self.firstName+'_'+self.lastName).lower().replace(' ','')
                   
     def getConnectionObj(self):#ueberschreibe connection id methode          def getConnectionObj(self):
                     """returns connection id (from root)"""
             return getattr(self.de,self.de.connection_id)           try:
                root = self.getMPIWGRoot()
                return root.getConnectionObj()
            except:
                return self.en.getConnectionObj()
                   
     def isPublished(self):      def isPublished(self):
         """gib publications status aus der datenbank aus"""          """gib publications status aus der datenbank aus"""
Line 161  class MPIWGStaff(CatalogAware,ZSQLExtend Line 169  class MPIWGStaff(CatalogAware,ZSQLExtend
         """change PublicationSelectionMode"""          """change PublicationSelectionMode"""
                   
         self.publicationSelectionMode=publicationSelectionMode          self.publicationSelectionMode=publicationSelectionMode
                   self.ZCacheable_invalidate()
         if RESPONSE:          if RESPONSE:
             self.redirect(RESPONSE,"<Publications")              self.redirect(RESPONSE,"editPublications")
                           
           
     def downloadCV(self,RESPONSE):      def downloadCV(self,RESPONSE):
Line 194  class MPIWGStaff(CatalogAware,ZSQLExtend Line 202  class MPIWGStaff(CatalogAware,ZSQLExtend
         
     def changeDownloads(self,cv_pdf=None,cv_publish=None,publications_pdf=None,publications_publish=None,RESPONSE=None):      def changeDownloads(self,cv_pdf=None,cv_publish=None,publications_pdf=None,publications_publish=None,RESPONSE=None):
         """"change the downloadable files"""          """"change the downloadable files"""
                   self.ZCacheable_invalidate()
         if not hasattr(self,'downloadableFiles'):          if not hasattr(self,'downloadableFiles'):
                         
             extFolder =  extVersionedFileFolder()              extFolder =  extVersionedFileFolder()
Line 233  class MPIWGStaff(CatalogAware,ZSQLExtend Line 241  class MPIWGStaff(CatalogAware,ZSQLExtend
         """publish the image??, default no"""          """publish the image??, default no"""
         return getattr(self,'publishImage','no')          return getattr(self,'publishImage','no')
           
     def updateImage(self,file,publishImage,rename=None,RESPONSE=None):      def updateImage(self,publishImage,file=None,rename=None,RESPONSE=None):
         """update image"""          """update image"""
   
         if file and not(file.filename==""):          if file and not(file.filename==""):
Line 297  class MPIWGStaff(CatalogAware,ZSQLExtend Line 305  class MPIWGStaff(CatalogAware,ZSQLExtend
     manage_options = Folder.manage_options+(      manage_options = Folder.manage_options+(
         {'label':'Edit','action':'changeMPIWGStaffForm'},          {'label':'Edit','action':'changeMPIWGStaffForm'},
         {'label':'Change Publications Special','action':'changePublications_specialForm'},          {'label':'Change Publications Special','action':'changePublications_specialForm'},
         )          ) + Cacheable.manage_options
           
       __manager_id = "ramCache"
     def __init__(self,id, lastName,firstName,key):      def __init__(self,id, lastName,firstName,key):
         """init"""          """init"""
         self.id=id          self.id=id
Line 313  class MPIWGStaff(CatalogAware,ZSQLExtend Line 322  class MPIWGStaff(CatalogAware,ZSQLExtend
         """          """
         return self.id          return self.id
   
       def getConeUrl(self):
           """gibt coneURL zurueck"""
           
           self.coneService=getattr(self, "coneServiceURL",coneService)
           logging.debug("coneservice:"+self.coneService)
           if self._v_cone==None:
               try:  
                   cone = urllib2.urlopen(self.coneService+self.getPersonID())              
                   self._v_cone=cone.read()
               except:
                   return None
               
           return self._v_cone
              
              
           
           
     def harvest_page_old(self,context=None):      def harvest_page_old(self,context=None):
         """geharvestete seite = verschlankte version von members_main"""          """geharvestete seite = verschlankte version von members_main"""
         #pt = getTemplate(self, "harvest_members_main")          #pt = getTemplate(self, "harvest_members_main")
Line 332  class MPIWGStaff(CatalogAware,ZSQLExtend Line 358  class MPIWGStaff(CatalogAware,ZSQLExtend
   
         return pt()          return pt()
   
     def harvest_page(self):      def harvest_page(self,mode="normal"):
         """harvest"""          """harvest"""
           logging.debug("AAAAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
         if not self.isPublished():          if not self.isPublished():
             return ""              return 
         return getattr(self.en.staff.members,self.getId()).index_html()          st = getattr(self.en.staff.members,self.getId()).index_html(mode)
           
           templates = self.en.getHarvestCache()
           #templates = getattr(self,'getHarvestCache',self.en.getHarvestCache)()
           rendered = st
           templates[self.absolute_url()]=rendered
           transaction.commit()
           return rendered
                   
           
     def index_html(self):      
       def index_html(self,mode="normal"):
         """show homepage"""          """show homepage"""
       
           bound_names={}
           request = self.REQUEST
           if request is not None:
               response = request.response
               if not response.headers.has_key('content-type'):
                   response.setHeader('content-type', 'text/html')
   
           security = getSecurityManager()
           bound_names['user'] = security.getUser()
   
           # Retrieve the value from the cache.
           keyset = None
           if self.ZCacheable_isCachingEnabled():
               
               # Prepare a cache key.
               keyset = {'here': self}
                         
               result = self.ZCacheable_get(keywords=keyset)
              
               if result is not None:
                   # Got a cached value.
                   return result
           
           # look for individual page
           if self.hasObject("index.html"):
               pt = getattr(self, "index.html")
           # else use template
           else:
               if mode=="slim":
                   pt = getTemplate(self, "members_main_slim")
               else:
         pt = getTemplate(self, "members_main")          pt = getTemplate(self, "members_main")
         return pt()          # Execute the template in a new security context.
           security.addContext(self)
   
           try:
               result = pt.pt_render(extra_context=bound_names)
               if keyset is not None:
                   # Store the result in the cache.
                   self.ZCacheable_set(result, keywords=keyset)
                  
               return result
           finally:
               security.removeContext(self)
          
   
   
     def changePublications_specialForm(self):      def changePublications_specialForm(self):
         """Priority publications manual field"""          """Priority publications manual field"""
Line 351  class MPIWGStaff(CatalogAware,ZSQLExtend Line 431  class MPIWGStaff(CatalogAware,ZSQLExtend
                   
     def changePublications_special(self,usePublicationsSpecial=None,specialPublicationsField=None,RESPONSE=None):      def changePublications_special(self,usePublicationsSpecial=None,specialPublicationsField=None,RESPONSE=None):
         """change publications special params"""          """change publications special params"""
           self.ZCacheable_invalidate()
         if usePublicationsSpecial:          if usePublicationsSpecial:
           self.usePublicationsSpecial=True            self.usePublicationsSpecial=True
                     
Line 386  class MPIWGStaff(CatalogAware,ZSQLExtend Line 467  class MPIWGStaff(CatalogAware,ZSQLExtend
     security.declareProtected('View management screens','changeMPIWGStaff')      security.declareProtected('View management screens','changeMPIWGStaff')
     def changeMPIWGStaff(self,lastName,firstName,key=None,RESPONSE=None):      def changeMPIWGStaff(self,lastName,firstName,key=None,RESPONSE=None):
         """change it"""          """change it"""
           self.ZCacheable_invalidate()
         self.title="%s, %s"%(lastName,firstName)          self.title="%s, %s"%(lastName,firstName)
         self.lastName=lastName          self.lastName=lastName
         self.firstName=firstName          self.firstName=firstName
Line 407  class MPIWGStaff(CatalogAware,ZSQLExtend Line 489  class MPIWGStaff(CatalogAware,ZSQLExtend
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMPIWGStaff.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMPIWGStaff.zpt')).__of__(self)
                   
                   
         logging.error("XX:"+email.Utils.formatdate().split("-")[0]+'GMT')          logging.debug("XX:"+email.Utils.formatdate().split("-")[0]+'GMT')
         return pt()          return pt()
   
     mainEditFile=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMPIWGStaff_main.zpt'))      mainEditFile=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMPIWGStaff_main.zpt'))
Line 459  class MPIWGStaff(CatalogAware,ZSQLExtend Line 541  class MPIWGStaff(CatalogAware,ZSQLExtend
         query="UPDATE personal_www SET current_work_p =%s WHERE key='%s'"          query="UPDATE personal_www SET current_work_p =%s WHERE key='%s'"
                     
         self.ZSQLQuery(query%(self.ZSQLQuote(publish),key))          self.ZSQLQuery(query%(self.ZSQLQuote(publish),key))
                  self.ZCacheable_invalidate()
         if RESPONSE:          if RESPONSE:
             self.redirect(RESPONSE,"edit")              self.redirect(RESPONSE,"edit")
                   
     security.declareProtected('View management screens','changeResearch')      security.declareProtected('View management screens','changeResearch')
     def changeResearch(self,noredirect=None,RESPONSE=None):      def changeResearch(self,noredirect=None,RESPONSE=None):
         """change the research entries"""          """change the research entries"""
           self.ZCacheable_invalidate()
         newEntries={}          newEntries={}
         key_main=self.REQUEST.form['key_main']          key_main=self.REQUEST.form['key_main']
   
Line 524  class MPIWGStaff(CatalogAware,ZSQLExtend Line 607  class MPIWGStaff(CatalogAware,ZSQLExtend
              return pt()               return pt()
                   
          query="UPDATE personal_www SET cv =%s WHERE oid='%s'"           query="UPDATE personal_www SET cv =%s WHERE oid='%s'"
                     self.ZCacheable_invalidate()
          self.ZSQLQuery(query%(self.ZSQLQuote(cv),oid))           self.ZSQLQuery(query%(self.ZSQLQuote(cv),oid))
                   
          if RESPONSE:           if RESPONSE:
Line 535  class MPIWGStaff(CatalogAware,ZSQLExtend Line 618  class MPIWGStaff(CatalogAware,ZSQLExtend
         """get the profile"""          """get the profile"""
     self.REQUEST.RESPONSE.setHeader('Last-Modified',email.Utils.formatdate().split("-")[0]+'GMT')      self.REQUEST.RESPONSE.setHeader('Last-Modified',email.Utils.formatdate().split("-")[0]+'GMT')
               
         founds=self.ZSQLInlineSearchU(_table='personal_www',key=self.getKey())          founds=self.ZSQLInlineSearchU(_table='personal_www',key=self.getKeyUTF8())
         html="""<html><body>%s</body></html>"""          html="""<html><body>%s</body></html>"""
         if founds.profile and founds.profile != "":          if founds.profile and founds.profile != "":
                         
Line 551  class MPIWGStaff(CatalogAware,ZSQLExtend Line 634  class MPIWGStaff(CatalogAware,ZSQLExtend
              pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editProfile.zpt')).__of__(self)               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editProfile.zpt')).__of__(self)
              return pt()               return pt()
                   
                     self.ZCacheable_invalidate() 
                     
                     
          if preview:           if preview:
Line 587  class MPIWGStaff(CatalogAware,ZSQLExtend Line 670  class MPIWGStaff(CatalogAware,ZSQLExtend
         """erzeugt ein automatisches Profil aus den alten Eintraegen  CV, Current work, und research interests"""          """erzeugt ein automatisches Profil aus den alten Eintraegen  CV, Current work, und research interests"""
                   
         ret=""          ret=""
           #founds=self.ZSQLInlineSearch(_table='research_interest',key_main=person.getKeyUTF8())
         founds=self.ZSQLInlineSearch(_table='research_interest',key_main=person.key)          founds=self.ZSQLInlineSearch(_table='research_interest',key_main=person.key)
         if founds:          if founds:
             ret="<p class=\"bio_section_header\">Research interests: </p><br/>"              ret="<p class=\"bio_section_header\">Research interests: </p><br/>"
Line 595  class MPIWGStaff(CatalogAware,ZSQLExtend Line 679  class MPIWGStaff(CatalogAware,ZSQLExtend
                   
                   
         if (person.current_work) and (not person.current_work==""):          if (person.current_work) and (not person.current_work==""):
             ret="<p class=\"bio_section_header\">Current work: </p><br/>"              ret+="<p class=\"bio_section_header\">Current work: </p><br/>"
               
             ret+=person.current_work+"<br/>"              ret+=person.current_work+"<br/>"
               if (person.cv) and (not person.cv==""):
         ret+="<br/>"              ret+="<p class=\"bio_section_header\">Curriculum Vitae: </p><br/>"
         ret+=self.formatAscii(person.cv)          ret+=self.formatAscii(person.cv)
                   
         return ret          return ret
Line 625  class MPIWGStaff(CatalogAware,ZSQLExtend Line 709  class MPIWGStaff(CatalogAware,ZSQLExtend
          if (not oid):           if (not oid):
              pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editAwards.zpt')).__of__(self)               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editAwards.zpt')).__of__(self)
              return pt()               return pt()
                    self.ZCacheable_invalidate()
          query="UPDATE personal_www SET awards =%s WHERE oid='%s'"           query="UPDATE personal_www SET awards =%s WHERE oid='%s'"
               
          self.ZSQLQuery(query%(self.ZSQLQuote(awards),oid))           self.ZSQLQuery(query%(self.ZSQLQuote(awards),oid))
Line 656  class MPIWGStaff(CatalogAware,ZSQLExtend Line 740  class MPIWGStaff(CatalogAware,ZSQLExtend
     security.declareProtected('View management screens','editMainData')          security.declareProtected('View management screens','editMainData')    
     def editMainData(self,REQUEST=None,RESPONSE=None):      def editMainData(self,REQUEST=None,RESPONSE=None):
         """edit main data"""          """edit main data"""
                   self.ZCacheable_invalidate()
         argv=REQUEST.form          argv=REQUEST.form
                   
         if not argv.has_key('last_name'):          if not argv.has_key('last_name'):
             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMainData.zpt')).__of__(self)              pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMainData.zpt')).__of__(self)
             return pt()               return pt() 
         else:          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:              if RESPONSE:
                 self.redirect(RESPONSE,"editMainData")                  self.redirect(RESPONSE,"editMainData")
                                   
Line 721  class MPIWGStaff(CatalogAware,ZSQLExtend Line 805  class MPIWGStaff(CatalogAware,ZSQLExtend
           
     def changeSortingMode(self,sortingMode,RESPONSE=None,REQUEST=None):      def changeSortingMode(self,sortingMode,RESPONSE=None,REQUEST=None):
         """change sorting mode"""          """change sorting mode"""
           self.ZCacheable_invalidate()
         self.sortingMode=sortingMode          self.sortingMode=sortingMode
                   
         if RESPONSE and REQUEST:          if RESPONSE and REQUEST:
Line 746  class MPIWGStaff(CatalogAware,ZSQLExtend Line 831  class MPIWGStaff(CatalogAware,ZSQLExtend
     def changePublications(self,RESPONSE=None):      def changePublications(self,RESPONSE=None):
         """change the publication list"""          """change the publication list"""
         self.changeResearch(noredirect=True)          self.changeResearch(noredirect=True)
                   self.ZCacheable_invalidate()
         #self.updatePublicationDB(personId=self.getDBId())          #self.updatePublicationDB(personId=self.getDBId())
         self.redirect(RESPONSE,self.REQUEST['HTTP_REFERER'])          self.redirect(RESPONSE,self.REQUEST['HTTP_REFERER'])
                   

Removed from v.1.10.2.57  
changed lines
  Added in v.1.10.2.82


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>