summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mailman/rest/addresses.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/mailman/rest/addresses.py b/src/mailman/rest/addresses.py
index 5d479d9cb..d0b0fa1c9 100644
--- a/src/mailman/rest/addresses.py
+++ b/src/mailman/rest/addresses.py
@@ -137,6 +137,11 @@ class UserAddresses(_AddressBase):
+def membership_key(member):
+ # Sort first by mailing list, then by address, then by role.
+ return member.mailing_list, member.address.email, int(member.role)
+
+
class AddressMemberships(MemberCollection):
"""All the memberships of a particular email address."""
@@ -157,5 +162,6 @@ class AddressMemberships(MemberCollection):
user = getUtility(IUserManager).get_user(self._address.email)
if user is None:
return []
- return [member for member in user.memberships.members
- if member.address == self._address]
+ return sorted((member for member in user.memberships.members
+ if member.address == self._address),
+ key=membership_key)