summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBarry Warsaw2015-09-20 15:54:06 -0400
committerBarry Warsaw2015-09-23 16:27:20 -0400
commitc8779a10f536b1f21dc6947a3dcaa40da1d58245 (patch)
tree5e5c48b20e40180724d6dd91bcc2c7ba5c9b5b7e /src
parentdfc1cff78e820cc13b0c3a7df3d7f4326c62704f (diff)
downloadmailman-c8779a10f536b1f21dc6947a3dcaa40da1d58245.tar.gz
mailman-c8779a10f536b1f21dc6947a3dcaa40da1d58245.tar.zst
mailman-c8779a10f536b1f21dc6947a3dcaa40da1d58245.zip
Diffstat (limited to 'src')
-rw-r--r--src/mailman/rest/docs/owners.rst28
-rw-r--r--src/mailman/rest/root.py6
-rw-r--r--src/mailman/rest/users.py15
3 files changed, 46 insertions, 3 deletions
diff --git a/src/mailman/rest/docs/owners.rst b/src/mailman/rest/docs/owners.rst
index 71f112247..42be49c02 100644
--- a/src/mailman/rest/docs/owners.rst
+++ b/src/mailman/rest/docs/owners.rst
@@ -35,6 +35,13 @@ Anne's server owner flag is set.
And now we can find her user record.
>>> dump_json('http://localhost:9001/3.0/owners')
+ entry 0:
+ created_on: 2005-08-01T07:49:23
+ display_name: Anne Person
+ http_etag: "..."
+ is_server_owner: True
+ self_link: http://localhost:9001/3.0/users/1
+ user_id: 1
http_etag: "..."
start: 0
total_size: 1
@@ -45,6 +52,13 @@ Bart and Cate are also users, but not server owners.
>>> cate = user_manager.create_user('cate@example.com', 'Cate Person')
>>> transaction.commit()
>>> dump_json('http://localhost:9001/3.0/owners')
+ entry 0:
+ created_on: 2005-08-01T07:49:23
+ display_name: Anne Person
+ http_etag: "..."
+ is_server_owner: True
+ self_link: http://localhost:9001/3.0/users/1
+ user_id: 1
http_etag: "..."
start: 0
total_size: 1
@@ -56,6 +70,20 @@ Anne retires as a server owner, with Bart and Cate taking over.
>>> cate.is_server_owner = True
>>> transaction.commit()
>>> dump_json('http://localhost:9001/3.0/owners')
+ entry 0:
+ created_on: 2005-08-01T07:49:23
+ display_name: Bart Person
+ http_etag: "..."
+ is_server_owner: True
+ self_link: http://localhost:9001/3.0/users/2
+ user_id: 2
+ entry 1:
+ created_on: 2005-08-01T07:49:23
+ display_name: Cate Person
+ http_etag: "..."
+ is_server_owner: True
+ self_link: http://localhost:9001/3.0/users/3
+ user_id: 3
http_etag: "..."
start: 0
total_size: 2
diff --git a/src/mailman/rest/root.py b/src/mailman/rest/root.py
index d4c95eb09..0682619b1 100644
--- a/src/mailman/rest/root.py
+++ b/src/mailman/rest/root.py
@@ -29,7 +29,6 @@ from mailman.config import config
from mailman.core.constants import system_preferences
from mailman.core.system import system
from mailman.interfaces.listmanager import IListManager
-from mailman.interfaces.usermanager import IUserManager
from mailman.model.uid import UID
from mailman.rest.addresses import AllAddresses, AnAddress
from mailman.rest.domains import ADomain, AllDomains
@@ -40,7 +39,7 @@ from mailman.rest.members import AMember, AllMembers, FindMembers
from mailman.rest.preferences import ReadOnlyPreferences
from mailman.rest.queues import AQueue, AQueueFile, AllQueues
from mailman.rest.templates import TemplateFinder
-from mailman.rest.users import AUser, AllUsers
+from mailman.rest.users import AUser, AllUsers, ServerOwners
from zope.component import getUtility
@@ -239,7 +238,8 @@ class TopLevel:
"""/<api>/owners"""
if len(segments) != 0:
return BadRequest(), []
-
+ else:
+ return ServerOwners(), segments
@child()
def templates(self, request, segments):
diff --git a/src/mailman/rest/users.py b/src/mailman/rest/users.py
index 252e7757b..6c352fd8c 100644
--- a/src/mailman/rest/users.py
+++ b/src/mailman/rest/users.py
@@ -464,3 +464,18 @@ class OwnersForDomain(_UserBase):
def _get_collection(self, request):
"""See `CollectionMixin`."""
return list(self._domain.owners)
+
+
+
+class ServerOwners(_UserBase):
+ """All server owners."""
+
+ def on_get(self, request, response):
+ """/owners"""
+ resource = self._make_collection(request)
+ okay(response, etag(resource))
+
+ @paginate
+ def _get_collection(self, request):
+ """See `CollectionMixin`."""
+ return list(getUtility(IUserManager).server_owners)