From 5174f03994ab8363779d28745481f5b016c1108b Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 23 Aug 2018 03:37:25 -0400 Subject: [PATCH] Add support for sorting the results of a menu alphabetically. Signed-off-by: Roberto Rosario --- mayan/apps/navigation/classes.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/mayan/apps/navigation/classes.py b/mayan/apps/navigation/classes.py index 4e34aa389d..b5fe8f1482 100644 --- a/mayan/apps/navigation/classes.py +++ b/mayan/apps/navigation/classes.py @@ -150,7 +150,7 @@ class Menu(object): ) return resolved_navigation_object_list - def resolve(self, context, source=None): + def resolve(self, context, source=None, sort_results=False): if not self.check_condition(context=context): return [] @@ -250,10 +250,17 @@ class Menu(object): result.append(resolved_links) if result: - # Sort links by position value passed during bind - result[0] = sorted( - result[0], key=lambda item: (self.link_positions.get(item.link) or 0) if isinstance(item, ResolvedLink) else (self.link_positions.get(item) or 0) - ) + if sort_results: + result[0] = sorted( + result[0], key=lambda item: ( + item.link.text if isinstance(item, ResolvedLink) else item.label + ) + ) + else: + # Sort links by position value passed during bind + result[0] = sorted( + result[0], key=lambda item: (self.link_positions.get(item.link) or 0) if isinstance(item, ResolvedLink) else (self.link_positions.get(item) or 0) + ) return result