aboutsummaryrefslogtreecommitdiffstats
path: root/Mailman/MailList.py
diff options
context:
space:
mode:
authorYasuhito FUTATSUKI at POEM <futatuki@poem.co.jp>2020-01-13 09:13:27 +0900
committerYasuhito FUTATSUKI at POEM <futatuki@poem.co.jp>2020-01-13 09:13:27 +0900
commit94c85073d1ec6ab111efd2dc6d036d00995cabaa (patch)
tree3004c08c04d1204707deef485a1cf5000efaffd5 /Mailman/MailList.py
parentbfb97f9086b505020158225cfab9964bb4b88f35 (diff)
parent6dc4f98f42535c22a3805370c5d45706f40db37d (diff)
downloadmailman2-94c85073d1ec6ab111efd2dc6d036d00995cabaa.tar.gz
mailman2-94c85073d1ec6ab111efd2dc6d036d00995cabaa.tar.xz
mailman2-94c85073d1ec6ab111efd2dc6d036d00995cabaa.zip
merge lp:mailman/2.1 up to 1832 (2.1.30rc1)
Diffstat (limited to 'Mailman/MailList.py')
-rw-r--r--Mailman/MailList.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/Mailman/MailList.py b/Mailman/MailList.py
index 12d75aff..9e6bbcb6 100644
--- a/Mailman/MailList.py
+++ b/Mailman/MailList.py
@@ -833,6 +833,25 @@ class MailList(HTMLFormatter, Deliverer, ListAdmin,
#
# Membership management front-ends and assertion checks
#
+ def CheckPending(self, email):
+ """Check if there is already an unexpired pending subscription for
+ this email.
+ """
+ if not mm_cfg.REFUSE_SECOND_PENDING:
+ return False
+ pends = self._Pending__load()
+ # Save and reload the db to evict expired pendings.
+ self._Pending__save(pends)
+ pends = self._Pending__load()
+ for k, v in pends.items():
+ if k in ('evictions', 'version'):
+ continue
+ op, data = v
+ if (op == Pending.SUBSCRIPTION and
+ data.address.lower() == email.lower()):
+ return True
+ return False
+
def InviteNewMember(self, userdesc, text=''):
"""Invite a new member to the list.
@@ -919,6 +938,8 @@ class MailList(HTMLFormatter, Deliverer, ListAdmin,
Utils.ValidateEmail(email)
if self.isMember(email):
raise Errors.MMAlreadyAMember, email
+ if self.CheckPending(email):
+ raise Errors.MMAlreadyPending, email
if email.lower() == self.GetListEmail().lower():
# Trying to subscribe the list to itself!
raise Errors.MMBadEmailError