--- MPIWGWeb/MPIWGProjects.py 2004/07/08 07:04:31 1.12 +++ MPIWGWeb/MPIWGProjects.py 2004/08/24 13:26:03 1.22 @@ -29,7 +29,11 @@ def sortF(x,y): try: return cmp(x[1],y[1]) except: - return 0 + try: + return cmp(str(x[1]),str(y[1])) + except: + print "error",x[1],y[1] + return 0 def sortI(x,y): xsplit=x[1].split(".") @@ -80,28 +84,39 @@ class MPIWGRoot(ZSQLExtendFolder): """format""" return formatBibliography(here,found) - def getValue(self,field): + def getValue(self,fieldStr): """Inhalt des Feldes""" - - if type(field)==StringType: - try: - if field[len(field)-1]==";": - field=field[0:len(text)-1] - except: - """nothing""" - - return field.encode('utf-8') + if type(fieldStr)==StringType: + field=fieldStr else: - return field[0].encode('utf-8') + field=fieldStr[0] + try: + if field[len(field)-1]==";": + field=field[0:len(field)-1] + except: + + """nothing""" + field=re.sub(r';([^\s])','; \g<1>',field) + return field.encode('utf-8') + def sortedNames(self,list): """sort names""" def sortLastName(x_c,y_c): - x=urllib.unquote(x_c) - y=urllib.unquote(y_c) + try: + x=urllib.unquote(x_c).encode('utf-8','ignore') + except: + x=urllib.unquote(x_c) + + try: + y=urllib.unquote(y_c).encode('utf-8','ignore') + except: + x=urllib.unquote(y_c) + + try: last_x=x.split()[len(x.split())-1] @@ -198,6 +213,16 @@ class MPIWGRoot(ZSQLExtendFolder): 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('Products/MPIWGWeb/zpt/showHistoricalPersons').__of__(self) @@ -263,7 +288,7 @@ class MPIWGRoot(ZSQLExtendFolder): if re.match(searchStr,project[1]): if depth: - print "ho" + if int(depth)>=len(project[1].split("."))-len(childs.split(".")): ret.append(project) @@ -362,7 +387,7 @@ class MPIWGRoot(ZSQLExtendFolder): for x in self.ZopeFind(self.members,obj_metatypes=['MPIWGStaff']): ret.append(x[1].title.decode('utf-8')) - #ret.sort() + ret.sort() #print ret return ret @@ -393,12 +418,24 @@ class MPIWGRoot(ZSQLExtendFolder): splittedId=idNr.split(".") depth=len(splittedId) nr=idNr - title=project[0].WEB_title - + #title=project[0].WEB_title + title=[project[0].getContent('WEB_title')] + #print title returnList.append((depth,nr,title,project[0])) return returnList + def formatElementForOverview(self,element): + """format the element for output in overview""" + if element[0]==1: #department + return """

Department %s: %s

"""%(element[3].absolute_url(),element[3].getContent('xdata_05'),element[3].getContent('WEB_title')) + + elif element[0]==2: #mainprojects + return """

%s

"""%(element[3].absolute_url(),element[3].getContent('WEB_title')) + + elif element[0]==3: + return """

%s

"""%(element[3].absolute_url(),element[3].getContent('WEB_title')) + def changePosition(self,treeId,select,RESPONSE=None): """Change Postion Entry""" numbers=[] @@ -457,6 +494,35 @@ class MPIWGRoot(ZSQLExtendFolder): + def getRelativeUrlFromPerson(self,list): + """get urls to person list""" + ret=[] + persons=list.split(";") + for person in persons: + + if len(person)>1: #nicht nur Trennzeichen + splitted=person.split(",") + if len(splitted)==1: + splitted=person.split(" ") + splittedNew=[re.sub(r'\s(.*)','$1',split) for split in splitted] + if splittedNew[0]=='': + del splittedNew[0] + search=string.join(splittedNew,' AND ') + + if not search=='': + + try: + proj=self.MembersCatalog({'title':search}) + except: + proj=None + + if proj: + #ret.append("%s"%(proj[0].absolute_url,person.encode('utf-8'))) + ret.append("%s"%('members/'+proj[0].id,person)) + else: + #ret.append("%s"%person.encode('utf-8')) + ret.append("%s"%person) + return string.join(ret,";") def getUrlFromPerson(self,list): @@ -496,17 +562,17 @@ class MPIWGRoot(ZSQLExtendFolder): #return str(members) for x in members: ret+=self.getProjectsOfMember(name=x) - + return ret def getProjectsOfMember(self,name=None,email=None): """get project of a member""" def sortP(x,y): """sort by sorting number""" - - return cmp(x.xdata_05,y.xdata_05) + #print x.xdata_05,y.xdata_05 + return cmp(x.WEB_title,y.WEB_title) - + ret=[] splitNeu=[] if email: @@ -522,16 +588,24 @@ class MPIWGRoot(ZSQLExtendFolder): proj=self.ProjectCatalog({'xdata_01':search}) if proj: proj2=[x for x in proj] - proj2.sort(sortP) - ret.append((y,proj2)) - + # proj2.sort(sortP) + # ret.append((y,proj2)) + else: + proj2=[] + proj=self.ProjectCatalog({'xdata_08':search}) if proj: - proj2=[x for x in proj] - proj2.sort(sortP) + names=[x.WEB_title for x in proj] + for x in proj: + if not x.WEB_title in names: + proj2.append(x) + + + proj2.sort(sortP) + + if len(proj2)>0: ret.append((y,proj2)) - return ret def givePersonList(self,name): @@ -691,7 +765,8 @@ class MPIWGProject(Folder): """giveListofDatafields""" ret=[] for x in range(1,14): - ret.append('xdata_%02i'%x) + if not x in [6,10,9]: # not used fields + ret.append('xdata_%02i'%x) return ret def getDefinedFields(self): @@ -717,17 +792,23 @@ class MPIWGProject(Folder): try: text =x.encode('utf-8') except: - text="ERROR" + text=x.decode('latin-1').encode('utf-8') #delete separator (;) if is there is one + ## try: +## print text, text[len(text)-1] +## except: +## print "error:",text try: if text[len(text)-1]==";": - text=text[0:len(text)-1].encode('utf-8') + text=text[0:len(text)-1] + + except: """nothing""" - - return text + text2=re.sub(r';([^\s])','; \g<1>',text) + return text2 def show_html(self): """simple index""" @@ -742,7 +823,7 @@ class MPIWGProject(Folder): def editMPIWGProject(self,RESPONSE=None): """edit the project""" - + #return self.REQUEST for x in definedFields: if self.REQUEST.has_key(x): @@ -840,15 +921,15 @@ def manage_addMPIWGProjectForm(self): def manage_addMPIWGProject(self,id,RESPONSE=None): """method to add a project""" #print argv - if self.REQUEST.has_key('fileupload'): - fileupload=self.REQUEST['fileupload'] - if fileupload: - file_name=fileupload.filename - filedata=fileupload.read() - - argv=xmlhelper.proj2hash(filedata) - - #print argv + fileupload=self.REQUEST.get('fileupload',None) + if fileupload: + print fileupload + file_name=fileupload.filename + filedata=fileupload.read() + + argv=xmlhelper.proj2hash(filedata) + + #print argv newObj=MPIWGProject(id,argv) else: newObj=MPIWGProject(id)