summaryrefslogtreecommitdiff
path: root/Mailman/Cgi/admin.py
diff options
context:
space:
mode:
authorhmeland1999-04-21 11:41:09 +0000
committerhmeland1999-04-21 11:41:09 +0000
commit4eba90ac6615e5bb38662ca4adbded9bf6998d2e (patch)
tree507dc2bdf300a68cea88f255452a15fb54d237d9 /Mailman/Cgi/admin.py
parent03e9b9f6e3e62bcf39fe8c27f83857ae9d5551f3 (diff)
downloadmailman-4eba90ac6615e5bb38662ca4adbded9bf6998d2e.tar.gz
mailman-4eba90ac6615e5bb38662ca4adbded9bf6998d2e.tar.zst
mailman-4eba90ac6615e5bb38662ca4adbded9bf6998d2e.zip
Catch Errors.MMNoSuchUserError when unsubscribing, so that already
unsubscribed addresses doesn't generate tracebacks. Failed unsubscribes are listed on the top of the admin page generated after submitting.
Diffstat (limited to 'Mailman/Cgi/admin.py')
-rw-r--r--Mailman/Cgi/admin.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/Mailman/Cgi/admin.py b/Mailman/Cgi/admin.py
index fe27c68b5..19256a92f 100644
--- a/Mailman/Cgi/admin.py
+++ b/Mailman/Cgi/admin.py
@@ -843,10 +843,14 @@ def ChangeOptions(lst, category, cgi_info, document):
users.append(user[ui].value)
else:
users = [user.value]
+ unsubscribe_errors = []
for user in users:
if not cgi_info.has_key('%s_subscribed' % (user)):
- lst.DeleteMember(user)
- dirty = 1
+ try:
+ lst.DeleteMember(user)
+ dirty = 1
+ except Errors.MMNoSuchUserError:
+ unsubscribe_errors.append((user, 'Not subscribed'))
continue
if not cgi_info.has_key("%s_digest" % (user)):
if lst.digest_members.has_key(user):
@@ -871,7 +875,11 @@ def ChangeOptions(lst, category, cgi_info, document):
else:
lst.SetUserOption(user, okey, 0)
dirty = 1
-
+ if unsubscribe_errors:
+ document.AddItem(Header(5, "Error Unsubscribing:"))
+ items = map(lambda x: "%s -- %s" % (x[0], x[1]), unsubscribe_errors)
+ document.AddItem(apply(UnorderedList, tuple((items))))
+ document.AddItem("<p>")
if dirty:
lst.Save()