diff options
| author | Barry Warsaw | 2009-12-06 17:13:45 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2009-12-06 17:13:45 -0500 |
| commit | 795fda3981208376c6e0a9b42f412f9a4c158da4 (patch) | |
| tree | 5af64b01fc5a5c47a4c3a91aefd0b9cf5ff92fa3 /src | |
| parent | 49d5cdcd25627d639ca580a8d821414ef0be2c1f (diff) | |
| download | mailman-795fda3981208376c6e0a9b42f412f9a4c158da4.tar.gz mailman-795fda3981208376c6e0a9b42f412f9a4c158da4.tar.zst mailman-795fda3981208376c6e0a9b42f412f9a4c158da4.zip | |
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman/commands/docs/membership.txt | 29 | ||||
| -rw-r--r-- | src/mailman/commands/eml_membership.py | 12 | ||||
| -rw-r--r-- | src/mailman/interfaces/roster.py | 8 |
3 files changed, 44 insertions, 5 deletions
diff --git a/src/mailman/commands/docs/membership.txt b/src/mailman/commands/docs/membership.txt index c381be4ee..671d5109f 100644 --- a/src/mailman/commands/docs/membership.txt +++ b/src/mailman/commands/docs/membership.txt @@ -202,3 +202,32 @@ Anne is no longer a member of the mailing list. >>> print mlist_2.members.get_member('anne@example.com') None + +Anne does not need to leave a mailing list with the same email address she's +subscribe with. Any of her registered and linked email addresses will do. + + >>> from datetime import datetime + >>> anne = getUtility(IUserManager).get_user('anne@example.com') + >>> address = anne.register('anne.person@example.org') + >>> address.verified_on = datetime.now() + + >>> results = Results() + >>> print mlist.members.get_member('anne@example.com') + <Member: Anne Person <anne@example.com> + on alpha@example.com as MemberRole.member> + + >>> msg = message_from_string("""\ + ... To: alpha-leave@example.com + ... From: anne.person@example.org + ... + ... """) + >>> print command.process(mlist, msg, {}, (), results) + ContinueProcessing.yes + + >>> print unicode(results) + The results of your email command are provided below. + <BLANKLINE> + Anne Person <anne.person@example.org> left alpha@example.com + <BLANKLINE> + >>> print mlist.members.get_member('anne@example.com') + None diff --git a/src/mailman/commands/eml_membership.py b/src/mailman/commands/eml_membership.py index 7f61a4cb2..5b43276a8 100644 --- a/src/mailman/commands/eml_membership.py +++ b/src/mailman/commands/eml_membership.py @@ -153,8 +153,16 @@ class Leave: print >> results, _( '$self.name: No valid address found to unsubscribe') return ContinueProcessing.no - member = mlist.members.get_member(address) - if member is None: + user = getUtility(IUserManager).get_user(address) + if user is None: + print >> results, _('No registered user for address: $address') + return ContinueProcessing.no + for user_address in user.addresses: + member = mlist.members.get_member(user_address.address) + if member is not None: + break + else: + # None of the user's addresses are subscribed to this mailing list. print >> results, _( '$self.name: $address is not a member of $mlist.fqdn_listname') return ContinueProcessing.no diff --git a/src/mailman/interfaces/roster.py b/src/mailman/interfaces/roster.py index 9fb648be1..d729f232b 100644 --- a/src/mailman/interfaces/roster.py +++ b/src/mailman/interfaces/roster.py @@ -54,8 +54,10 @@ class IRoster(Interface): """) def get_member(address): - """Return the IMember for the given address. + """Get the member for the given address. - 'address' is a text email address. If no matching member is found, - None is returned. + :param address: The email address to search for. + :type address: text + :return: The member if found, otherwise None + :rtype: `IMember` or None """ |
