summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mailman/app/docs/chains.rst1
-rw-r--r--src/mailman/model/mailinglist.py2
-rw-r--r--src/mailman/rest/docs/membership.rst13
-rw-r--r--src/mailman/rules/docs/moderation.rst7
-rw-r--r--src/mailman/runners/docs/incoming.rst4
-rw-r--r--src/mailman/testing/helpers.py21
6 files changed, 40 insertions, 8 deletions
diff --git a/src/mailman/app/docs/chains.rst b/src/mailman/app/docs/chains.rst
index 1feecbd68..a79999de0 100644
--- a/src/mailman/app/docs/chains.rst
+++ b/src/mailman/app/docs/chains.rst
@@ -302,6 +302,7 @@ This message will end up in the `pipeline` queue.
>>> from mailman.testing.helpers import subscribe
>>> subscribe(mlist, 'Anne')
+ <Member: aperson@example.com on test@example.com as MemberRole.member>
>>> with event_subscribers(print_msgid):
... process(mlist, msg, {})
diff --git a/src/mailman/model/mailinglist.py b/src/mailman/model/mailinglist.py
index a204d54cd..0806ce398 100644
--- a/src/mailman/model/mailinglist.py
+++ b/src/mailman/model/mailinglist.py
@@ -455,6 +455,8 @@ class MailingList(Model):
return self.owners
elif role is MemberRole.moderator:
return self.moderators
+ elif role is MemberRole.nonmember:
+ return self.nonmembers
else:
raise TypeError('Undefined MemberRole: {}'.format(role))
diff --git a/src/mailman/rest/docs/membership.rst b/src/mailman/rest/docs/membership.rst
index 0343f40a1..3cb83a0c8 100644
--- a/src/mailman/rest/docs/membership.rst
+++ b/src/mailman/rest/docs/membership.rst
@@ -39,6 +39,9 @@ the REST interface.
>>> from mailman.testing.helpers import subscribe
>>> subscribe(bee, 'Bart')
+ <Member: Bart Person <bperson@example.com> on bee@example.com
+ as MemberRole.member>
+
>>> dump_json('http://localhost:9001/3.0/members')
entry 0:
address: http://localhost:9001/3.0/addresses/bperson@example.com
@@ -69,8 +72,12 @@ Bart's specific membership can be accessed directly:
When Cris also joins the mailing list, her subscription is also available via
the REST interface.
+::
>>> subscribe(bee, 'Cris')
+ <Member: Cris Person <cperson@example.com> on bee@example.com
+ as MemberRole.member>
+
>>> dump_json('http://localhost:9001/3.0/members')
entry 0:
address: http://localhost:9001/3.0/addresses/bperson@example.com
@@ -101,6 +108,8 @@ subscribes, she is returned first.
::
>>> subscribe(bee, 'Anna')
+ <Member: Anna Person <aperson@example.com> on bee@example.com
+ as MemberRole.member>
>>> dump_json('http://localhost:9001/3.0/members')
entry 0:
@@ -143,7 +152,11 @@ address. Anna and Cris subscribe to this new mailing list.
>>> ant = create_list('ant@example.com')
>>> subscribe(ant, 'Anna')
+ <Member: Anna Person <aperson@example.com> on ant@example.com
+ as MemberRole.member>
>>> subscribe(ant, 'Cris')
+ <Member: Cris Person <cperson@example.com> on ant@example.com
+ as MemberRole.member>
User ids are different than member ids.
diff --git a/src/mailman/rules/docs/moderation.rst b/src/mailman/rules/docs/moderation.rst
index 5631c882d..401004f34 100644
--- a/src/mailman/rules/docs/moderation.rst
+++ b/src/mailman/rules/docs/moderation.rst
@@ -26,6 +26,9 @@ postings are not moderated.
>>> from mailman.testing.helpers import subscribe
>>> subscribe(mlist, 'Anne')
+ <Member: Anne Person <aperson@example.com> on test@example.com
+ as MemberRole.member>
+
>>> member = mlist.members.get_member('aperson@example.com')
>>> print(member.moderation_action)
Action.defer
@@ -66,9 +69,13 @@ postings are held for moderator approval.
nonmember-moderation
Bart, who is not a member of the mailing list, sends a message to the list.
+::
>>> from mailman.interfaces.member import MemberRole
>>> subscribe(mlist, 'Bart', MemberRole.nonmember)
+ <Member: Bart Person <bperson@example.com> on test@example.com
+ as MemberRole.nonmember>
+
>>> nonmember = mlist.nonmembers.get_member('bperson@example.com')
>>> print(nonmember.moderation_action)
Action.hold
diff --git a/src/mailman/runners/docs/incoming.rst b/src/mailman/runners/docs/incoming.rst
index d4fb65c85..fa425980b 100644
--- a/src/mailman/runners/docs/incoming.rst
+++ b/src/mailman/runners/docs/incoming.rst
@@ -89,9 +89,13 @@ Accepted messages
We have a message that is going to be sent to the mailing list. Once Anne is
a member of the mailing list, this message is so perfectly fine for posting
that it will be accepted and forward to the pipeline queue.
+::
>>> from mailman.testing.helpers import subscribe
>>> subscribe(mlist, 'Anne')
+ <Member: Anne Person <aperson@example.com> on test@example.com
+ as MemberRole.member>
+
>>> msg = message_from_string("""\
... From: aperson@example.com
... To: test@example.com
diff --git a/src/mailman/testing/helpers.py b/src/mailman/testing/helpers.py
index a869c8d55..8fa4fbd2f 100644
--- a/src/mailman/testing/helpers.py
+++ b/src/mailman/testing/helpers.py
@@ -435,10 +435,14 @@ class chdir:
-def subscribe(mlist, first_name, role=MemberRole.member):
- """Helper for subscribing a sample person to a mailing list."""
+def subscribe(mlist, first_name, role=MemberRole.member, email=None):
+ """Helper for subscribing a sample person to a mailing list.
+
+ Returns the newly created member object.
+ """
user_manager = getUtility(IUserManager)
- email = '{0}person@example.com'.format(first_name[0].lower())
+ email = ('{0}person@example.com'.format(first_name[0].lower())
+ if email is None else email)
full_name = '{0} Person'.format(first_name)
with transaction():
person = user_manager.get_user(email)
@@ -446,13 +450,14 @@ def subscribe(mlist, first_name, role=MemberRole.member):
address = user_manager.get_address(email)
if address is None:
person = user_manager.create_user(email, full_name)
- preferred_address = list(person.addresses)[0]
- mlist.subscribe(preferred_address, role)
+ subscription_address = list(person.addresses)[0]
else:
- mlist.subscribe(address, role)
+ subscription_address = address
else:
- preferred_address = list(person.addresses)[0]
- mlist.subscribe(preferred_address, role)
+ subscription_address = list(person.addresses)[0]
+ mlist.subscribe(subscription_address, role)
+ roster = mlist.get_roster(role)
+ return roster.get_member(email)