Diff for /MPIWGWeb/MPIWGProjects.py between versions 1.5 and 1.8

version 1.5, 2004/03/10 09:17:31 version 1.8, 2004/05/28 16:45:06
Line 1 Line 1
 """This files contains the class MPIWG Projects"""  """This files contains the class MPIWG Projects
   for organizing and maintaining the different projectspages
   
   """
 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.PageTemplates.ZopePageTemplate import ZopePageTemplate
Line 49  class MPIWGRoot(Folder): Line 52  class MPIWGRoot(Folder):
     folders=['MPIWGProject','Folder']      folders=['MPIWGProject','Folder']
     meta_type='MPIWGRoot'      meta_type='MPIWGRoot'
           
       def sortedNames(self,list):
           """sort names"""
   
           def sortLastName(x,y):
               try:
                   last_x=x.split()[len(x.split())-1]
                   last_y=y.split()[len(y.split())-1]
   
               except:
   
                   last_x=""
                   last_y=""
               
               
               
               if last_x<last_y:
                   return 1
               elif last_x>last_y:
                   return -1
               else:
                   return 0
               
           list.sort(sortLastName)
           list.reverse()
           
           return list
       
     def __init__(self, id, title):      def __init__(self, id, title):
         """init"""          """init"""
         self.id=id          self.id=id
         self.title=title          self.title=title
   
       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-1]
   
             
        
                   
               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[personNormal].append(project[1])
                           else:
                               list[personNormal]=[project[1]]
                   else: #guess , is sepeator
                       for person in project[1].xdata_03[0].split(","):
                           personNormal=normalize(person)
                           if personNormal in list.keys():
                               list[personNormal].append(project[1])
                           else:
                               list[personNormal]=[project[1]]
   
               except:
                   print "ERROR",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]:
                   if person in self.personDict.keys():
                       self.personDict[person].append((project.absolute_url(),project.WEB_title[0],project.xdata_01[0]))
                   else:
                       self.personDict[person]=[(project.absolute_url(),project.WEB_title[0],project.xdata_01[0])]
   
           if RESPONSE is not None:
               RESPONSE.redirect("showHistoricalPersons")
               
   
       def showHistoricalPersons(self):
           """show persons"""
           pt=PageTemplateFile('Products/MPIWGWeb/zpt/showHistoricalPersons').__of__(self)
           return pt()
   
           
       def editHistoricalPersonsForm(self):
           """edit historical persons for consistency"""
           pt=PageTemplateFile('Products/MPIWGWeb/zpt/editHistoricalPersonsForm').__of__(self)
           return pt()
   
       def getProjectsByFieldContent(self,fieldName,fieldContentsEntry):
           """gib alle Projekte aus mit Value von field mit fieldName enthält ein Element der Liste fieldContents"""
           if type(fieldContentsEntry) is StringType:
               fieldContents=[fieldContentsEntry]
           else:
               fieldContents=fieldContentsEntry
               
           projects=self.ProjectCatalog({fieldName:string.join(fieldContents,' OR')})
           #print projects
           return projects
   
       def changeMPIWGRootForm(self):
           """edit"""
           pt=PageTemplateFile('Products/MPIWGWeb/zpt/changeMPIWGRootForm').__of__(self)
           return pt()
   
       def changeMPIWGRoot(self,title,disciplineList,themesList,RESPONSE=None):
           """change"""
           self.title=title
           self.disciplineList=disciplineList
           self.themesList=themesList
   
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
      
       def test(self):
           """test"""
           return self.getProjectsByFieldContent('xdata_09',['biology'])[0].absolute_url
       
     def getProjectFields(self,fieldName,folder=None,sort=None):      def getProjectFields(self,fieldName,folder=None,sort=None):
         """getListofFieldNames"""          """getListofFieldNames"""
         ret=[]          ret=[]
Line 101  class MPIWGRoot(Folder): Line 231  class MPIWGRoot(Folder):
                   
     manage_options = Folder.manage_options+(      manage_options = Folder.manage_options+(
         {'label':'Import Persons','action':'importNamesForm'},          {'label':'Import Persons','action':'importNamesForm'},
           {'label':'Main config','action':'changeMPIWGRootForm'},
           {'label':'Store Historical Persons','action':'storeHistoricalPersons'},
         )          )
           
     def importNamesForm(self):      def importNamesForm(self):
Line 163  class MPIWGRoot(Folder): Line 295  class MPIWGRoot(Folder):
   
         # Suche hoechste bisherige nummer          # Suche hoechste bisherige nummer
         projects=self.getProjectFields('xdata_05') # get Projects sorted by xdata_05          projects=self.getProjectFields('xdata_05') # get Projects sorted by xdata_05
           #print "pj",projects
         for project in projects: #suche alle subtrees der treeId          for project in projects: #suche alle subtrees der treeId
             #print treeId              #print treeId
                           
Line 173  class MPIWGRoot(Folder): Line 306  class MPIWGRoot(Folder):
                     try:                      try:
                         numbers.append(int(founds.group(0).split(".")[len(founds.group(0).split("."))-1]))                          numbers.append(int(founds.group(0).split(".")[len(founds.group(0).split("."))-1]))
                     except:                      except:
                         numbers.append(0)                          numbers.append(int(0))
         numbers.sort()  
         highest=int(numbers[len(numbers)-1])          try:
               highest=max(numbers)
           except:
               highest=0
         projects=self.showNewProjects()          projects=self.showNewProjects()
         for i in self.makeList(select):          for i in self.makeList(select):
             highest+=10              highest+=10
Line 386  class MPIWGProject(Folder): Line 522  class MPIWGProject(Folder):
         self.title=id          self.title=id
         if argv:          if argv:
             for arg in definedFields:              for arg in definedFields:
           try:
                 setattr(self,arg,argv[arg])                  setattr(self,arg,argv[arg])
           except:
               setattr(self,arg,"")
         else:          else:
             for arg in definedFields:              for arg in definedFields:
                 setattr(self,arg,'')                  setattr(self,arg,'')

Removed from v.1.5  
changed lines
  Added in v.1.8


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