summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbwarsaw2002-07-11 16:18:39 +0000
committerbwarsaw2002-07-11 16:18:39 +0000
commita15564007473d08305892b71eb3b49f5aed2ed84 (patch)
tree04724269b56130b165658ccd3a593be41b5f863d
parent3e164316f06ef7a2570ad2fab13ad362443ca6d2 (diff)
downloadmailman-a15564007473d08305892b71eb3b49f5aed2ed84.tar.gz
mailman-a15564007473d08305892b71eb3b49f5aed2ed84.tar.zst
mailman-a15564007473d08305892b71eb3b49f5aed2ed84.zip
ApprovedChangeMemberAddress(): Watch out for situations where the new
address is already a member and don't make the address change in that case. However, if the old address is still a member, we'll just delete it.
-rw-r--r--Mailman/MailList.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/Mailman/MailList.py b/Mailman/MailList.py
index 8d0e11c51..0e15511e5 100644
--- a/Mailman/MailList.py
+++ b/Mailman/MailList.py
@@ -996,7 +996,12 @@ class MailList(HTMLFormatter, Deliverer, ListAdmin,
def ApprovedChangeMemberAddress(self, oldaddr, newaddr, globally):
# Change the membership for the current list first. We don't lock and
# save ourself since we assume that the list is already locked.
- self.changeMemberAddress(oldaddr, newaddr)
+ if self.isMember(newaddr):
+ # Just delete the old address
+ if self.isMember(oldaddr):
+ self.ApprovedDeleteMember(oldaddr, admin_notif=1, userack=1)
+ else:
+ self.changeMemberAddress(oldaddr, newaddr)
# If globally is true, then we also include every list for which
# oldaddr is a member.
if not globally: