summaryrefslogtreecommitdiff
path: root/src/mailman/rest/members.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/rest/members.py')
-rw-r--r--src/mailman/rest/members.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/mailman/rest/members.py b/src/mailman/rest/members.py
index 517e55344..b7807271f 100644
--- a/src/mailman/rest/members.py
+++ b/src/mailman/rest/members.py
@@ -356,19 +356,31 @@ class _FoundMembers(MemberCollection):
class FindMembers(_MemberBase):
"""/members/find"""
+ def on_get(self, request, response):
+ return self._find(request, response)
+
def on_post(self, request, response):
+ return self._find(request, response)
+
+ def _find(self, request, response):
"""Find a member"""
service = getUtility(ISubscriptionService)
validator = Validator(
list_id=str,
subscriber=str,
role=enum_validator(MemberRole),
- _optional=('list_id', 'subscriber', 'role'))
+ # Expect pagination
+ page=int,
+ count=int,
+ _optional=('list_id', 'subscriber', 'role', 'page', 'count'))
try:
data = validator(request)
except ValueError as error:
bad_request(response, str(error))
else:
+ # Remove pagination query elements, it will be handled later.
+ data.pop('page', None)
+ data.pop('count', None)
members = service.find_members(**data)
resource = _FoundMembers(members, self.api)
okay(response, etag(resource._make_collection(request)))