diff options
| author | Barry Warsaw | 2012-09-22 17:13:13 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2012-09-22 17:13:13 -0400 |
| commit | 12b9839a5e7f1e9fda477c5e40ed190e08292da7 (patch) | |
| tree | 838f38fd2a6d571da443a6c0335c17044ff86371 /src/mailman/rest/addresses.py | |
| parent | 7e97811156ad3fbf9daafc253a2c473b05e07542 (diff) | |
| download | mailman-12b9839a5e7f1e9fda477c5e40ed190e08292da7.tar.gz mailman-12b9839a5e7f1e9fda477c5e40ed190e08292da7.tar.zst mailman-12b9839a5e7f1e9fda477c5e40ed190e08292da7.zip | |
Diffstat (limited to 'src/mailman/rest/addresses.py')
| -rw-r--r-- | src/mailman/rest/addresses.py | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/src/mailman/rest/addresses.py b/src/mailman/rest/addresses.py index 2e81cb030..1e043c2c7 100644 --- a/src/mailman/rest/addresses.py +++ b/src/mailman/rest/addresses.py @@ -31,10 +31,11 @@ from operator import attrgetter from restish import http, resource from zope.component import getUtility -from mailman.rest.helpers import CollectionMixin, etag, path_to +from mailman.rest.helpers import CollectionMixin, etag, no_content, path_to from mailman.rest.members import MemberCollection from mailman.rest.preferences import Preferences from mailman.interfaces.usermanager import IUserManager +from mailman.utilities.datetime import now @@ -76,6 +77,24 @@ class AllAddresses(_AddressBase): +class _VerifyResource(resource.Resource): + """A helper resource for verify/unverify POSTS.""" + + def __init__(self, address, action): + self._address = address + self._action = action + assert action in ('verify', 'unverify') + + @resource.POST() + def verify(self, request): + # We don't care about the POST data, just do the action. + if self._action == 'verify' and self._address.verified_on is None: + self._address.verified_on = now() + elif self._action == 'unverify': + self._address.verified_on = None + return no_content() + + class AnAddress(_AddressBase): """An address.""" @@ -115,6 +134,26 @@ class AnAddress(_AddressBase): 'addresses/{0}'.format(self._address.email)) return child, [] + @resource.child() + def verify(self, request, segments): + """/addresses/<email>/verify""" + if len(segments) != 0: + return http.bad_request() + if self._address is None: + return http.not_found() + child = _VerifyResource(self._address, 'verify') + return child, [] + + @resource.child() + def unverify(self, request, segments): + """/addresses/<email>/verify""" + if len(segments) != 0: + return http.bad_request() + if self._address is None: + return http.not_found() + child = _VerifyResource(self._address, 'unverify') + return child, [] + class UserAddresses(_AddressBase): |
