diff options
Diffstat (limited to 'src/mailman/rest/domains.py')
| -rw-r--r-- | src/mailman/rest/domains.py | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/src/mailman/rest/domains.py b/src/mailman/rest/domains.py index 1a260ea3d..5d36dcab9 100644 --- a/src/mailman/rest/domains.py +++ b/src/mailman/rest/domains.py @@ -26,18 +26,18 @@ __all__ = [ ] -from restish import http, resource -from zope.component import getUtility - from mailman.interfaces.domain import ( BadDomainSpecificationError, IDomainManager) -from mailman.rest.helpers import CollectionMixin, etag, no_content, path_to +from mailman.rest.helpers import ( + BadRequest, CollectionMixin, NotFound, bad_request, child, created, etag, + no_content, not_found, okay, path_to) from mailman.rest.lists import ListsForDomain from mailman.rest.validator import Validator +from zope.component import getUtility -class _DomainBase(resource.Resource, CollectionMixin): +class _DomainBase(CollectionMixin): """Shared base class for domain representations.""" def _resource_as_dict(self, domain): @@ -62,41 +62,40 @@ class ADomain(_DomainBase): def __init__(self, domain): self._domain = domain - @resource.GET() - def domain(self, request): + def on_get(self, request, response): """Return a single domain end-point.""" domain = getUtility(IDomainManager).get(self._domain) if domain is None: - return http.not_found() - return http.ok([], self._resource_as_json(domain)) + not_found(response) + else: + okay(response, self._resource_as_json(domain)) - @resource.DELETE() - def delete(self, request): + def on_delete(self, request, response): """Delete the domain.""" try: getUtility(IDomainManager).remove(self._domain) except KeyError: # The domain does not exist. - return http.not_found() - return no_content() + not_found(response) + else: + no_content(response) - @resource.child() + @child() def lists(self, request, segments): """/domains/<domain>/lists""" if len(segments) == 0: domain = getUtility(IDomainManager).get(self._domain) if domain is None: - return http.not_found() + return NotFound() return ListsForDomain(domain) else: - return http.bad_request() + return BadRequest(), [] class AllDomains(_DomainBase): """The domains.""" - @resource.POST() - def create(self, request): + def on_post(self, request, response): """Create a new domain.""" domain_manager = getUtility(IDomainManager) try: @@ -108,15 +107,13 @@ class AllDomains(_DomainBase): 'contact_address')) domain = domain_manager.add(**validator(request)) except BadDomainSpecificationError: - return http.bad_request([], b'Domain exists') + bad_request(response, b'Domain exists') except ValueError as error: - return http.bad_request([], str(error)) - location = path_to('domains/{0}'.format(domain.mail_host)) - # Include no extra headers or body. - return http.created(location, [], None) + bad_request(response, str(error)) + else: + created(response, path_to('domains/{0}'.format(domain.mail_host))) - @resource.GET() - def collection(self, request): + def on_get(self, request, response): """/domains""" resource = self._make_collection(request) - return http.ok([], etag(resource)) + okay(response, etag(resource)) |
