Mercurial > hg > MPIWGWeb
changeset 105:246d87d33f25
CLOSED - # 79: sortierung der liste der projekte pro abteilung
https://it-dev.mpiwg-berlin.mpg.de/tracs/webpage/ticket/79
author | casties |
---|---|
date | Mon, 27 May 2013 14:59:56 +0200 |
parents | cafdf06c77ce |
children | 7dd264f9b728 782477730916 |
files | HashTree.py MPIWGDepartment.py MPIWGProjects.py |
diffstat | 3 files changed, 28 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/HashTree.py Mon May 27 11:58:49 2013 +0200 +++ b/HashTree.py Mon May 27 14:59:56 2013 +0200 @@ -30,13 +30,18 @@ self.children[node.key] = node - def getSubtreeAsList(self): - """returns the subtree as flattened list sorted by key (depth first)""" + def getSubtreeAsList(self, depthFirst=True): + """Return the subtree as flattened list sorted by key.""" if self.children is None: - if self.value is None: + if depthFirst: + if self.value is None: + return [] + else: + return [self.value] + + else: + # breadth first - value has already been added return [] - else: - return [self.value] else: if self.value is None: @@ -44,10 +49,21 @@ else: sub = [self.value] - for k in sorted(self.children.keys()): - sub.extend(self.children.get(k).getSubtreeAsList()) + if depthFirst: + # depth first + for k in sorted(self.children.keys()): + sub.extend(self.children.get(k).getSubtreeAsList()) + + else: + # breadth first + clist = sorted(self.children.values(), key=lambda x:x.key) + # add all children + sub.extend([c.value for c in clist if c.value is not None]) + # then their children + for c in clist: + sub.extend(c.getSubtreeAsList(depthFirst=True)) - return sub + return sub def getSubtreeAsText(self):
--- a/MPIWGDepartment.py Mon May 27 11:58:49 2013 +0200 +++ b/MPIWGDepartment.py Mon May 27 14:59:56 2013 +0200 @@ -151,7 +151,7 @@ proj = pf.getProject(projectNumber=self.getProjectNumber()) return proj - def getProjects(self, count=0, active=0, archived=0): + def getProjects(self, count=0, active=0, archived=0, depthFirst=True): """returns a list of projects of this department. active = 0 : all projects @@ -163,7 +163,7 @@ archived = 2 : archived projects """ pf = self.getMPIWGRoot().getProjectFolder() - projects = pf.getProjectsAsList(self.getProjectNumber(), active=active, archived=archived) + projects = pf.getProjectsAsList(self.getProjectNumber(), active=active, archived=archived, depthFirst=depthFirst) #logging.debug("getProjects projects=%s"%repr(projects)) if count > 0: return projects[:count]
--- a/MPIWGProjects.py Mon May 27 11:58:49 2013 +0200 +++ b/MPIWGProjects.py Mon May 27 14:59:56 2013 +0200 @@ -1748,7 +1748,7 @@ return tree - def getProjectsAsList(self, start=None, active=1, archived=1): + def getProjectsAsList(self, start=None, active=1, archived=1, depthFirst=True): """Return flattened list of projects, starting from start. active = 0 : all projects @@ -1764,7 +1764,7 @@ if node is None: return [] - pl = node.getSubtreeAsList() + pl = node.getSubtreeAsList(depthFirst=depthFirst) # logging.debug("getProjectsAsList: node=(%s,%s) pl=%s"%(node.key,node.value,pl)) # return filtered list return [p for p in pl if (p.checkActive(active) and p.checkArchived(archived))]