summaryrefslogtreecommitdiff
path: root/src/mailman/rest/lists.py
diff options
context:
space:
mode:
authorHarshit Bansal2016-04-15 01:24:44 +0530
committerBarry Warsaw2016-04-28 20:58:44 -0400
commit17103aae14f53655fd7685a0867724f6420b9282 (patch)
treecc9b4419e10b583cc73e643d0a7fe2440d9cc010 /src/mailman/rest/lists.py
parenta5a64b82570b2a925efe6588f876dc858e001716 (diff)
downloadmailman-17103aae14f53655fd7685a0867724f6420b9282.tar.gz
mailman-17103aae14f53655fd7685a0867724f6420b9282.tar.zst
mailman-17103aae14f53655fd7685a0867724f6420b9282.zip
Diffstat (limited to 'src/mailman/rest/lists.py')
-rw-r--r--src/mailman/rest/lists.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/mailman/rest/lists.py b/src/mailman/rest/lists.py
index 1e19babbb..4f0c56569 100644
--- a/src/mailman/rest/lists.py
+++ b/src/mailman/rest/lists.py
@@ -39,7 +39,7 @@ from mailman.rest.listconf import ListConfiguration
from mailman.rest.members import AMember, MemberCollection
from mailman.rest.post_moderation import HeldMessages
from mailman.rest.sub_moderation import SubscriptionRequests
-from mailman.rest.validator import Validator
+from mailman.rest.validator import Validator, list_of_strings_validator
from zope.component import getUtility
@@ -248,6 +248,28 @@ class MembersOfList(MemberCollection):
list_id=self._mlist.list_id,
role=self._role)
+ def on_delete(self, request, response):
+ """Delete the members of the named mailing list."""
+ status = {}
+ success = []
+ fail = []
+ try:
+ validator = Validator(emails=list_of_strings_validator)
+ arguments = validator(request)
+ emails = arguments.pop('emails')
+ except ValueError:
+ return bad_request(response, b'Invalid Input.')
+ success, fail = getUtility(ISubscriptionService).unsubscribe_members(
+ self._mlist.list_id, emails)
+ if len(fail) == 0:
+ return no_content(response)
+ for email in fail:
+ if email in success:
+ status[email] = 'Member already deleted.'
+ else:
+ status[email] = 'No such member.'
+ okay(response, etag(status))
+
@public
class ListsForDomain(_ListBase):