From 8323959c3c4f7a4c561b695fc8ef85c5c92918a7 Mon Sep 17 00:00:00 2001 From: Kevin McCarthy Date: Fri, 28 Sep 2007 09:59:04 -0700 Subject: Sort the group members on the view and edit group pages. --- ipa-server/ipa-gui/ipagui/controllers.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/ipa-server/ipa-gui/ipagui/controllers.py b/ipa-server/ipa-gui/ipagui/controllers.py index b72afdefb..a982cb593 100644 --- a/ipa-server/ipa-gui/ipagui/controllers.py +++ b/ipa-server/ipa-gui/ipagui/controllers.py @@ -48,6 +48,36 @@ def utf8_encode(value): value = value.encode('utf-8') return value +def sort_group_member(a, b): + """Comparator function used for sorting group members.""" + if a.get('uid') and b.get('uid'): + if a.get('givenname', '') == b.get('givenname', ''): + if a.get('sn', '') == b.get('sn', ''): + if a.get('uid') == b.get('uid'): + return 0 + elif a.get('uid') < b.get('uid'): + return -1 + else: + return 1 + elif a.get('sn', '') < b.get('sn', ''): + return -1 + else: + return 1 + elif a.get('givenname') < b.get('givenname'): + return -1 + else: + return 1 + elif a.get('uid'): + return -1 + elif b.get('uid'): + return 1 + else: + if a.get('cn', '') == b.get('cn', ''): + return 0 + elif a.get('cn', '') < b.get('cn', ''): + return -1 + else: + return 1 class Root(controllers.RootController): @@ -484,6 +514,7 @@ class Root(controllers.RootController): # Map users into an array of dicts, which can be serialized # (so we don't have to do this on each round trip) member_dicts = map(lambda member: member.toDict(), members) + member_dicts.sort(sort_group_member) # store a copy of the original group for the update later group_data = b64encode(dumps(group_dict)) @@ -649,6 +680,7 @@ class Root(controllers.RootController): 'uid', 'cn']), member_dns) member_dicts = map(lambda member: member.toDict(), members) + member_dicts.sort(sort_group_member) return dict(group=group_dict, fields=forms.group.GroupFields(), members = member_dicts) -- cgit