summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormsapiro2006-03-03 00:20:33 +0000
committermsapiro2006-03-03 00:20:33 +0000
commited0ab53d70d4bf7a19c367d6ebe5a63ba2a8803b (patch)
tree221d659505c18a5ef32eba32447c29d7bfa2b202
parent16bc431001d4bf9bb4662f483907540ff0da6948 (diff)
downloadmailman-ed0ab53d70d4bf7a19c367d6ebe5a63ba2a8803b.tar.gz
mailman-ed0ab53d70d4bf7a19c367d6ebe5a63ba2a8803b.tar.zst
mailman-ed0ab53d70d4bf7a19c367d6ebe5a63ba2a8803b.zip
-rw-r--r--Mailman/MailList.py30
-rw-r--r--NEWS6
-rw-r--r--templates/en/adminaddrchgack.txt4
3 files changed, 40 insertions, 0 deletions
diff --git a/Mailman/MailList.py b/Mailman/MailList.py
index aa1da4b7c..daac29091 100644
--- a/Mailman/MailList.py
+++ b/Mailman/MailList.py
@@ -1125,6 +1125,7 @@ class MailList(HTMLFormatter, Deliverer, ListAdmin,
self.removeMember(oldaddr)
else:
self.changeMemberAddress(oldaddr, newaddr)
+ self.log_and_notify_admin(oldaddr, newaddr)
# If globally is true, then we also include every list for which
# oldaddr is a member.
if not globally:
@@ -1148,10 +1149,39 @@ class MailList(HTMLFormatter, Deliverer, ListAdmin,
mlist.removeMember(oldaddr)
else:
mlist.changeMemberAddress(oldaddr, newaddr)
+ self.log_and_notify_admin(oldaddr, newaddr)
mlist.Save()
finally:
mlist.Unlock()
+ def log_and_notify_admin(self, oldaddr, newaddr):
+ """Log member address change and notify admin if requested."""
+ syslog('subscribe', '%s: changed member address from %s to %s',
+ self.internal_name(), oldaddr, newaddr)
+ if self.admin_notify_mchanges:
+ lang = self.preferred_language
+ otrans = i18n.get_translation()
+ i18n.set_language(lang)
+ try:
+ realname = self.real_name
+ subject = _('%(realname)s address change notification')
+ finally:
+ i18n.set_translation(otrans)
+ name = self.getMemberName(newaddr)
+ if name is None:
+ name = ''
+ if isinstance(name, UnicodeType):
+ name = name.encode(Utils.GetCharSet(lang), 'replace')
+ text = Utils.maketext(
+ 'adminaddrchgack.txt',
+ {'name' : name,
+ 'oldaddr' : oldaddr,
+ 'newaddr' : newaddr,
+ 'listname': self.real_name,
+ }, mlist=self)
+ msg = Message.OwnerNotification(self, subject, text)
+ msg.send(self)
+
#
# Confirmation processing
diff --git a/NEWS b/NEWS
index d3f6b72e0..fdcbe09ee 100644
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,12 @@ Here is a history of user visible changes to Mailman.
- Translators should work only on messages/<lang>/LC_MESSAGES/mailman.po.
Templates files are generated from mailman.po during the make process.
+ New Features
+
+ - Confirmed member change of address is logged in the 'subscribe' log,
+ and if admin_notify_mchanges is true, a notice is sent to the list
+ owner using a new adminaddrchgack.txt template.
+
2.1.7 (31-Dec-2005)
Security
diff --git a/templates/en/adminaddrchgack.txt b/templates/en/adminaddrchgack.txt
new file mode 100644
index 000000000..a24dd3d91
--- /dev/null
+++ b/templates/en/adminaddrchgack.txt
@@ -0,0 +1,4 @@
+Address for member %(name)s has been successfully changed
+from %(oldaddr)s to %(newaddr)s for list %(listname)s.
+
+