summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBarry Warsaw2012-01-26 23:20:10 -0500
committerBarry Warsaw2012-01-26 23:20:10 -0500
commite6a261945e64201920c8c879615ac321739bce9f (patch)
treec1263ad797c93c1fa2e91482ab1a9b4add6669d0 /src
parent7a1c7652519841522246278daa3cbc121ded133c (diff)
downloadmailman-e6a261945e64201920c8c879615ac321739bce9f.tar.gz
mailman-e6a261945e64201920c8c879615ac321739bce9f.tar.zst
mailman-e6a261945e64201920c8c879615ac321739bce9f.zip
Diffstat (limited to 'src')
-rw-r--r--src/mailman/app/subscriptions.py2
-rw-r--r--src/mailman/interfaces/usermanager.py3
-rw-r--r--src/mailman/model/docs/usermanager.rst32
-rw-r--r--src/mailman/model/usermanager.py7
4 files changed, 43 insertions, 1 deletions
diff --git a/src/mailman/app/subscriptions.py b/src/mailman/app/subscriptions.py
index 668f97dbd..aa577c069 100644
--- a/src/mailman/app/subscriptions.py
+++ b/src/mailman/app/subscriptions.py
@@ -48,7 +48,7 @@ from mailman.model.member import Member
def _membership_sort_key(member):
- """Sort function for get_memberships().
+ """Sort function for get_members().
The members are sorted first by fully-qualified mailing list name,
then by subscribed email address, then by role.
diff --git a/src/mailman/interfaces/usermanager.py b/src/mailman/interfaces/usermanager.py
index b5e5d6551..364fdc6e7 100644
--- a/src/mailman/interfaces/usermanager.py
+++ b/src/mailman/interfaces/usermanager.py
@@ -110,3 +110,6 @@ class IUserManager(Interface):
addresses = Attribute(
"""An iterator over all the `IAddresses` managed by this manager.""")
+
+ members = Attribute(
+ """An iterator of all the `IMembers` in the database.""")
diff --git a/src/mailman/model/docs/usermanager.rst b/src/mailman/model/docs/usermanager.rst
index 12528bedf..8ad8d71a4 100644
--- a/src/mailman/model/docs/usermanager.rst
+++ b/src/mailman/model/docs/usermanager.rst
@@ -146,3 +146,35 @@ If a non-existent user id is given, None is returned.
>>> from uuid import UUID
>>> print user_manager.get_user_by_id(UUID(int=801))
None
+
+
+Finding all members
+===================
+
+The user manager can return all the members known to the system.
+
+ >>> mlist = create_list('test@example.com')
+ >>> mlist.subscribe(list(user_2.addresses)[0])
+ <Member: bperson@example.com on test@example.com as MemberRole.member>
+ >>> mlist.subscribe(user_manager.create_address('eperson@example.com'))
+ <Member: eperson@example.com on test@example.com as MemberRole.member>
+ >>> mlist.subscribe(user_manager.create_address('fperson@example.com'))
+ <Member: fperson@example.com on test@example.com as MemberRole.member>
+
+Bart is also the owner of the mailing list.
+
+ >>> from mailman.interfaces.member import MemberRole
+ >>> mlist.subscribe(list(user_2.addresses)[0], MemberRole.owner)
+ <Member: bperson@example.com on test@example.com as MemberRole.owner>
+
+There are now four members in the system. Sort them by address then role.
+
+ >>> def sort_key(member):
+ ... return (member.address.email, member.role.name)
+ >>> members = sorted(user_manager.members, key=sort_key)
+ >>> for member in members:
+ ... print member.mailing_list, member.address.email, member.role
+ test@example.com bperson@example.com MemberRole.member
+ test@example.com bperson@example.com MemberRole.owner
+ test@example.com eperson@example.com MemberRole.member
+ test@example.com fperson@example.com MemberRole.member
diff --git a/src/mailman/model/usermanager.py b/src/mailman/model/usermanager.py
index 2996b6fa4..0c5322987 100644
--- a/src/mailman/model/usermanager.py
+++ b/src/mailman/model/usermanager.py
@@ -31,6 +31,7 @@ from mailman.config import config
from mailman.interfaces.address import ExistingAddressError
from mailman.interfaces.usermanager import IUserManager
from mailman.model.address import Address
+from mailman.model.member import Member
from mailman.model.preferences import Preferences
from mailman.model.user import User
@@ -107,3 +108,9 @@ class UserManager:
"""See `IUserManager`."""
for address in config.db.store.find(Address):
yield address
+
+ @property
+ def members(self):
+ """See `IUserManager."""
+ for member in config.db.store.find(Member):
+ yield member