summaryrefslogtreecommitdiff
path: root/Mailman/OldStyleMemberships.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mailman/OldStyleMemberships.py')
-rw-r--r--Mailman/OldStyleMemberships.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/Mailman/OldStyleMemberships.py b/Mailman/OldStyleMemberships.py
index 3a69a2dfc..2a72b8928 100644
--- a/Mailman/OldStyleMemberships.py
+++ b/Mailman/OldStyleMemberships.py
@@ -213,7 +213,7 @@ class OldStyleMemberships(MemberAdaptor.MemberAdaptor):
value = 0
else:
value = member
- member = member.lower()
+ member = member.lower()
if digest:
self.__mlist.digest_members[member] = value
else:
@@ -255,6 +255,8 @@ class OldStyleMemberships(MemberAdaptor.MemberAdaptor):
password = self.__mlist.passwords.get(memberkey,
Utils.MakeRandomPassword())
lang = self.getMemberLanguage(memberkey)
+ delivery = self.__mlist.delivery_status.get(member.lower(),
+ (MemberAdaptor.ENABLED,0))
# First, possibly delete the old member
if not nodelete:
self.removeMember(memberkey)
@@ -264,6 +266,11 @@ class OldStyleMemberships(MemberAdaptor.MemberAdaptor):
# Set the entire options bitfield
if flags:
self.__mlist.user_options[newaddress.lower()] = flags
+ # If this is a straightforward address change, i.e. nodelete = 0,
+ # preserve the delivery status and time if BYUSER or BYADMIN
+ if delivery[0] in (MemberAdaptor.BYUSER, MemberAdaptor.BYADMIN)\
+ and not nodelete:
+ self.__mlist.delivery_status[newaddress.lower()] = delivery
def setMemberPassword(self, memberkey, password):
assert self.__mlist.Locked()