Add support for sorting the results of a menu alphabetically.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2018-08-23 03:37:25 -04:00
parent 12cfdafecf
commit 5174f03994

View File

@@ -150,7 +150,7 @@ class Menu(object):
) )
return resolved_navigation_object_list 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): if not self.check_condition(context=context):
return [] return []
@@ -250,6 +250,13 @@ class Menu(object):
result.append(resolved_links) result.append(resolved_links)
if result: if result:
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 # Sort links by position value passed during bind
result[0] = sorted( 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) 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)