diff options
| author | Barry Warsaw | 2015-03-26 16:06:23 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2015-03-26 16:06:23 -0400 |
| commit | 4731ee37836df748285e3e86f74a7a58cc73d2f5 (patch) | |
| tree | 34db9b5cc29e56cc62733615807317d604e2f188 /src | |
| parent | af134a5f0555a8ae5098e73c6d75b0a99866e97f (diff) | |
| download | mailman-4731ee37836df748285e3e86f74a7a58cc73d2f5.tar.gz mailman-4731ee37836df748285e3e86f74a7a58cc73d2f5.tar.zst mailman-4731ee37836df748285e3e86f74a7a58cc73d2f5.zip | |
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman/app/docs/chains.rst | 1 | ||||
| -rw-r--r-- | src/mailman/model/mailinglist.py | 2 | ||||
| -rw-r--r-- | src/mailman/rest/docs/membership.rst | 13 | ||||
| -rw-r--r-- | src/mailman/rules/docs/moderation.rst | 7 | ||||
| -rw-r--r-- | src/mailman/runners/docs/incoming.rst | 4 | ||||
| -rw-r--r-- | src/mailman/testing/helpers.py | 21 |
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) |
