diff options
| author | Barry Warsaw | 2010-08-23 21:58:44 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2010-08-23 21:58:44 -0400 |
| commit | ea5836d0922db7e8935ecf62ae1b1ecde7da7785 (patch) | |
| tree | 527bdf301b999ed0736cae67a6ce9eee000c6950 /src/mailman/rest/helpers.py | |
| parent | 537a9b8682565ebfa79aad0ed3e4efb6b89aa3f4 (diff) | |
| download | mailman-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.py | 69 |
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. |
