diff options
| author | Barry Warsaw | 2012-01-26 23:20:10 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2012-01-26 23:20:10 -0500 |
| commit | e6a261945e64201920c8c879615ac321739bce9f (patch) | |
| tree | c1263ad797c93c1fa2e91482ab1a9b4add6669d0 /src | |
| parent | 7a1c7652519841522246278daa3cbc121ded133c (diff) | |
| download | mailman-e6a261945e64201920c8c879615ac321739bce9f.tar.gz mailman-e6a261945e64201920c8c879615ac321739bce9f.tar.zst mailman-e6a261945e64201920c8c879615ac321739bce9f.zip | |
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman/app/subscriptions.py | 2 | ||||
| -rw-r--r-- | src/mailman/interfaces/usermanager.py | 3 | ||||
| -rw-r--r-- | src/mailman/model/docs/usermanager.rst | 32 | ||||
| -rw-r--r-- | src/mailman/model/usermanager.py | 7 |
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 |
