From c86eb81a8e7793c86115e318ad10dda2284f332a Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Thu, 11 Dec 2014 21:41:29 -0500 Subject: Checkpointing more fixes. --- src/mailman/rest/configuration.py | 13 ++++++++----- src/mailman/rest/moderation.py | 2 +- src/mailman/rest/tests/test_moderation.py | 6 ++++-- 3 files changed, 13 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/mailman/rest/configuration.py b/src/mailman/rest/configuration.py index 6ea78f90e..6d3c85fd8 100644 --- a/src/mailman/rest/configuration.py +++ b/src/mailman/rest/configuration.py @@ -63,7 +63,7 @@ class AcceptableAliases(GetterSetter): alias_set = IAcceptableAliasSet(mlist) alias_set.clear() for alias in value: - alias_set.add(alias.decode('utf-8')) + alias_set.add(alias) @@ -73,13 +73,16 @@ class AcceptableAliases(GetterSetter): def pipeline_validator(pipeline_name): """Convert the pipeline name to a string, but only if it's known.""" if pipeline_name in config.pipelines: - return pipeline_name.decode('utf-8') + return pipeline_name raise ValueError('Unknown pipeline: {}'.format(pipeline_name)) -def list_of_unicode(values): +def list_of_str(values): """Turn a list of things into a list of unicodes.""" - return [value.decode('utf-8') for value in values] + for value in values: + if not isinstance(value, str): + raise ValueError('Expected str, got {!r}'.format(value)) + return values @@ -98,7 +101,7 @@ def list_of_unicode(values): # (e.g. datetimes, timedeltas, enums). ATTRIBUTES = dict( - acceptable_aliases=AcceptableAliases(list_of_unicode), + acceptable_aliases=AcceptableAliases(list_of_str), admin_immed_notify=GetterSetter(as_boolean), admin_notify_mchanges=GetterSetter(as_boolean), administrivia=GetterSetter(as_boolean), diff --git a/src/mailman/rest/moderation.py b/src/mailman/rest/moderation.py index 0bdc50688..4373067ec 100644 --- a/src/mailman/rest/moderation.py +++ b/src/mailman/rest/moderation.py @@ -88,7 +88,7 @@ class _HeldMessageBase(_ModerationBase): # resource. Others we can drop. Since we're mutating the dictionary, # we need to make a copy of the keys. When you port this to Python 3, # you'll need to list()-ify the .keys() dictionary view. - for key in resource.keys(): + for key in list(resource): if key in ('_mod_subject', '_mod_hold_date', '_mod_reason', '_mod_sender', '_mod_message_id'): resource[key[5:]] = resource.pop(key) diff --git a/src/mailman/rest/tests/test_moderation.py b/src/mailman/rest/tests/test_moderation.py index 0e2528b0f..c3daf46de 100644 --- a/src/mailman/rest/tests/test_moderation.py +++ b/src/mailman/rest/tests/test_moderation.py @@ -96,7 +96,8 @@ Something else. with self.assertRaises(HTTPError) as cm: call_api(url.format(held_id), {'action': 'bogus'}) self.assertEqual(cm.exception.code, 400) - self.assertEqual(cm.exception.msg, 'Cannot convert parameters: action') + self.assertEqual(cm.exception.msg, + b'Cannot convert parameters: action') def test_bad_subscription_request_id(self): # Bad request when request_id is not an integer. @@ -122,4 +123,5 @@ Something else. with self.assertRaises(HTTPError) as cm: call_api(url.format(held_id), {'action': 'bogus'}) self.assertEqual(cm.exception.code, 400) - self.assertEqual(cm.exception.msg, 'Cannot convert parameters: action') + self.assertEqual(cm.exception.msg, + b'Cannot convert parameters: action') -- cgit v1.2.3-70-g09d2