summaryrefslogtreecommitdiff
path: root/src/mailman/rest/addresses.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/rest/addresses.py')
-rw-r--r--src/mailman/rest/addresses.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mailman/rest/addresses.py b/src/mailman/rest/addresses.py
index 9dbbf3fc8..c62048b6a 100644
--- a/src/mailman/rest/addresses.py
+++ b/src/mailman/rest/addresses.py
@@ -211,7 +211,15 @@ class UserAddresses(_AddressBase):
except InvalidEmailAddressError:
bad_request(response, b'Invalid email address')
except ExistingAddressError:
- bad_request(response, b'Address already exists')
+ # Check if the address is not linked to any user, link it to
+ # the current user and return it.
+ address = user_manager.get_address(**validator(request))
+ if address.user is None:
+ address.user = self._user
+ location = self.path_to('addresses/{0}'.format(address.email))
+ created(response, location)
+ else:
+ bad_request(response, 'Address belongs to other user.')
else:
# Link the address to the current user and return it.
address.user = self._user