Diff for /MPIWGWeb/MPIWGProjects.py between versions 1.47.2.63 and 1.47.2.64

version 1.47.2.63, 2006/11/06 16:08:30 version 1.47.2.64, 2006/11/08 14:47:13
Line 2 Line 2
 for organizing and maintaining the different project pages  for organizing and maintaining the different project pages
   
 """  """
 #TODO: mechanismus fur links to personen ueberarbeiten, da jetzt alle e_mails als members auftauchen unabhaengig vom status publish_the_data  #TODO: mechanismus fur links to personen ueberarbeiten, da jetzt alle e_mails als members auftauchen unabhaenig vom status publish_the_data
 #TODO: was passiert wenn aenderungen von jochen im filemaker nicht mit den aenderungen im sql uebereinstimmen  #TODO: was passiert wenn aenderungen von jochen im filemaker nicht mit den aenderungen im sql uebereinstimmen
 #TODO: in einzelnen projecte steht als pfad auf die bilder noch wwwneu statt www  #TODO: in einzelnen projecte steht als pfad auf die bilder noch wwwneu statt www
   
Line 33  from Ft.Xml.XPath import Evaluate Line 33  from Ft.Xml.XPath import Evaluate
 from Ft.Xml.XPath.Context import Context  from Ft.Xml.XPath.Context import Context
 from Ft.Xml.Domlette import NonvalidatingReader,PrettyPrint, Print  from Ft.Xml.Domlette import NonvalidatingReader,PrettyPrint, Print
 from Ft.Xml import EMPTY_NAMESPACE  from Ft.Xml import EMPTY_NAMESPACE
   import copy
   
 definedFields=['WEB_title','xdata_01','xdata_02','xdata_03','xdata_04','xdata_05','xdata_06','xdata_07','xdata_08','xdata_09','xdata_10','xdata_11','xdata_12','xdata_13','WEB_project_header','WEB_project_description','WEB_related_pub']  definedFields=['WEB_title','xdata_01','xdata_02','xdata_03','xdata_04','xdata_05','xdata_06','xdata_07','xdata_08','xdata_09','xdata_10','xdata_11','xdata_12','xdata_13','WEB_project_header','WEB_project_description','WEB_related_pub']
   
Line 638  class MPIWGRoot(ZSQLExtendFolder): Line 639  class MPIWGRoot(ZSQLExtendFolder):
         """quote"""          """quote"""
         return urllib.unquote(str)          return urllib.unquote(str)
           
     def harvestHistoricalPersons(self):  
         """erstelle liste aller erwaehnten actors"""  
   
         def normalize(str):  
             """loesche fuhrendes space"""  
             if (len(str)>1) and (str[0]==" "):  
                 ret=str[1:]  
             else:  
                 ret=str  
             return ret  
           
         list={}  
         projects=self.ZopeFind(self.projects,obj_metatypes=['MPIWGProject'])  
           
         for project in projects:  
             lg=len(project[1].xdata_03[0])-1  
   
             if (lg>1) and (project[1].xdata_03[0][lg]==";"):  
                 project[1].xdata_03[0]=project[1].xdata_03[0][0:lg]  
   
             
        
                   
             try:  
                 if len(project[1].xdata_03[0].split(";"))>1: # guess if separator is ;  
                     for person in project[1].xdata_03[0].split(";"):  
                         personNormal=normalize(person)  
                         if personNormal in list.keys():  
                             list[urllib.quote(personNormal)][1].append(project[1])  
                         else:  
                             list[urllib.quote(personNormal)]=(personNormal,[project[1]])  
                 else: #guess , is sepeator  
                     for person in project[1].xdata_03[0].split(","):  
                         personNormal=normalize(person)  
                         if urllib.quote(personNormal) in list.keys():  
                             list[urllib.quote(personNormal)][1].append(project[1])  
                         else:  
                             list[urllib.quote(personNormal)]=(personNormal,[project[1]])  
   
             except:  
                 zLOG.LOG("MPIWG Web (harvestHistoricalPerson)",zLOG.ERROR,"cannot analyize: %s"%repr(project))  
   
                   
         return list  
   
     def storeHistoricalPersons(self,RESPONSE=None):  
         """store persons"""  
         self.personDict={}  
         personDict=self.harvestHistoricalPersons()  
         for person in personDict.keys():  
             for project in personDict[person][1]:  
                 if person in self.personDict.keys():  
                     self.personDict[person][1].append((project.absolute_url(),project.WEB_title[0],project.xdata_01[0]))  
                 else:  
                     self.personDict[person]=(personDict[person][0],[(project.absolute_url(),project.WEB_title[0],project.xdata_01[0])])  
   
         if RESPONSE is not None:  
             RESPONSE.redirect("showHistoricalPersons")  
               
   
     def getPersonDict(self,name):  
         """name von dict"""  
   
         try:  
             return self.personDict[name][0].encode('utf-8')  
         except:  
             return self.personDict[name][0]  
             return self.personDict[name][0].decode('latin-1').encode('utf-8')  
           
   
     def showHistoricalPersons(self):  
         """show persons"""  
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','showHistoricalPersons')).__of__(self)  
         return pt()  
   
           
     def editHistoricalPersonsForm(self):  
         """edit historical persons for consistency"""  
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editHistoricalPersonsForm')).__of__(self)  
         return pt()  
   
     def getProjectsByFieldContent(self,fieldName,fieldContentsEntry, date=None):      def getProjectsByFieldContent(self,fieldName,fieldContentsEntry, date=None):
         """gib alle Projekte aus mit Value von field mit fieldName enthält ein Element der Liste fieldContents"""          """gib alle Projekte aus mit Value von field mit fieldName enthält ein Element der Liste fieldContents"""
Line 1559  class MPIWGRoot(ZSQLExtendFolder): Line 1481  class MPIWGRoot(ZSQLExtendFolder):
             self.nameIndex=results              self.nameIndex=results
         return results          return results
                                           
       def editNameIndexHTML(self):
           """edit the name index"""
           if not hasattr(self,'nameIndexEdited'): # falls editierter index noch nicht existiert, kopiere automatisch erstellten
               self.nameIndexEdited=copy.copy(self.nameIndex)
               print "huh"
           #self.nameIndexEdited=copy.copy(self.nameIndex)
           #print self.nameIndexEdited
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editHistoricalNames.zpt')).__of__(self)
           return pt()
       
       def getNamesInProject(self,projectId):
           """get all names ofnameIndexEdited which are references in projec with projectId"""
           
           ret=[]
           for name in self.nameIndexEdited.keys():
               if projectId in self.nameIndexEdited[name]:
                   ret.append(name)
           
           return ret
       
       def editNameIndex(self,RESPONSE=None,name=None,occurrances=None,submit=None):
           """edit the index"""
           nI=self.nameIndexEdited # mI introduced to make sure that changes to nameIndexEdited are know to ZODB
           if submit=="delete":
              
   
               dh=getattr(self,'deletedHistoricalNames',{})
               if not dh.has_key(name):
                   dh=occurrances.split("\n")
               else:
                   dh+=occurrances.split("\n")
               
               self.deletedHistoricalNames=dh
               
               del self.nameIndexEdited[name]
               
           
           elif (submit=="change"):
               
               nI[name]=occurrances.split("\n")[0:]
               
           elif (submit=="add"):
               if not nI.has_key(name):
                   nI[name]=occurrances.split("\n")
               else:
                   nI[name]+=occurrances.split("\n")
       
           self.nameIndexEdited=nI
      
         
           if RESPONSE is not None:
               RESPONSE.redirect('editNameIndexHTML')
           
       
       
       def restoreIndex(self):
           """restore"""
           self.nameIndexEdited=self.nameIndex
           return "done"
       
       def changeHistoricalNames(self,projId,nameListTmp):
           """add resp change nameIndexEdited b
           y adding/changing names menitionen in project projId"""
           
           #clear namelist from blanks
           nameList=[x.lstrip().rstrip() for x in nameListTmp]
           
           nI=self.nameIndexEdited
           for name in nameList:
               if not nI.has_key(name): #neuer Name
                   nI[name]=[projId]
           
           for name in nI.keys():
     
               if name in nameList: #checke if name in name List
                
                   if not(projId in nI[name]): #nicht in listt -> hinzufuegen
                     
                       nI[name].append(projId)
                   
                   """loesche falls projekt in nI list aber der name nicht mehr 
                   in der namensliste des projectes auftaucht 
                   """
                  
               for pr in nI[name]:
               
                   if (pr==projId) and (not name in nameList): 
                    
                       nI[name].remove(pr)
   
           self.nameIndexEdited=nI  
           
       
               
 def manage_addMPIWGRootForm(self):  def manage_addMPIWGRootForm(self):
     """form for adding the root"""      """form for adding the root"""
     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGRootForm.zpt')).__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGRootForm.zpt')).__of__(self)
Line 2413  class MPIWGProject(CatalogAware,Folder): Line 2429  class MPIWGProject(CatalogAware,Folder):
                                   
                 setattr(self,x,[self.REQUEST[x].decode('utf-8')])                  setattr(self,x,[self.REQUEST[x].decode('utf-8')])
   
           self.en.changeHistoricalNames(self.getId(),self.REQUEST['historicalNames'].split("\n"))
           
         if self.REQUEST.has_key('active'):          if self.REQUEST.has_key('active'):
             self.setActiveFlag(True)              self.setActiveFlag(True)
         else:          else:

Removed from v.1.47.2.63  
changed lines
  Added in v.1.47.2.64


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