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

version 1.10.2.32, 2006/12/08 13:54:41 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
   
 class MPIWGStaff(CatalogAware,ZSQLExtendFolder):  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=""):
     """Staff"""  
   
     meta_type="MPIWGStaff"  
     default_catalog='MembersCatalog'  
     departmentList=departmentList  
     security=ClassSecurityInfo()  
       
     def getConnectionObj(self):#ueberschreibe connection id methode      
            
             return getattr(self.de,self.de.connection_id)  
           
     def isPublished(self):  
         """gib publications status aus der datenbank aus"""  
         username=self.getId()  
         query="select count(publish_the_data) from personal_www where username='%s' and publish_the_data='yes'"%username  
           
         res = self.ZSQLQuery(query)  
           
         if res and res[0].count>0:  
             return True  
         else:  
             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"""          """lege person in der datenbank an"""
   
     if date_to=="": # wenn date_to leer      if date_to=="": # wenn date_to leer
              date_to=="date_none"               date_to="date_none"
   
           if date_from=="": # wenn date_fromleer
                date_from="date_none"
         msg=""          msg=""
         #test ob id schon existiert          #test ob id schon existiert
         if self.ZSQLQuery("select id from personal_www where id='%s'"%id):          if self.ZSQLQuery("select key from personal_www where key='%s'"%id):
             return False,"ERROR:id %s already exists"%id              return False,"ERROR:key%s already exists"%key
           
         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          #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"          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,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,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=[]          insert=[]
         for element in insertTuple:          for element in insertTuple:
         if element=="date_none": # date_none eintrag wird zu null uebersetzt          if element=="date_none": # date_none eintrag wird zu null uebersetzt
         insert.append('null')          insert.append('null')
         else:          else:
         insert.append("'%s'"%element)                  insert.append("%s"%self.ZSQLQuote(element))
                   
         insertStr=",".join(insert)          insertStr=",".join(insert)
         queryStr="INSERT INTO personal_www (%s) VALUES (%s)"%(columnlist,insertStr)          queryStr="INSERT INTO personal_www (%s) VALUES (%s)"%(columnlist,insertStr)
         self.ZSQLQuery("SET DATESTYLE TO 'German'")          self.ZSQLQuery("SET DATESTYLE TO 'German'")
         self.ZSQLQuery(queryStr)          self.ZSQLQuery(queryStr)
           logging.error("QQQQ %s:"%queryStr)
         #currentwork          #currentwork
         if not (txt==""):          if not (current_work==""):
             queryStr="INSERT INTO current_work (id_main,current,publish) VALUES ('%s','%s','%s')"%(id,txt,txt_p)              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          return True,msg
   class MPIWGStaff(CatalogAware,ZSQLExtendFolder):
       """Staff"""
   
       meta_type="MPIWGStaff"
       default_catalog='MembersCatalog'
       departmentList=departmentList
       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    
            
               return getattr(self.de,self.de.connection_id)
           
       def isPublished(self):
           """gib publications status aus der datenbank aus"""
           key=self.getKey()
           query="select count(publish_the_data) from personal_www where key='%s' and publish_the_data='yes'"%key
           
           res = self.ZSQLQuery(query)
           
           if res and res[0].count>0:
               return True
           else:
               return False
           
    
           
     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"""
Line 108  class MPIWGStaff(CatalogAware,ZSQLExtend Line 118  class MPIWGStaff(CatalogAware,ZSQLExtend
   
                   
         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 146  class MPIWGStaff(CatalogAware,ZSQLExtend Line 155  class MPIWGStaff(CatalogAware,ZSQLExtend
         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 163  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 199  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 291  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 320  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 390  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:
         print argv              self.ZSQLChange(argv,_table="personal_www",_identify="key=%s"%self.getKey(),USE_FORM="yes")
             self.ZSQLChange(argv,_table="personal_www",_identify="id=%s"%self.getDBId(),USE_FORM="yes")  
             if RESPONSE:              if RESPONSE:
                 RESPONSE.redirect("editMainData")                  RESPONSE.redirect("editMainData")
                                   
Line 425  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 465  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 504  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 521  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 557  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.32  
changed lines
  Added in v.1.10.2.33


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