--- MPIWGWeb/Attic/MPIWGRoot.py 2008/08/28 15:18:49 1.1.2.5 +++ MPIWGWeb/Attic/MPIWGRoot.py 2008/08/28 18:20:09 1.1.2.6 @@ -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' @@ -68,7 +85,6 @@ class MPIWGRoot(ZSQLExtendFolder): return ret - def harvestProjects(self): """harvest""" folder="/tmp" @@ -265,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""" @@ -485,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): @@ -512,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"""