Diff for /MPIWGWeb/MPIWGStaff.py between versions 1.10.2.3 and 1.10.2.13

version 1.10.2.3, 2005/10/10 19:10:13 version 1.10.2.13, 2005/10/24 08:29:30
Line 1 Line 1
 """This file contains the classes for the organization of the staff"""  """This file contains the classes for the organization of the staff"""
 # TODO: pruefe ob die id der einzelnen tabellen, wie id in publications noch benutzt werden  # TODO: pruefe ob die id der einzelnen tabellen, wie id in publications noch benutzt werden
 # TODO: pruefe ob die bibliographischen felder in publications noch benutzt werden  # TODO: pruefe ob die bibliographischen felder in publications noch benutzt werden
 # TODO: auswahl der ausgewaehlten publication auf der ersten seite der homepage  # TODO: wird username gebraucht?
   
 from OFS.Folder import Folder  from OFS.Folder import Folder
 from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder  from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder
Line 13  import bibliography Line 13  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
   
   departmentList="Renn\nRheinberger\nDaston\nKlein\nSibum\nIT\nInstitut\nBibliothek"
   
   
 def getTemplate(self, tpName):  def getTemplate(self, tpName):
Line 30  class MPIWGStaff(CatalogAware,ZSQLExtend Line 33  class MPIWGStaff(CatalogAware,ZSQLExtend
   
     meta_type="MPIWGStaff"      meta_type="MPIWGStaff"
     default_catalog='MembersCatalog'      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,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by="",e_mail2="",txt="",txt_p="no"):
           """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,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by,e_mail2"
           insertTuple=(publish_the_data,id,name,vorname,username,title,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by,e_mail2)
           
           insert=[]
           for element in insertTuple:
               insert.append("'%s'"%element)
           
           insertStr=",".join(insert)
           queryStr="INSERT INTO personal_www (%s) VALUES (%s)"%(columnlist,insertStr)
           
           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): 
           """zpddatedb"""
           if not DBid:
               DBid=self.getDBId()
            
           self.ZSQLQuery("SET DATESTYLE TO 'German'")
   
           self.ZSQLChange(_table="personal_www",_identify="id=%s"%DBid,publish_the_data=publish_the_data,
                                      date_from=date_from,
                                      date_to=date_to)
                     
             
       def getPublicationSelectionMode(self):
           """get publication selection mode, default 'priority'"""
           return getattr(self,'publicationSelectionMode','priority')
           
       def changePublicationSelectionMode(self,publicationSelectionMode,RESPONSE=None):
           """change PublicationSelectionMode"""
           
           self.publicationSelectionMode=publicationSelectionMode
           
           if RESPONSE:
               RESPONSE.redirect("editPublications")
               
               
       def getPublishImage(self):
           """publish the image??, default no"""
           return getattr(self,'publishImage','no')
       
       def updateImage(self,file,publishImage,rename=None,RESPONSE=None):
           """update image"""
   
           if file and not(file.filename==""):
               if self.getImageObj():
                        self.getImageObj().updateImage(file,rename=None,RESPONSE=None)
               else:
                        self.getImageFolder().addImage2(file,fileName=self.getId())
               
           self.publishImage=publishImage
           
           if RESPONSE:
               RESPONSE.redirect("edit")
               
       def getImageFolder(self):
           """getImageFolder"""
           return self.getPhysicalRoot().www_neu.images.staff_images
       
       def getImageObj(self):
           """getImage"""
           imageFolder=self.getImageFolder()
           
           image=getattr(imageFolder,self.getId(),None)
   
           if not image:
               for suffix in ['jpg','tif']:
                   
                   image=getattr(imageFolder,self.getId()+"."+suffix,None)
                   if image:
                       break
           return image
               
       def getImageUrl(self):
           """getImageUrl"""
           image=self.getImageObj()
           if not image:
               return None
           else:
               return self.getImageObj().absolute_url()+"/image"
           
     def PrincipiaSearchSource(self):      def PrincipiaSearchSource(self):
         """Return cataloguable key for ourselves."""          """Return cataloguable key for ourselves."""
Line 92  class MPIWGStaff(CatalogAware,ZSQLExtend Line 215  class MPIWGStaff(CatalogAware,ZSQLExtend
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGStaff.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGStaff.zpt')).__of__(self)
         return pt()          return pt()
   
       security.declareProtected('View management screens','changeMPIWGStaff')
     def changeMPIWGStaff(self,lastName,firstName,RESPONSE=None):      def changeMPIWGStaff(self,lastName,firstName,RESPONSE=None):
         """change it"""          """change it"""
         self.title="%s, %s"%(lastName,firstName)          self.title="%s, %s"%(lastName,firstName)
Line 101  class MPIWGStaff(CatalogAware,ZSQLExtend Line 225  class MPIWGStaff(CatalogAware,ZSQLExtend
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
       security.declareProtected('View management screens','edit')
     def edit(self):      def edit(self):
         """Edit the pages"""          """Edit the pages"""
       #TODO: zusammenspiel mit apache, redirect auf 18080 rausnehmen bzw. zumindest verallgemeinern
           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()
           
                   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()
   
     mainEditFile=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMPIWGStaff_main.zpt'))      mainEditFile=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMPIWGStaff_main.zpt'))
   
       def getPathStyle(self, path, selected, style=""):
           """returns a string with the given style + 'sel' if path == selected."""
   
           if path == selected:
               return style + 'sel'
           else:
               return style    
   
       security.declareProtected('View management screens','changeResearch')
     def changeResearch(self,noredirect=None):      def changeResearch(self,noredirect=None):
         """change the research entries"""          """change the research entries"""
         newEntries={}          newEntries={}
Line 160  class MPIWGStaff(CatalogAware,ZSQLExtend Line 299  class MPIWGStaff(CatalogAware,ZSQLExtend
         if not noredirect:          if not noredirect:
             self.REQUEST.RESPONSE.redirect(self.REQUEST['HTTP_REFERER'])              self.REQUEST.RESPONSE.redirect(self.REQUEST['HTTP_REFERER'])
                   
       security.declareProtected('View management screens','editCV')    
     def editCV(self,cv=None,oid=None,RESPONSE=None):      def editCV(self,cv=None,oid=None,RESPONSE=None):
          """edit Cv"""           """edit Cv"""
   
Line 174  class MPIWGStaff(CatalogAware,ZSQLExtend Line 314  class MPIWGStaff(CatalogAware,ZSQLExtend
          if RESPONSE:           if RESPONSE:
             RESPONSE.redirect("editCV")              RESPONSE.redirect("editCV")
   
       security.declareProtected('View management screens','editAwards')    
     def editAwards(self,awards=None,oid=None,RESPONSE=None):      def editAwards(self,awards=None,oid=None,RESPONSE=None):
          """edit a awards"""           """edit a awards"""
   
Line 188  class MPIWGStaff(CatalogAware,ZSQLExtend Line 329  class MPIWGStaff(CatalogAware,ZSQLExtend
          if RESPONSE:           if RESPONSE:
             RESPONSE.redirect("editAwards")              RESPONSE.redirect("editAwards")
   
       security.declareProtected('View management screens','editTalks')    
     def editTalks(self):      def editTalks(self):
         """edit talks"""          """edit talks"""
   
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editTalks.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editTalks.zpt')).__of__(self)
         return pt()          return pt()
                   
                security.declareProtected('View management screens','editTeaching')    
     def editTeaching(self):      def editTeaching(self):
         """edit Teaching"""          """edit Teaching"""
   
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editTeaching.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editTeaching.zpt')).__of__(self)
         return pt()          return pt()
                   
       def getDocTypes(self):
           finds = self.ZopeFind(self.metadata.main.meta.bib,obj_metatypes=["OSAS_MetadataMapping__neu"])
   
           list= [x[0] for x in finds]
           return "\n".join(list)
   
       security.declareProtected('View management screens','editMainData')    
       def editMainData(self,REQUEST=None,RESPONSE=None,name=None,**argv):
           """edit main data"""
           
       
           if not name:
               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMainData.zpt')).__of__(self)
               return pt() 
           else:
               
               self.ZSQLChange(argv,_table="personal_www",_identify="<%s"%self.getDBId(),USE_FORM="yes")
               if RESPONSE:
                   RESPONSE.redirect("editMainData")
                   
       security.declareProtected('View management screens','newBibliogrpaphy')    
       def newBibliography(self,_docType=None, _addEntry=None,RESPONSE=None,**argv):
           
           """add an entry to the bibliography"""
           if not _docType: #kein docType
               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','newBibliographyEntryDocType.zpt')).__of__(self)
               return pt() 
           elif _docType and not _addEntry: #doctype aber keine daten
               self.REQUEST['_docType']=_docType
               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','newBibliographyEntry.zpt')).__of__(self)
               return pt() 
           else: #doctype und daten
               try:
                   newId=self.ZSQLSimpleSearch("select nextval('id_raw')")[0].nextval
               except:#id_raw existiert nich, dann neu erzeugen
                   
                   self.createOrUpdateId_raw()
                   newId=self.ZSQLSimpleSearch("select nextval('id_raw')")[0].nextval
                                   
               bookId="b%06i" % newId
               
               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.updatePublicationDB(personId=self.getDBId())
               
           
           if RESPONSE:
               RESPONSE.redirect("editPublications")
               
           return True
       
       security.declareProtected('View management screens','editImage')    
       def editImage(self):
           """edit images"""
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editImageStaff.zpt')).__of__(self)
           return pt()
       
       security.declareProtected('View management screens','editBibliography')    
     def editBibliography(self):      def editBibliography(self):
         """edit the bibliography"""          """edit the bibliography"""
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editBibliographyEntry.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editBibliographyEntry.zpt')).__of__(self)
         return pt()          return pt()
           
               
               security.declareProtected('View management screens','editPublications')    
     def editPublications(self):      def editPublications(self):
         """edit the bibliographie"""          """edit the bibliographie"""
   
Line 227  class MPIWGStaff(CatalogAware,ZSQLExtend Line 427  class MPIWGStaff(CatalogAware,ZSQLExtend
         """get sorting mode"""          """get sorting mode"""
         return getattr(self,'sortingMode','priority')          return getattr(self,'sortingMode','priority')
           
       def integer(self,value):
           try:
               return int(value)
           except:
               return 0
           
       security.declareProtected('View management screens','changePublications')    
     def changePublications(self):      def changePublications(self):
         """change the publication list"""          """change the publication list"""
           
         self.updatePublicationDB(personId=self.getDBId())  
         self.changeResearch(noredirect=True)          self.changeResearch(noredirect=True)
           
           #self.updatePublicationDB(personId=self.getDBId())
         self.REQUEST.RESPONSE.redirect(self.REQUEST['HTTP_REFERER'])          self.REQUEST.RESPONSE.redirect(self.REQUEST['HTTP_REFERER'])
   
   
       security.declareProtected('View management screens','addPublications')    
     def addPublications(self,submit=None,REQUEST=None,noredirect=None):      def addPublications(self,submit=None,REQUEST=None,noredirect=None):
         """add publications"""          """add publications"""
   
Line 256  class MPIWGStaff(CatalogAware,ZSQLExtend Line 464  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) "              query+="(id_main,id_institutsbibliographie,publish) "
             query+="VALUES ('%s','%s')" %(sql_quote(self.getDBId()),sql_quote(bibId))              query+="VALUES ('%s','%s','yes')" %(sql_quote(self.getDBId()),sql_quote(bibId))
                           print "ADD",query
               #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.getDBId())
Line 272  class MPIWGStaff(CatalogAware,ZSQLExtend Line 481  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())          search=self.ZSQLInlineSearch(_table='personal_www',username=self.getId(),publish_the_data='yes')
         if search:          if search:#name existiert und published, dann nimm diesen falls es mehrereeventuell nich publizierte datensaetze gibt.
             return search[0].id              return search[0].id
           else:#nicht publiziert dann nimm einen davon
               search2=self.ZSQLInlineSearch(_table='personal_www',username=self.getId())
               if search2:
                   return search2[0].id
         else:          else:
             return None              return None
                   
Line 282  class MPIWGStaff(CatalogAware,ZSQLExtend Line 495  class MPIWGStaff(CatalogAware,ZSQLExtend
           
     formatBiblHelp=bibliography.formatBiblHelp      formatBiblHelp=bibliography.formatBiblHelp
           
     def sortBibliography(self,list):      def sortBibliography(self,list,sortingMode=None):
           if not sortingMode:
         sortingMode=self.getSortingMode()          sortingMode=self.getSortingMode()
       
         if sortingMode == "year":          if sortingMode == "year":
             return self.sortYear(list)              return self.sortYear(list)
         else:          else:
Line 330  class MPIWGStaff(CatalogAware,ZSQLExtend Line 545  class MPIWGStaff(CatalogAware,ZSQLExtend
     def deleteField(self,table,oid):      def deleteField(self,table,oid):
         """delete entry"""          """delete entry"""
         query="DELETE FROM %s WHERE oid = '%s'"%(table,oid)          query="DELETE FROM %s WHERE oid = '%s'"%(table,oid)
         print "query"  
         self.ZSQLQuery(query)          self.ZSQLQuery(query)
         self.REQUEST.RESPONSE.redirect(self.REQUEST['HTTP_REFERER'])          self.REQUEST.RESPONSE.redirect(self.REQUEST['HTTP_REFERER'])
                   

Removed from v.1.10.2.3  
changed lines
  Added in v.1.10.2.13


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