summaryrefslogtreecommitdiff
path: root/src/mailman/rest
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/rest')
-rw-r--r--src/mailman/rest/addresses.py2
-rw-r--r--src/mailman/rest/helpers.py4
-rw-r--r--src/mailman/rest/lists.py4
-rw-r--r--src/mailman/rest/moderation.py4
-rw-r--r--src/mailman/rest/validator.py10
5 files changed, 14 insertions, 10 deletions
diff --git a/src/mailman/rest/addresses.py b/src/mailman/rest/addresses.py
index 2b0bf5890..2908fad57 100644
--- a/src/mailman/rest/addresses.py
+++ b/src/mailman/rest/addresses.py
@@ -178,7 +178,7 @@ class UserAddresses(_AddressBase):
def membership_key(member):
# Sort first by mailing list, then by address, then by role.
- return member.list_id, member.address.email, int(member.role)
+ return member.list_id, member.address.email, member.role.value
class AddressMemberships(MemberCollection):
diff --git a/src/mailman/rest/helpers.py b/src/mailman/rest/helpers.py
index 3a548cb10..7d911d42b 100644
--- a/src/mailman/rest/helpers.py
+++ b/src/mailman/rest/helpers.py
@@ -36,7 +36,7 @@ import hashlib
from cStringIO import StringIO
from datetime import datetime, timedelta
-from flufl.enum import Enum
+from enum import Enum
from lazr.config import as_boolean
from restish import http
from restish.http import Response
@@ -79,7 +79,7 @@ class ExtendedEncoder(json.JSONEncoder):
seconds = obj.seconds + obj.microseconds / 1000000.0
return '{0}d{1}s'.format(obj.days, seconds)
return '{0}d'.format(obj.days)
- elif hasattr(obj, 'enum') and issubclass(obj.enum, Enum):
+ elif isinstance(obj, Enum):
# It's up to the decoding validator to associate this name with
# the right Enum class.
return obj.name
diff --git a/src/mailman/rest/lists.py b/src/mailman/rest/lists.py
index 2a3c72bfd..32e22a76b 100644
--- a/src/mailman/rest/lists.py
+++ b/src/mailman/rest/lists.py
@@ -57,7 +57,7 @@ def member_matcher(request, segments):
return None
try:
role = MemberRole[segments[0]]
- except ValueError:
+ except KeyError:
# Not a valid role.
return None
# No more segments.
@@ -76,7 +76,7 @@ def roster_matcher(request, segments):
return None
try:
return (), dict(role=MemberRole[segments[1]]), ()
- except ValueError:
+ except KeyError:
# Not a valid role.
return None
diff --git a/src/mailman/rest/moderation.py b/src/mailman/rest/moderation.py
index c0dbe93b8..491807f38 100644
--- a/src/mailman/rest/moderation.py
+++ b/src/mailman/rest/moderation.py
@@ -60,7 +60,7 @@ class _ModerationBase:
resource.update(data)
# Check for a matching request type, and insert the type name into the
# resource.
- request_type = RequestType(resource.pop('_request_type'))
+ request_type = RequestType[resource.pop('_request_type')]
if request_type not in expected_request_types:
return None
resource['type'] = request_type.name
@@ -205,7 +205,7 @@ class MembershipChangeRequest(resource.Resource, _ModerationBase):
return http.not_found()
key, data = results
try:
- request_type = RequestType(data['_request_type'])
+ request_type = RequestType[data['_request_type']]
except ValueError:
return http.bad_request()
if request_type is RequestType.subscription:
diff --git a/src/mailman/rest/validator.py b/src/mailman/rest/validator.py
index c59bc53d8..2d178226f 100644
--- a/src/mailman/rest/validator.py
+++ b/src/mailman/rest/validator.py
@@ -48,9 +48,13 @@ class enum_validator:
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]
+ # This will raise a KeyError if the enum value is unknown. The
+ # Validator API requires turning this into a ValueError.
+ try:
+ return self._enum_class[enum_value]
+ except KeyError as exception:
+ # Retain the error message.
+ raise ValueError(exception.message)
def subscriber_validator(subscriber):