summaryrefslogtreecommitdiff
path: root/src/mailman/rest/addresses.py
diff options
context:
space:
mode:
authorBarry Warsaw2012-09-22 17:13:13 -0400
committerBarry Warsaw2012-09-22 17:13:13 -0400
commit12b9839a5e7f1e9fda477c5e40ed190e08292da7 (patch)
tree838f38fd2a6d571da443a6c0335c17044ff86371 /src/mailman/rest/addresses.py
parent7e97811156ad3fbf9daafc253a2c473b05e07542 (diff)
downloadmailman-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.py41
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):