summaryrefslogtreecommitdiff
path: root/src/mailman/rest/helpers.py
diff options
context:
space:
mode:
authorBarry Warsaw2010-08-23 21:58:44 -0400
committerBarry Warsaw2010-08-23 21:58:44 -0400
commitea5836d0922db7e8935ecf62ae1b1ecde7da7785 (patch)
tree527bdf301b999ed0736cae67a6ce9eee000c6950 /src/mailman/rest/helpers.py
parent537a9b8682565ebfa79aad0ed3e4efb6b89aa3f4 (diff)
downloadmailman-ea5836d0922db7e8935ecf62ae1b1ecde7da7785.tar.gz
mailman-ea5836d0922db7e8935ecf62ae1b1ecde7da7785.tar.zst
mailman-ea5836d0922db7e8935ecf62ae1b1ecde7da7785.zip
Diffstat (limited to 'src/mailman/rest/helpers.py')
-rw-r--r--src/mailman/rest/helpers.py69
1 files changed, 0 insertions, 69 deletions
diff --git a/src/mailman/rest/helpers.py b/src/mailman/rest/helpers.py
index 8c4f0bae9..3117ed47e 100644
--- a/src/mailman/rest/helpers.py
+++ b/src/mailman/rest/helpers.py
@@ -22,7 +22,6 @@ from __future__ import absolute_import, unicode_literals
__metaclass__ = type
__all__ = [
'ContainerMixin',
- 'enum_validator',
'etag',
'no_content',
'path_to',
@@ -41,9 +40,6 @@ from restish.http import Response
from mailman.config import config
-COMMASPACE = ', '
-
-
def path_to(resource):
"""Return the url path to a resource.
@@ -154,71 +150,6 @@ class CollectionMixin:
-class enum_validator:
- """Convert an enum value name into an enum value."""
-
- def __init__(self, enum_class):
- self._enum_class = enum_class
-
- def __call__(self, enum_value):
- # This will raise a ValueError if the enum value is unknown. Let that
- # percolate up.
- return self._enum_class[enum_value]
-
-
-class Validator:
- """A validator of parameter input."""
-
- def __init__(self, **kws):
- if '_optional' in kws:
- self._optional = set(kws.pop('_optional'))
- else:
- self._optional = set()
- self._converters = kws.copy()
-
- def __call__(self, request):
- values = {}
- extras = set()
- cannot_convert = set()
- form_data = {}
- # All keys which show up only once in the form data get a scalar value
- # in the pre-converted dictionary. All keys which show up more than
- # once get a list value.
- missing = object()
- for key, new_value in request.POST.items():
- old_value = form_data.get(key, missing)
- if old_value is missing:
- form_data[key] = new_value
- elif isinstance(old_value, list):
- old_value.append(new_value)
- else:
- form_data[key] = [old_value, new_value]
- # Now do all the conversions.
- for key, value in form_data.items():
- try:
- values[key] = self._converters[key](value)
- except KeyError:
- extras.add(key)
- except (TypeError, ValueError):
- cannot_convert.add(key)
- # Make sure there are no unexpected values.
- if len(extras) != 0:
- extras = COMMASPACE.join(sorted(extras))
- raise ValueError('Unexpected parameters: {0}'.format(extras))
- # Make sure everything could be converted.
- if len(cannot_convert) != 0:
- bad = COMMASPACE.join(sorted(cannot_convert))
- raise ValueError('Cannot convert parameters: {0}'.format(bad))
- # Make sure nothing's missing.
- value_keys = set(values)
- required_keys = set(self._converters) - self._optional
- if value_keys & required_keys != required_keys:
- missing = COMMASPACE.join(sorted(required_keys - value_keys))
- raise ValueError('Missing parameters: {0}'.format(missing))
- return values
-
-
-
# XXX 2010-02-24 barry Seems like contrary to the documentation, matchers
# cannot be plain functions, because matchers must have a .score attribute.
# OTOH, I think they support regexps, so that might be a better way to go.