--- MPIWGWeb/MPIWGProjects.py 2004/05/24 10:29:15 1.7 +++ MPIWGWeb/MPIWGProjects.py 2004/05/28 16:45:06 1.8 @@ -51,12 +51,139 @@ class MPIWGRoot(Folder): folders=['MPIWGProject','Folder'] 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_xlast_y: + return -1 + else: + return 0 + + list.sort(sortLastName) + list.reverse() + + return list def __init__(self, id, title): """init""" self.id=id 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): """getListofFieldNames""" ret=[] @@ -104,6 +231,8 @@ class MPIWGRoot(Folder): manage_options = Folder.manage_options+( {'label':'Import Persons','action':'importNamesForm'}, + {'label':'Main config','action':'changeMPIWGRootForm'}, + {'label':'Store Historical Persons','action':'storeHistoricalPersons'}, ) def importNamesForm(self): @@ -166,7 +295,7 @@ class MPIWGRoot(Folder): # Suche hoechste bisherige nummer projects=self.getProjectFields('xdata_05') # get Projects sorted by xdata_05 - print "pj",projects + #print "pj",projects for project in projects: #suche alle subtrees der treeId #print treeId