summaryrefslogtreecommitdiff
path: root/src/mailman/rest/users.py
diff options
context:
space:
mode:
authorBarry Warsaw2016-03-25 12:38:59 -0400
committerBarry Warsaw2016-03-25 12:38:59 -0400
commit1f039b2df371a569115b4ddc7bbc3786ef7d135d (patch)
tree5f727128a9f73d75b510fd62cbeca00138ecae58 /src/mailman/rest/users.py
parentca4259f4abd2802f87b86907c281a8b4cdb8150b (diff)
downloadmailman-1f039b2df371a569115b4ddc7bbc3786ef7d135d.tar.gz
mailman-1f039b2df371a569115b4ddc7bbc3786ef7d135d.tar.zst
mailman-1f039b2df371a569115b4ddc7bbc3786ef7d135d.zip
Diffstat (limited to 'src/mailman/rest/users.py')
-rw-r--r--src/mailman/rest/users.py31
1 files changed, 12 insertions, 19 deletions
diff --git a/src/mailman/rest/users.py b/src/mailman/rest/users.py
index 21ed26745..6ac4462c8 100644
--- a/src/mailman/rest/users.py
+++ b/src/mailman/rest/users.py
@@ -17,16 +17,8 @@
"""REST for users."""
-__all__ = [
- 'AUser',
- 'AddressUser',
- 'AllUsers',
- 'Login',
- 'OwnersForDomain',
- ]
-
-
from lazr.config import as_boolean
+from mailman import public
from mailman.config import config
from mailman.interfaces.address import ExistingAddressError
from mailman.interfaces.usermanager import IUserManager
@@ -42,24 +34,27 @@ from passlib.utils import generate_password as generate
from zope.component import getUtility
-
# Attributes of a user which can be changed via the REST API.
+@public
class PasswordEncrypterGetterSetter(GetterSetter):
def __init__(self):
super().__init__(config.password_context.encrypt)
+
def get(self, obj, attribute):
assert attribute == 'cleartext_password'
super().get(obj, 'password')
+
def put(self, obj, attribute, value):
assert attribute == 'cleartext_password'
super().put(obj, 'password', value)
+@public
class ListOfDomainOwners(GetterSetter):
def get(self, domain, attribute):
assert attribute == 'owner', (
'Unexpected attribute: {}'.format(attribute))
- def sort_key(owner):
+ def sort_key(owner): # flake8: noqa
return owner.addresses[0].email
return sorted(domain.owners, key=sort_key)
@@ -85,7 +80,6 @@ CREATION_FIELDS = dict(
)
-
def create_user(arguments, request, response):
"""Create a new user."""
# We can't pass the 'password' argument to the user creation method, so
@@ -122,7 +116,6 @@ def create_user(arguments, request, response):
return user
-
class _UserBase(CollectionMixin):
"""Shared base class for user representations."""
@@ -152,7 +145,7 @@ class _UserBase(CollectionMixin):
return list(getUtility(IUserManager).users)
-
+@public
class AllUsers(_UserBase):
"""The users."""
@@ -172,7 +165,7 @@ class AllUsers(_UserBase):
create_user(arguments, request, response)
-
+@public
class AUser(_UserBase):
"""A user."""
@@ -284,7 +277,7 @@ class AUser(_UserBase):
return Login(self._user)
-
+@public
class AddressUser(_UserBase):
"""The user linked to an address."""
@@ -381,7 +374,7 @@ class AddressUser(_UserBase):
user.link(self._address)
-
+@public
class Login:
"""<api>/users/<uid>/login"""
@@ -409,7 +402,7 @@ class Login:
forbidden(response)
-
+@public
class OwnersForDomain(_UserBase):
"""Owners for a particular domain."""
@@ -461,7 +454,7 @@ class OwnersForDomain(_UserBase):
return list(self._domain.owners)
-
+@public
class ServerOwners(_UserBase):
"""All server owners."""