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.py26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/mailman/rest/members.py b/src/mailman/rest/members.py
index 8f447ac75..f15a2204a 100644
--- a/src/mailman/rest/members.py
+++ b/src/mailman/rest/members.py
@@ -65,6 +65,7 @@ class _MemberBase(resource.Resource, CollectionMixin):
role=role,
user=path_to('users/{0}'.format(user_id)),
self_link=path_to('members/{0}'.format(member_id)),
+ delivery_mode=member.delivery_mode,
)
def _get_collection(self, request):
@@ -141,18 +142,23 @@ class AMember(_MemberBase):
if self._member is None:
return http.not_found()
try:
- values = Validator(address=unicode)(request)
+ values = Validator(
+ address=unicode,
+ delivery_mode=enum_validator(DeliveryMode),
+ _optional=('address', 'delivery_mode'))(request)
except ValueError as error:
return http.bad_request([], str(error))
- assert len(values) == 1, 'Unexpected values'
- email = values['address']
- address = getUtility(IUserManager).get_address(email)
- if address is None:
- return http.bad_request([], b'Address not registered')
- try:
- self._member.address = address
- except (MembershipError, UnverifiedAddressError) as error:
- return http.bad_request([], str(error))
+ if 'address' in values:
+ email = values['address']
+ address = getUtility(IUserManager).get_address(email)
+ if address is None:
+ return http.bad_request([], b'Address not registered')
+ try:
+ self._member.address = address
+ except (MembershipError, UnverifiedAddressError) as error:
+ return http.bad_request([], str(error))
+ if 'delivery_mode' in values:
+ self._member.preferences.delivery_mode = values['delivery_mode']
return no_content()