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