summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mailman/interfaces/member.py3
-rw-r--r--src/mailman/model/docs/membership.txt8
-rw-r--r--src/mailman/model/member.py5
3 files changed, 15 insertions, 1 deletions
diff --git a/src/mailman/interfaces/member.py b/src/mailman/interfaces/member.py
index d20580498..a5e693411 100644
--- a/src/mailman/interfaces/member.py
+++ b/src/mailman/interfaces/member.py
@@ -127,6 +127,9 @@ class IMember(Interface):
address = Attribute(
"""The email address that's subscribed to the list.""")
+ user = Attribute(
+ """The user associated with this member.""")
+
preferences = Attribute(
"""This member's preferences.""")
diff --git a/src/mailman/model/docs/membership.txt b/src/mailman/model/docs/membership.txt
index 2fb66ca82..6f5b82622 100644
--- a/src/mailman/model/docs/membership.txt
+++ b/src/mailman/model/docs/membership.txt
@@ -102,10 +102,16 @@ role.
>>> user_3 = user_manager.create_user(
... 'cperson@example.com', 'Cris Person')
>>> address_3 = list(user_3.addresses)[0]
- >>> address_3.subscribe(mlist, MemberRole.member)
+ >>> member = address_3.subscribe(mlist, MemberRole.member)
+ >>> member
<Member: Cris Person <cperson@example.com>
on test@example.com as MemberRole.member>
+Cris's user record can also be retrieved from her member record.
+
+ >>> member.user
+ <User "Cris Person" (3) at ...>
+
Cris will be a regular delivery member but not a digest member.
>>> dump_members(mlist.members.members)
diff --git a/src/mailman/model/member.py b/src/mailman/model/member.py
index 5e8619324..d32c586d9 100644
--- a/src/mailman/model/member.py
+++ b/src/mailman/model/member.py
@@ -35,6 +35,7 @@ from mailman.database.types import Enum
from mailman.interfaces.action import Action
from mailman.interfaces.listmanager import IListManager
from mailman.interfaces.member import IMember, MemberRole
+from mailman.interfaces.usermanager import IUserManager
@@ -70,6 +71,10 @@ class Member(Model):
return '<Member: {0} on {1} as {2}>'.format(
self.address, self.mailing_list, self.role)
+ @property
+ def user(self):
+ return getUtility(IUserManager).get_user(self.address.email)
+
def _lookup(self, preference):
pref = getattr(self.preferences, preference)
if pref is not None: