diff options
| author | Florian Fuchs | 2014-04-13 14:48:20 -0400 |
|---|---|---|
| committer | Florian Fuchs | 2014-04-13 14:48:20 -0400 |
| commit | 3a306dec00019225cb6ebb8415077657bb2022b1 (patch) | |
| tree | 0f6090af19d12cd3d15970116ff6ded45f23449d /src/mailman/rest/addresses.py | |
| parent | 3a9725b91ef822122a70170333d71b58e1788a78 (diff) | |
| download | mailman-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.py | 18 |
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): |
