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.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/mailman/rest/members.py b/src/mailman/rest/members.py
index f15a2204a..bf739ed32 100644
--- a/src/mailman/rest/members.py
+++ b/src/mailman/rest/members.py
@@ -44,6 +44,7 @@ from mailman.interfaces.user import UnverifiedAddressError
from mailman.interfaces.usermanager import IUserManager
from mailman.rest.helpers import (
CollectionMixin, PATCH, etag, no_content, path_to)
+from mailman.rest.preferences import Preferences, ReadOnlyPreferences
from mailman.rest.validator import (
Validator, enum_validator, subscriber_validator)
@@ -115,6 +116,30 @@ class AMember(_MemberBase):
return http.not_found()
return http.ok([], self._resource_as_json(self._member))
+ @resource.child()
+ def preferences(self, request, segments):
+ """/members/<id>/preferences"""
+ if len(segments) != 0:
+ return http.bad_request()
+ if self._member is None:
+ return http.not_found()
+ child = Preferences(
+ self._member.preferences,
+ 'members/{0}'.format(self._member.member_id.int))
+ return child, []
+
+ @resource.child()
+ def all(self, request, segments):
+ """/members/<id>/all/preferences"""
+ if len(segments) == 0:
+ return http.not_found()
+ if self._member is None:
+ return http.not_found()
+ child = ReadOnlyPreferences(
+ self._member,
+ 'members/{0}/all'.format(self._member.member_id.int))
+ return child, []
+
@resource.DELETE()
def delete(self, request):
"""Delete the member (i.e. unsubscribe)."""