Ejemplo n.º 1
0
 def on_put(self, request, response):
     """Set a mailing list configuration."""
     attribute = self._attribute
     if attribute is None:
         validator = Validator(**VALIDATORS)
         try:
             validator.update(self._mlist, request)
         except ValueError as error:
             bad_request(response, str(error))
             return
     elif attribute not in ATTRIBUTES:
         bad_request(response, b'Unknown attribute: {}'.format(attribute))
         return
     elif ATTRIBUTES[attribute].decoder is None:
         bad_request(
             response, b'Read-only attribute: {}'.format(attribute))
         return
     else:
         validator = Validator(**{attribute: VALIDATORS[attribute]})
         try:
             validator.update(self._mlist, request)
         except ValueError as error:
             bad_request(response, str(error))
             return
     no_content(response)
Ejemplo n.º 2
0
 def on_put(self, request, response):
     """Set a mailing list configuration."""
     attribute = self._attribute
     if attribute is None:
         validator = Validator(**VALIDATORS)
         try:
             validator.update(self._mlist, request)
         except ValueError as error:
             bad_request(response, str(error))
             return
     elif attribute not in ATTRIBUTES:
         bad_request(response, b'Unknown attribute: {}'.format(attribute))
         return
     elif ATTRIBUTES[attribute].decoder is None:
         bad_request(
             response, b'Read-only attribute: {}'.format(attribute))
         return
     else:
         validator = Validator(**{attribute: VALIDATORS[attribute]})
         try:
             validator.update(self._mlist, request)
         except ValueError as error:
             bad_request(response, str(error))
             return
     no_content(response)
Ejemplo n.º 3
0
 def on_post(self, request, response):
     """POST to /domains/<domain>/owners """
     if self._domain is None:
         not_found(response)
         return
     validator = Validator(
         owner=ListOfDomainOwners(list_of_strings_validator))
     try:
         validator.update(self._domain, request)
     except ValueError as error:
         bad_request(response, str(error))
         return
     return no_content(response)
Ejemplo n.º 4
0
 def on_post(self, request, response):
     """POST to /domains/<domain>/owners """
     if self._domain is None:
         not_found(response)
         return
     validator = Validator(
         owner=ListOfDomainOwners(list_of_strings_validator))
     try:
         validator.update(self._domain, request)
     except ValueError as error:
         bad_request(response, str(error))
         return
     return no_content(response)
Ejemplo n.º 5
0
 def on_put(self, request, response):
     """Set a mailing list configuration."""
     attribute = self._attribute
     # The list of required attributes differs between API version.  For
     # backward compatibility, in API 3.0 all of the *_uri attributes are
     # optional.  In API 3.1 none of these are allowed since they are
     # handled by the template manager API.
     validators = VALIDATORS.copy()
     attributes = api_attributes(self.api)
     if self.api.version_info == (3, 0):
         validators.update({
             attribute: URIAttributeMapper(str)
             for attribute in TEMPLATE_ATTRIBUTES
             })
         validators['_optional'] = TEMPLATE_ATTRIBUTES.keys()
     if attribute is None:
         # This is a request to update all the list's writable
         # configuration variables.  All must be provided in the request.
         validator = Validator(**validators)
         try:
             validator.update(self._mlist, request)
         except ValueError as error:
             # Unlike the case where we're PUTting to a specific
             # configuration sub-resource, if we're PUTting to the list's
             # entire configuration, but the request has a bogus attribute,
             # the entire request is considered bad.  We can also get here
             # if one of the attributes is read-only.  The error will
             # contain sufficient details, so just return it as the reason.
             bad_request(response, str(error))
             return
     elif attribute not in attributes:
         # Here we're PUTting to a specific resource, but that attribute is
         # bogus so the URL is considered pointing to a missing resource.
         not_found(response, 'Unknown attribute: {}'.format(attribute))
         return
     elif attributes[attribute].decoder is None:
         bad_request(
             response, 'Read-only attribute: {}'.format(attribute))
         return
     else:
         # We're PUTting to a specific configuration sub-resource.
         validator = Validator(**{attribute: validators[attribute]})
         try:
             validator.update(self._mlist, request)
         except ValueError as error:
             bad_request(response, str(error))
             return
     no_content(response)
Ejemplo n.º 6
0
 def put_update(self, request):
     """Put the user's configuration (i.e. full update)."""
     if self._user is None:
         return http.not_found()
     validator = Validator(**ATTRIBUTES)
     try:
         validator.update(self._user, request)
     except UnknownPATCHRequestError as error:
         return http.bad_request(
             [], b'Unknown attribute: {0}'.format(error.attribute))
     except ReadOnlyPATCHRequestError as error:
         return http.bad_request(
             [], b'Read-only attribute: {0}'.format(error.attribute))
     except ValueError as error:
         return http.bad_request([], str(error))
     return no_content()
Ejemplo n.º 7
0
 def on_put(self, request, response):
     """Put the user's configuration (i.e. full update)."""
     if self._user is None:
         not_found(response)
         return
     validator = Validator(**ATTRIBUTES)
     try:
         validator.update(self._user, request)
     except UnknownPATCHRequestError as error:
         bad_request(
             response, b'Unknown attribute: {0}'.format(error.attribute))
     except ReadOnlyPATCHRequestError as error:
         bad_request(
             response, b'Read-only attribute: {0}'.format(error.attribute))
     except ValueError as error:
         bad_request(response, str(error))
     else:
         no_content(response)
Ejemplo n.º 8
0
 def on_put(self, request, response):
     """Put the user's configuration (i.e. full update)."""
     if self._user is None:
         not_found(response)
         return
     validator = Validator(**ATTRIBUTES)
     try:
         validator.update(self._user, request)
     except UnknownPATCHRequestError as error:
         bad_request(
             response, b'Unknown attribute: {0}'.format(error.attribute))
     except ReadOnlyPATCHRequestError as error:
         bad_request(
             response, b'Read-only attribute: {0}'.format(error.attribute))
     except ValueError as error:
         bad_request(response, str(error))
     else:
         no_content(response)
Ejemplo n.º 9
0
 def on_put(self, request, response):
     """Set a mailing list configuration."""
     attribute = self._attribute
     if attribute is None:
         # This is a request to update all the list's writable
         # configuration variables.  All must be provided in the request.
         validator = Validator(**VALIDATORS)
         try:
             validator.update(self._mlist, request)
         except ValueError as error:
             # Unlike the case where we're PUTting to a specific
             # configuration sub-resource, if we're PUTting to the list's
             # entire configuration, but the request has a bogus attribute,
             # the entire request is considered bad.  We can also get here
             # if one of the attributes is read-only.  The error will
             # contain sufficient details, so just return it as the reason.
             bad_request(response, str(error))
             return
     elif attribute not in ATTRIBUTES:
         # Here we're PUTting to a specific resource, but that attribute is
         # bogus so the URL is considered pointing to a missing resource.
         not_found(response, 'Unknown attribute: {}'.format(attribute))
         return
     elif ATTRIBUTES[attribute].decoder is None:
         bad_request(
             response, 'Read-only attribute: {}'.format(attribute))
         return
     else:
         # We're PUTting to a specific configuration sub-resource.
         validator = Validator(**{attribute: VALIDATORS[attribute]})
         try:
             validator.update(self._mlist, request)
         except ValueError as error:
             bad_request(response, str(error))
             return
     no_content(response)