summaryrefslogtreecommitdiff
path: root/src/mailman/rest/addresses.py
diff options
context:
space:
mode:
authorFlorian Fuchs2014-04-13 14:48:20 -0400
committerFlorian Fuchs2014-04-13 14:48:20 -0400
commit3a306dec00019225cb6ebb8415077657bb2022b1 (patch)
tree0f6090af19d12cd3d15970116ff6ded45f23449d /src/mailman/rest/addresses.py
parent3a9725b91ef822122a70170333d71b58e1788a78 (diff)
downloadmailman-3a306dec00019225cb6ebb8415077657bb2022b1.tar.gz
mailman-3a306dec00019225cb6ebb8415077657bb2022b1.tar.zst
mailman-3a306dec00019225cb6ebb8415077657bb2022b1.zip
Diffstat (limited to 'src/mailman/rest/addresses.py')
-rw-r--r--src/mailman/rest/addresses.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mailman/rest/addresses.py b/src/mailman/rest/addresses.py
index 51bbe2046..3949944b1 100644
--- a/src/mailman/rest/addresses.py
+++ b/src/mailman/rest/addresses.py
@@ -34,6 +34,7 @@ from zope.component import getUtility
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.address import ExistingAddressError
from mailman.interfaces.usermanager import IUserManager
from mailman.utilities.datetime import now
@@ -174,6 +175,23 @@ class UserAddresses(_AddressBase):
resource = self._make_collection(request)
return http.ok([], etag(resource))
+ @resource.POST()
+ def create(self, request):
+ """Add a new address to the user record."""
+ email = request.POST.get('email')
+ if not email:
+ return http.bad_request([], b'No email address provided.')
+ # Create a new address and connect it to the current user
+ try:
+ address = getUtility(IUserManager).create_address(email)
+ address.user = self._user
+ location = path_to('addresses/{0}'.format(address.email))
+ return http.created(location, [], None)
+ # ... except the address already exists.
+ except ExistingAddressError:
+ return http.bad_request(
+ [], b'Address already exists: {0}'.format(email))
+
def membership_key(member):