Diff for /MPIWGWeb/MPIWGStaff.py between versions 1.10.2.28 and 1.10.2.33

version 1.10.2.28, 2006/07/27 09:01:00 version 1.10.2.33, 2007/04/18 10:03:13
Line 9  from Products.PageTemplates.PageTemplate Line 9  from Products.PageTemplates.PageTemplate
 from Products.PageTemplates.PageTemplate import PageTemplate  from Products.PageTemplates.PageTemplate import PageTemplate
 from Products.ZCatalog.CatalogPathAwareness import CatalogAware  from Products.ZCatalog.CatalogPathAwareness import CatalogAware
 import os  import os
 import zLOG  import logging
 import bibliography  import bibliography
 from Globals import package_home  from Globals import package_home
 from Products.PythonScripts.standard import sql_quote  from Products.PythonScripts.standard import sql_quote
 from types import *  from types import *
 from AccessControl import ClassSecurityInfo  from AccessControl import ClassSecurityInfo
   
 import zLOG  import logging
   
   #ersetzt logging
   def logger(txt,method,txt2):
       """logging""" 
       logging.info(txt+ txt2)
   
 departmentList="Renn\nRheinberger\nDaston\nKlein\nSibum\nIT\nInstitut\nBibliothek"  departmentList="Renn\nRheinberger\nDaston\nKlein\nSibum\nIT\nInstitut\nBibliothek"
   
Line 31  def getTemplate(self, tpName): Line 36  def getTemplate(self, tpName):
     assert(pt)      assert(pt)
     return 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=""):
           """lege person in der datenbank an"""
   
           if date_to=="": # wenn date_to leer
                date_to="date_none"
           
           if date_from=="": # wenn date_fromleer
                date_from="date_none"
           msg=""
           #test ob id schon existiert
           if self.ZSQLQuery("select key from personal_www where key='%s'"%id):
               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)
           
           insert=[]
           for element in insertTuple:
               if element=="date_none": # date_none eintrag wird zu null uebersetzt
                   insert.append('null')
               else:
                   insert.append("%s"%self.ZSQLQuote(element))
               
           insertStr=",".join(insert)
           queryStr="INSERT INTO personal_www (%s) VALUES (%s)"%(columnlist,insertStr)
           self.ZSQLQuery("SET DATESTYLE TO 'German'")
           self.ZSQLQuery(queryStr)
           logging.error("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")
   
               self.ZSQLQuery(queryStr)
           
           return True,msg
 class MPIWGStaff(CatalogAware,ZSQLExtendFolder):  class MPIWGStaff(CatalogAware,ZSQLExtendFolder):
     """Staff"""      """Staff"""
   
Line 39  class MPIWGStaff(CatalogAware,ZSQLExtend Line 80  class MPIWGStaff(CatalogAware,ZSQLExtend
     departmentList=departmentList      departmentList=departmentList
     security=ClassSecurityInfo()      security=ClassSecurityInfo()
           
       def getKey(self):
           """get database key"""
           if hasattr(self,'key'):
               return self.key.lower()
           
           #fuer alt faelle ohne key
           return (self.firstName+'_'+self.lastName).lower()
           
     def getConnectionObj(self):#ueberschreibe connection id methode          def getConnectionObj(self):#ueberschreibe connection id methode    
                     
             return getattr(self.de,self.de.connection_id)              return getattr(self.de,self.de.connection_id)
                   
     def isPublished(self):      def isPublished(self):
         """gib publications status aus der datenbank aus"""          """gib publications status aus der datenbank aus"""
         username=self.getId()          key=self.getKey()
         query="select count(publish_the_data) from personal_www where username='%s' and publish_the_data='yes'"%username          query="select count(publish_the_data) from personal_www where key='%s' and publish_the_data='yes'"%key
                   
         res = self.ZSQLQuery(query)          res = self.ZSQLQuery(query)
                   
Line 55  class MPIWGStaff(CatalogAware,ZSQLExtend Line 104  class MPIWGStaff(CatalogAware,ZSQLExtend
         else:          else:
             return False              return False
                   
     def createNewDBEntry(self,publish_the_data,id,name,vorname,username,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=""):  
         """lege person in der datenbank an"""  
         msg=""  
         #test ob id schon existiert  
         if self.ZSQLQuery("select id from personal_www where id='%s'"%id):  
             return False,"ERROR:id %s already exists"%id  
           
         if self.ZSQLQuery("select username from personal_www where username='%s' and publish_the_data='yes'"%username):  
                           
             return False,"ERROR:username %s already exists and has data published, id=%s not added (running update again might solve this problem)"%(username,id)  
           
         if self.ZSQLQuery("select username from personal_www where username='%s' and not publish_the_data='yes'"%username):  
             msg="WARNING:username %s not unique but id=%s added"%(username,id)  
         #eintragen  
         columnlist="publish_the_data,id,name,vorname,username,title,position,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by,e_mail2,stay_at_mpiwg"  
         insertTuple=(publish_the_data,id,name,vorname,username,title,position,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by,e_mail2,stay_at_mpiwg)  
           
         insert=[]  
         for element in insertTuple:  
             insert.append("'%s'"%element)  
           
         insertStr=",".join(insert)  
         queryStr="INSERT INTO personal_www (%s) VALUES (%s)"%(columnlist,insertStr)  
         self.ZSQLQuery("SET DATESTYLE TO 'German'")  
         self.ZSQLQuery(queryStr)  
   
         #currentwork  
         if not (txt==""):  
             queryStr="INSERT INTO current_work (id_main,current,publish) VALUES ('%s','%s','%s')"%(id,txt,txt_p)  
   
             self.ZSQLQuery(queryStr)  
           
         return True,msg  
           
     def updateDBEntry(self,publish_the_data,date_from,date_to,DBid=None,stay_at_mpiwg="",position="",abteilung=""):       def updateDBEntry(self,publish_the_data,date_from,date_to,DBid=None,stay_at_mpiwg="",position="",abteilung=""): 
         """zpddatedb"""          """zpddatedb"""
         if not DBid:          if not DBid:
             DBid=self.getDBId()              DBid=self.getDBId()
                     
    
         self.ZSQLQuery("SET DATESTYLE TO 'German'")          self.ZSQLQuery("SET DATESTYLE TO 'German'")
   
         test=self.ZSQLQuery("select id from personal_www where id='%s' "%DBid)          test=self.ZSQLQuery("select id from personal_www where id='%s' "%DBid)
   
                   
         if test and (len(test)>0): #dataset exists          if test and (len(test)>0): #dataset exists
         zLOG.LOG("MPIWG Web",zLOG.INFO,'UPDATE: _table="personal_www",_identify="id=%s"'%DBid+',publish_the_data=%s'%publish_the_data+',date_from=%s'%date_from+',date_to=%s'%date_to+',stay_at_mpiwg=%s'%stay_at_mpiwg+',position=%s'%position)              logger("MPIWG Web",logging.INFO,'UPDATE: _table="personal_www",_identify="id=%s"'%DBid+',publish_the_data=%s'%publish_the_data+',date_from=%s'%date_from+',date_to=%s'%date_to+',stay_at_mpiwg=%s'%stay_at_mpiwg+',position=%s'%position)
    
         self.ZSQLChange(_table="personal_www",_identify="id=%s"%DBid,publish_the_data=publish_the_data,          self.ZSQLChange(_table="personal_www",_identify="id=%s"%DBid,publish_the_data=publish_the_data,
                                    date_from=date_from,                                     date_from=date_from,
                                    date_to=date_to,stay_at_mpiwg=stay_at_mpiwg,position=position,abteilung=abteilung)                                     date_to=date_to,stay_at_mpiwg=stay_at_mpiwg,position=position,abteilung=abteilung)
Line 131  class MPIWGStaff(CatalogAware,ZSQLExtend Line 148  class MPIWGStaff(CatalogAware,ZSQLExtend
   
         if file and not(file.filename==""):          if file and not(file.filename==""):
             if self.getImageObj():              if self.getImageObj():
         self.getImageObj().updateImage(file,rename=None,RESPONSE=None)                        self.getImageObj().updateImage(file,_rename=None,RESPONSE=None)
             else:              else:
         # create new image object          # create new image object
         xp = file.filename.rfind('.')          xp = file.filename.rfind('.')
         if xp > 0:          if xp > 0:
             ext = file.filename[xp:]              ext = file.filename[xp:]
             fn = self.getId()+ext              fn = self.getId()+ext
             zLOG.LOG("MPWIG STAFF", zLOG.INFO, "new filename: %s"%fn)              logger("MPWIG STAFF", logging.INFO, "new filename: %s"%fn)
             self.getImageFolder().addImage2(file,fileName=fn)              self.getImageFolder().addImage2(file,fileName=fn)
         else:          else:
             zLOG.LOG("MPWIG STAFF", zLOG.ERROR, "uploaded filename %s has no extension!"%file.filename)              logger("MPWIG STAFF", logging.ERROR, "uploaded filename %s has no extension!"%file.filename)
                           
         self.publishImage=publishImage          self.publishImage=publishImage
                   
Line 155  class MPIWGStaff(CatalogAware,ZSQLExtend Line 172  class MPIWGStaff(CatalogAware,ZSQLExtend
         try:          try:
             return self.getPhysicalRoot().www_neu.images.staff_images              return self.getPhysicalRoot().www_neu.images.staff_images
         except:           except: 
             zLOG.LOG("MPWIG STAFF", zLOG.ERROR, "image folder not found:"," has to be add /www_neu/staff_images")               logger("MPWIG STAFF", logging.ERROR, "image folder not found:"," has to be add /www_neu/staff_images") 
             return None              return None
                   
     def getImageObj(self):      def getImageObj(self):
Line 191  class MPIWGStaff(CatalogAware,ZSQLExtend Line 208  class MPIWGStaff(CatalogAware,ZSQLExtend
         {'label':'Change Publications Special','action':'changePublications_specialForm'},          {'label':'Change Publications Special','action':'changePublications_specialForm'},
         )          )
           
     def __init__(self,id, lastName,firstName):      def __init__(self,id, lastName,firstName,key):
         """init"""          """init"""
         self.id=id          self.id=id
         self.title="%s, %s"%(lastName,firstName)          self.title=key
         self.lastName=lastName          self.lastName=lastName
         self.firstName=firstName          self.firstName=firstName
           self.key=key
   
     def harvest_page(self):      def harvest_page(self):
         """geharvestete seite = verschlankte version von members_main"""          """geharvestete seite = verschlankte version von members_main"""
Line 261  class MPIWGStaff(CatalogAware,ZSQLExtend Line 279  class MPIWGStaff(CatalogAware,ZSQLExtend
     def edit(self):      def edit(self):
         """Edit the pages"""          """Edit the pages"""
         #TODO: zusammenspiel mit apache, redirect auf 18080 rausnehmen bzw. zumindest verallgemeinern          #TODO: zusammenspiel mit apache, redirect auf 18080 rausnehmen bzw. zumindest verallgemeinern
         if self.REQUEST['SERVER_URL']=="http://www.mpiwg-berlin.mpg.de":          #if self.REQUEST['SERVER_URL']=="http://www.mpiwg-berlin.mpg.de":
                 redURL="http://xserve04.mpiwg-berlin.mpg.de:18080/www_neu/de/mitarbeiter/members/%s/edit"%self.getId()          #        redURL="http://xserve04.mpiwg-berlin.mpg.de:18080/www_neu/de/mitarbeiter/members/%s/edit"%self.getId()
                   #
                 self.REQUEST.RESPONSE.redirect(redURL)          #        self.REQUEST.RESPONSE.redirect(redURL)
   
         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)
         return pt()          return pt()
Line 283  class MPIWGStaff(CatalogAware,ZSQLExtend Line 301  class MPIWGStaff(CatalogAware,ZSQLExtend
     def changeResearch(self,noredirect=None):      def changeResearch(self,noredirect=None):
         """change the research entries"""          """change the research entries"""
         newEntries={}          newEntries={}
         id_main=self.REQUEST.form['id_main']          key_main=self.REQUEST.form['key_main']
   
         mainfieldL=self.REQUEST.form['main_fields'].split(",")          mainfieldL=self.REQUEST.form['main_fields'].split(",")
         mainfield={}          mainfield={}
Line 312  class MPIWGStaff(CatalogAware,ZSQLExtend Line 330  class MPIWGStaff(CatalogAware,ZSQLExtend
         #new entries          #new entries
         for newEntry in newEntries.keys():          for newEntry in newEntries.keys():
             query="INSERT INTO %s "%newEntry              query="INSERT INTO %s "%newEntry
             keys=['id_main']              keys=['key_main']
             values=["'"+sql_quote(id_main)+"'"]              values=["'"+sql_quote(key_main)+"'"]
             for key in newEntries[newEntry].keys():              for key in newEntries[newEntry].keys():
                 keys.append(key)                  keys.append(key)
                 values.append("'"+sql_quote(newEntries[newEntry][key])+"'")                  values.append("'"+sql_quote(newEntries[newEntry][key])+"'")
Line 382  class MPIWGStaff(CatalogAware,ZSQLExtend Line 400  class MPIWGStaff(CatalogAware,ZSQLExtend
         return "\n".join(list)          return "\n".join(list)
   
     security.declareProtected('View management screens','editMainData')          security.declareProtected('View management screens','editMainData')    
     def editMainData(self,REQUEST=None,RESPONSE=None,name=None,**argv):      def editMainData(self,REQUEST=None,RESPONSE=None):
         """edit main data"""          """edit main data"""
                   
           argv=REQUEST.form
           
         if not 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="id=%s"%self.getDBId(),USE_FORM="yes")              self.ZSQLChange(argv,_table="personal_www",_identify="key=%s"%self.getKey(),USE_FORM="yes")
             if RESPONSE:              if RESPONSE:
                 RESPONSE.redirect("editMainData")                  RESPONSE.redirect("editMainData")
                                   
Line 416  class MPIWGStaff(CatalogAware,ZSQLExtend Line 435  class MPIWGStaff(CatalogAware,ZSQLExtend
             bookId="b%06i" % newId              bookId="b%06i" % newId
                           
             self.ZSQLAdd(argv,_table="bibliography",reference_type=_docType,id=bookId)              self.ZSQLAdd(argv,_table="bibliography",reference_type=_docType,id=bookId)
             self.ZSQLAdd(_table="publications",id_gen_bib=bookId,id_main=self.getDBId(),publish='yes')              self.ZSQLAdd(_table="publications",id_gen_bib=bookId,key_main=self.getDBId(),publish='yes')
             self.updatePublicationDB(personId=self.getDBId())              self.updatePublicationDB(personId=self.getDBId())
                           
                   
Line 456  class MPIWGStaff(CatalogAware,ZSQLExtend Line 475  class MPIWGStaff(CatalogAware,ZSQLExtend
   
     def getSortingMode(self):      def getSortingMode(self):
         """get sorting mode"""          """get sorting mode"""
         return getattr(self,'sortingMode','priority')          mode=getattr(self,'sortingMode','priority')
           if mode=="year":
               return "year DESC"
           else:
               return "mode"
           
     def integer(self,value):      def integer(self,value):
         try:          try:
Line 495  class MPIWGStaff(CatalogAware,ZSQLExtend Line 518  class MPIWGStaff(CatalogAware,ZSQLExtend
                           
         for bibId in entries:           for bibId in entries: 
             query="INSERT INTO %s " % "publications"              query="INSERT INTO %s " % "publications"
             query+="(id_main,id_institutsbibliographie,publish) "              query+="(key_main,id_institutsbibliographie,publish) "
             query+="VALUES ('%s','%s','yes')" %(sql_quote(self.getDBId()),sql_quote(bibId))              query+="VALUES ('%s','%s','yes')" %(sql_quote(self.getKey()),sql_quote(bibId))
                           
             #self.ZSQLAdd(_table="publications",id_institutsbibliographie=bibId,id_main=self.getDBId(),publish='yes')              #self.ZSQLAdd(_table="publications",id_institutsbibliographie=bibId,id_main=self.getDBId(),publish='yes')
             self.ZSQLQuery(query)              self.ZSQLQuery(query)
             
         self.updatePublicationDB(personId=self.getDBId())          self.updatePublicationDB(personId=self.getKey())
                   
         if not noredirect:          if not noredirect:
                           
Line 512  class MPIWGStaff(CatalogAware,ZSQLExtend Line 535  class MPIWGStaff(CatalogAware,ZSQLExtend
           
     def getDBId(self):      def getDBId(self):
         """get id from the personal database"""          """get id from the personal database"""
         search=self.ZSQLInlineSearch(_table='personal_www',username=self.getId(),publish_the_data='yes')          
         if search:#name existiert und published, dann nimm diesen falls es mehrereeventuell nich publizierte datensaetze gibt.          #in der neuen version ist definitions gemaess der key der Datenbank gleich dem key im Object.
             return search[0].id          # TODO: remove all occurences of getDBId and replaces it by getKey
         else:#nicht publiziert dann nimm einen davon          return self.getKey()
             search2=self.ZSQLInlineSearch(_table='personal_www',username=self.getId())          
             if search2:  #        search=self.ZSQLInlineSearch(_table='personal_www',key=self.getKey(),publish_the_data='yes')
                 return search2[0].id  #        if search:#name existiert und published, dann nimm diesen falls es mehrereeventuell nich publizierte datensaetze gibt.
             else:  #            return search[0].id
                 return None  #        else:#nicht publiziert dann nimm einen davon
   #            search2=self.ZSQLInlineSearch(_table='personal_www',username=self.getId())
   #            if search2:
   #                return search2[0].id
   #            else:
   #                return None
                   
           
           
     formatBiblHelp=bibliography.formatBiblHelp      formatBiblHelp=bibliography.formatBiblHelp
           
     def sortBibliography(self,list,sortingMode=None):      def sortBibliography(self,list,sortingMode=None,max=None):
         if not sortingMode:          if not sortingMode:
             sortingMode=self.getSortingMode()              sortingMode=self.getSortingMode()
           
         if sortingMode == "year":          if sortingMode == "year":
             return self.sortYear(list)              l= self.sortYear(list)
         else:          else:
             return self.sortPriority(list)              l=self.sortPriority(list)
           
           if max:
               return l[0:min(len(l),max)]
           else:
               return l
                   
     def sortPriority(self,list):      def sortPriority(self,list):
         def sort(x,y):          def sort(x,y):
Line 548  class MPIWGStaff(CatalogAware,ZSQLExtend Line 581  class MPIWGStaff(CatalogAware,ZSQLExtend
   
             return cmp(xInt,yInt)              return cmp(xInt,yInt)
   
           if not list:
               return []
         tmp=[x for x in list]          tmp=[x for x in list]
         tmp.sort(sort)                     tmp.sort(sort)           
           
         return tmp          return tmp
   
     def sortYear(self,list):      def sortYear(self,list):

Removed from v.1.10.2.28  
changed lines
  Added in v.1.10.2.33


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