summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarry Warsaw2011-03-18 15:11:48 -0400
committerBarry Warsaw2011-03-18 15:11:48 -0400
commit477d81701e0e3ef166b786de9ec9bc1f148eaffe (patch)
tree60b08257c8aa0b80bb98c5fb7df949370f19ad08
parentd10751e5f93e6357aa11323602ef5840cd5eb5e0 (diff)
downloadmailman-477d81701e0e3ef166b786de9ec9bc1f148eaffe.tar.gz
mailman-477d81701e0e3ef166b786de9ec9bc1f148eaffe.tar.zst
mailman-477d81701e0e3ef166b786de9ec9bc1f148eaffe.zip
-rw-r--r--src/mailman/rest/users.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/mailman/rest/users.py b/src/mailman/rest/users.py
index 308291507..cf66a6d4e 100644
--- a/src/mailman/rest/users.py
+++ b/src/mailman/rest/users.py
@@ -26,6 +26,13 @@ __all__ = [
]
+from restish import http, resource
+from zope.component import getUtility
+
+from mailman.interfaces.usermanager import IUserManager
+from mailman.rest.helpers import CollectionMixin, etag
+
+
class _UserBase(resource.Resource, CollectionMixin):
"""Shared base class for user representations."""
@@ -36,3 +43,37 @@ class _UserBase(resource.Resource, CollectionMixin):
# although we can always look up a user based on any registered and
# validated email address associated with their account.
return dict(
+ real_name=user.real_name,
+ password=user.password,
+ user_id=user.user_id,
+ )
+
+ def _get_collection(self, request):
+ """See `CollectionMixin`."""
+ return list(getUtility(IUserManager).users)
+
+
+
+class AllUsers(_UserBase):
+ """The users."""
+
+ @resource.GET()
+ def collection(self, request):
+ """/users"""
+ resource = self._make_collection(request)
+ return http.ok([], etag(resource))
+
+
+
+class AUser(_UserBase):
+ """A user."""
+
+ def __init__(self, user_id):
+ self._user = getUtility(IUserManager).get_user_by_id(user_id)
+
+ @resource.GET()
+ def user(self, request):
+ """Return a single user end-point."""
+ if self._user is None:
+ return http.not_found()
+ return http.ok([], self._resource_as_json(self._user))