diff options
Diffstat (limited to 'src/mailman/rest/lists.py')
| -rw-r--r-- | src/mailman/rest/lists.py | 24 |
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): |
