--- MPIWGWeb/Attic/MPIWGRoot.py 2008/06/24 11:16:27 1.1.2.1 +++ MPIWGWeb/Attic/MPIWGRoot.py 2008/08/29 07:31:05 1.1.2.7 @@ -30,16 +30,33 @@ import updatePersonalWWW import MPIWGStaff from MPIWGHelper import * + +def sortWeight(x,y): + x1=int(getattr(x[1],'weight','0')) + y1=int(getattr(y[1],'weight','0')) + return cmp(x1,y1) + + class MPIWGRoot(ZSQLExtendFolder): """Stammordner fuer den Web-Server""" - fieldLabels={'WEB_title':'WEB_Title','xdata_01':'Responsible Scientists','xdata_02':'Department', - 'xdata_03':'Historical Persons','xdata_04':'Time period', - 'xdata_05':'Sorting number','xdata_06':'Keywords','xdata_07':'Short title', - 'xdata_08':'Other involved scholars' ,'xdata_09':'Disciplines','xdata_10':'Themes', - 'xdata_11':'Object Digitallibrary','xdata_12':'Cooperation partners', - 'xdata_13':'Funding institutions','WEB_project_header':'WEB_project_header', - 'WEB_project_description':'WEB_project_description','WEB_related_pub':'WEB_related_pub'} + fieldLabels={'WEB_title':'WEB_Title', + 'xdata_01':'Responsible Scientists', + 'xdata_02':'Department', + 'xdata_03':'Historical Persons', + 'xdata_04':'Time period', + 'xdata_05':'Sorting number', + 'xdata_06':'Keywords', + 'xdata_07':'Short title', + 'xdata_08':'Other involved scholars' , + 'xdata_09':'Disciplines', + 'xdata_10':'Themes', + 'xdata_11':'Object Digitallibrary', + 'xdata_12':'Cooperation partners', + 'xdata_13':'Funding institutions', + 'WEB_project_header':'WEB_project_header', + 'WEB_project_description':'WEB_project_description', + 'WEB_related_pub':'WEB_related_pub'} folders=['MPIWGProject','Folder','ECHO_Navigation'] meta_type='MPIWGRoot' @@ -56,7 +73,7 @@ class MPIWGRoot(ZSQLExtendFolder): proj.responsibleScientistsList=[] for person in persons.items(): - logging.info("XXXX"+repr(person)) + if len(person[1]) >1: #nicht eindeutig ret+="nicht eindeutig --- %s: %s\n"%(proj.getId(),person[0]) @@ -87,6 +104,7 @@ class MPIWGRoot(ZSQLExtendFolder): def decode(self,str): """decoder""" + if not str: return "" if type(str) is StringType: @@ -263,21 +281,13 @@ class MPIWGRoot(ZSQLExtendFolder): return True return False - def getSection(self): - """returns the current section name""" - root = self.absolute_url() - url = self.REQUEST['URL'] - if not url: - return None - path = string.replace(url, root, '') - paths = path.split('/') - if len(paths) > 0: - sec = paths[1] - if sec.find('.') < 0: - return sec - else: - return None - return None + + def getSections(self): + """returns a list of all sections i.e. top-level MPIWGFolders""" + secs = self.objectItems(['MPIWGFolder']) + secs.sort(sortWeight) + #logging.debug("root: %s secs: %s"%(repr(self.absolute_url()), repr(secs))) + return secs def getSectionStyle(self, name, style=""): """returns a string with the given style + '-sel' if the current section == name""" @@ -310,7 +320,7 @@ class MPIWGRoot(ZSQLExtendFolder): def replaceNotEmpty(self,format,field): """replace not empty""" if field and (not field.lstrip()==''): - return format%field + return self.decode(format%field) else: return "" @@ -483,18 +493,22 @@ class MPIWGRoot(ZSQLExtendFolder): RESPONSE.redirect('manage_main') - def getContexts(self,childs=None,parents=None,depth=None,date=None,onlyActive=True): """childs alle childs, alle parents""" ret=[] if parents: - splitted=parents.split(".") - parentId=string.join(splitted[0:len(splitted)-1],".") - - for project in self.getProjectFields('xdata_05',sort='int',date=date): - if project[1]==parentId: - ret.append(project) + pnums=parents.split(".") + while len(pnums) > 1: + pnums.pop() + parentId=string.join(pnums,".") + + for project in self.getProjectFields('xdata_05',sort='int',date=date): + if project[1]==parentId: + ret.append(project) + + if (depth is not None) and (len(ret) >= depth): + break if childs: for project in self.getProjectFields('xdata_05',sort='int',date=date): @@ -510,7 +524,10 @@ class MPIWGRoot(ZSQLExtendFolder): ret.append(project) else: ret.append(project) + + logging.debug("getContexts: childs=%s parents=%s depth=%s => %s"%(childs,parents,depth,repr(ret))) return ret + def getProjectFields(self,fieldName,date=None,folder=None,sort=None): """getListofFieldNames""" @@ -844,6 +861,25 @@ class MPIWGRoot(ZSQLExtendFolder): else: return entry + def getTreeRSS(self,dep=None,date=None,onlyActive=1,onlyArchived=0): + """generateTree""" + rss=""" + + """ + + for obj in self.getTree(dep, date, onlyActive, onlyArchived): + linkStr="""http://wwwneu.mpiwg-berlin.mpg.de/en/research/projects/%s""" + rss+="""""" + rss+=linkStr%obj[3].getId() + if hasattr(obj[3],'publicationList'): + rss+=linkStr%obj[3].getId()+"/publicationList"; + rss+="""""" + + rss+=""" + """ + + + return rss def getTree(self,dep=None,date=None,onlyActive=0,onlyArchived=0): """generate Tree from project list @@ -972,6 +1008,11 @@ class MPIWGRoot(ZSQLExtendFolder): logging.info("Changed!Completed+++++++++++++++++++++++++++++++++") entryChanged = True + if not (fields[nr][3].getStartedAt()==fields[nr][3].transformDate(form[str(nr)+'_started'])): + fields[nr][3].setStartedAt(form[str(nr)+'_started']) + logging.info("Changed!Started+++++++++++++++++++++++++++++++++") + entryChanged = True + if entryChanged: logging.info("Changed!+++++++++++++++++++++++++++++++++") @@ -1035,76 +1076,7 @@ class MPIWGRoot(ZSQLExtendFolder): -# def getMembersFromList(self,list): -# """get member names from person full text list""" -# memberlist=[] -# persons=list.split(";") -# for person in persons: -# if len(person)>1: #nicht nur Trennzeichen -# splitted=person.split(",") -# if len(splitted)==1: -# splitted=person.lstrip().rstrip().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: -# -# member=self.MembersCatalog({'title':search}) -# -# except: -# member=None -# if member: -# logging.error("search publ %s:"%member[0].getObject().isPublished()) -# if member and (member[0].getObject().isPublished()): -# if person =="Otto Sibum" : person="H. Otto Sibum" -# if person =="Norton Wise" : person="M. Norton Wise" -# -# #memberlist.append("%s"%(member[0].absolute_url,person.encode('utf-8'))) -# memberlist.append((person, member[0].getObject().getId())) -# else: -# #memberlist.append("%s"%person.encode('utf-8')) -# memberlist.append((person,None)) -# return memberlist - -# def getUrlFromPerson(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.lstrip().rstrip().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 and (proj[0].getObject().isPublished()): -# if person =="Otto Sibum" : person="H. Otto Sibum" -# if person =="Norton Wise" : person="M. Norton Wise" -# #ret.append("%s"%(proj[0].absolute_url,person.encode('utf-8'))) -# if self.MPIWGrootURL().split("/")[-1]=='en': -# tmpPath="/en/staff/members/" -# else: -# tmpPath="/de/mitarbeiter/members/" -# ret.append("%s"%(tmpPath+proj[0].getObject().getId()+"/index.html",person)) -# else: -# #ret.append("%s"%person.encode('utf-8')) -# ret.append("%s"%person) -# return string.join(ret,";") -# + def getProjectsOfMembers(self,date=None): """give tuple member /projects""" ret=[]