~barry/mailman/events-and-web

« back to all changes in this revision

Viewing changes to src/mailman/rest/members.py

  • Committer: Barry Warsaw
  • Date: 2011-09-02 00:54:37 UTC
  • mfrom: (7042.2.1 mailman_833123)
  • Revision ID: barry@list.org-20110902005437-bvjc5ptp3vlqkon9
* You can now query or change a member's `delivery_mode` attribute through
  the REST API (LP: #833132).  Given by Stephen A. Goss.

Show diffs side-by-side

added added

removed removed

Lines of Context:
65
65
            role=role,
66
66
            user=path_to('users/{0}'.format(user_id)),
67
67
            self_link=path_to('members/{0}'.format(member_id)),
 
68
            delivery_mode=member.delivery_mode,
68
69
            )
69
70
 
70
71
    def _get_collection(self, request):
141
142
        if self._member is None:
142
143
            return http.not_found()
143
144
        try:
144
 
            values = Validator(address=unicode)(request)
 
145
            values = Validator(
 
146
                address=unicode,
 
147
                delivery_mode=enum_validator(DeliveryMode),
 
148
                _optional=('address', 'delivery_mode'))(request)
145
149
        except ValueError as error:
146
150
            return http.bad_request([], str(error))
147
 
        assert len(values) == 1, 'Unexpected values'
148
 
        email = values['address']
149
 
        address = getUtility(IUserManager).get_address(email)
150
 
        if address is None:
151
 
            return http.bad_request([], b'Address not registered')
152
 
        try:
153
 
            self._member.address = address
154
 
        except (MembershipError, UnverifiedAddressError) as error:
155
 
            return http.bad_request([], str(error))
 
151
        if 'address' in values:
 
152
            email = values['address']
 
153
            address = getUtility(IUserManager).get_address(email)
 
154
            if address is None:
 
155
                return http.bad_request([], b'Address not registered')
 
156
            try:
 
157
                self._member.address = address
 
158
            except (MembershipError, UnverifiedAddressError) as error:
 
159
                return http.bad_request([], str(error))
 
160
        if 'delivery_mode' in values:
 
161
            self._member.preferences.delivery_mode = values['delivery_mode']
156
162
        return no_content()
157
163
 
158
164