summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAditya2016-05-31 10:51:24 -0700
committerAditya2016-05-31 10:51:24 -0700
commit964699645d2603bef0a83d92d08cc4449a00499a (patch)
treec1d1ccf1eb29a56bc78a4e7cffe69f2605db81bc
parent6e6d041cf0c069ba25ce174e6dc431595e0a7222 (diff)
downloadmailman-964699645d2603bef0a83d92d08cc4449a00499a.tar.gz
mailman-964699645d2603bef0a83d92d08cc4449a00499a.tar.zst
mailman-964699645d2603bef0a83d92d08cc4449a00499a.zip
Remove nonmember subscriptions if susbcribed as member.
On subscribing an address as a member, we check if the related user is subscribed as a nonmember through any address. If yes, we remove the nonmember subscription.
-rw-r--r--src/mailman/app/membership.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mailman/app/membership.py b/src/mailman/app/membership.py
index 8ded39388..6e6ceb942 100644
--- a/src/mailman/app/membership.py
+++ b/src/mailman/app/membership.py
@@ -90,6 +90,12 @@ def add_member(mlist, record, role=MemberRole.member):
error.fqdn_listname, record.email, error.role)
member.preferences.preferred_language = record.language
member.preferences.delivery_mode = record.delivery_mode
+ # Check and remove nonmember subscriptions of the user to this list
+ # if any.
+ for address in user.addresses:
+ nonmember = mlist.nonmembers.get_member(address.email)
+ if nonmember is not None:
+ nonmember.unsubscribe()
return member