[Freeipa-devel] [PATCH] sort group members

Kevin McCarthy kmccarth at redhat.com
Fri Sep 28 16:59:45 UTC 2007


Sort the group members for the group show and edit pages.

-Kevin

-------------- next part --------------
# HG changeset patch
# User Kevin McCarthy <kmccarth at redhat.com>
# Date 1190998744 25200
# Node ID ea4707434a517839c30c6f88f6ad302e91189e48
# Parent  a62a925a724305aa6094df2e0b1d729be569c53d
Sort the group members on the view and edit group pages.

diff -r a62a925a7243 -r ea4707434a51 ipa-server/ipa-gui/ipagui/controllers.py
--- a/ipa-server/ipa-gui/ipagui/controllers.py	Fri Sep 28 08:53:10 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/controllers.py	Fri Sep 28 09:59:04 2007 -0700
@@ -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)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 4054 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20070928/0d7e1173/attachment.bin>


More information about the Freeipa-devel mailing list