diff options
| author | Barry Warsaw | 2011-03-18 15:11:48 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2011-03-18 15:11:48 -0400 |
| commit | 477d81701e0e3ef166b786de9ec9bc1f148eaffe (patch) | |
| tree | 60b08257c8aa0b80bb98c5fb7df949370f19ad08 | |
| parent | d10751e5f93e6357aa11323602ef5840cd5eb5e0 (diff) | |
| download | mailman-477d81701e0e3ef166b786de9ec9bc1f148eaffe.tar.gz mailman-477d81701e0e3ef166b786de9ec9bc1f148eaffe.tar.zst mailman-477d81701e0e3ef166b786de9ec9bc1f148eaffe.zip | |
| -rw-r--r-- | src/mailman/rest/users.py | 41 |
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)) |
