Abhilash Raj pushed to branch master at GNU Mailman / Mailman Core
Commits:
afbb4557 by Abhilash Raj at 2018-05-25T03:15:58Z
Add a list-of-emails validator.
- - - - -
73a2d2b9 by Abhilash Raj at 2018-05-25T08:08:37Z
Merge branch 'list-of-emails' into 'master'
Add a list-of-emails validator.
See merge request mailman/mailman!394
- - - - -
2 changed files:
- src/mailman/rest/tests/test_validator.py
- src/mailman/rest/validator.py
Changes:
=====================================
src/mailman/rest/tests/test_validator.py
=====================================
--- a/src/mailman/rest/tests/test_validator.py
+++ b/src/mailman/rest/tests/test_validator.py
@@ -23,8 +23,8 @@ from mailman.core.api import API30, API31
from mailman.interfaces.action import Action
from mailman.interfaces.usermanager import IUserManager
from mailman.rest.validator import (
- enum_validator, integer_ge_zero_validator, list_of_strings_validator,
- subscriber_validator)
+ enum_validator, integer_ge_zero_validator, list_of_emails_validator,
+ list_of_strings_validator, subscriber_validator)
from mailman.testing.layers import RESTLayer
from zope.component import getUtility
@@ -100,3 +100,19 @@ class TestValidators(unittest.TestCase):
def test_enum_validator_blank(self):
self.assertEqual(enum_validator(Action, allow_blank=True)(''), None)
+
+ def test_list_of_emails_validator_valid(self):
+ self.assertEqual(
+ list_of_emails_validator(['[email protected]', '[email protected]']),
+ ['[email protected]', '[email protected]'])
+ self.assertEqual(
+ list_of_emails_validator('[email protected]'),
+ ['[email protected]'])
+
+ def test_list_of_emails_validator_invalid(self):
+ self.assertRaises(
+ ValueError, list_of_emails_validator, 'foo.example.com')
+ self.assertRaises(
+ ValueError,
+ list_of_emails_validator,
+ ['[email protected]', 'bar.example.com'])
=====================================
src/mailman/rest/validator.py
=====================================
--- a/src/mailman/rest/validator.py
+++ b/src/mailman/rest/validator.py
@@ -102,6 +102,19 @@ def list_of_strings_validator(values):
@public
+def list_of_emails_validator(values):
+ """Turn a list of things, or a single thing, into a list of emails."""
+ if not isinstance(values, (list, tuple)):
+ if getUtility(IEmailValidator).is_valid(values):
+ return [values]
+ raise ValueError('Bad email address format: {}'.format(values))
+ for value in values:
+ if not getUtility(IEmailValidator).is_valid(value):
+ raise ValueError('Expected email address, got {!r}'.format(value))
+ return values
+
+
+@public
def integer_ge_zero_validator(value):
"""Validate that the value is a non-negative integer."""
value = int(value)
View it on GitLab:
https://gitlab.com/mailman/mailman/compare/2e530b257a864bb557f317ecc40a0a16f3180c02...73a2d2b9979e23f8bc53bb1f0601c39125ca27db
--
View it on GitLab:
https://gitlab.com/mailman/mailman/compare/2e530b257a864bb557f317ecc40a0a16f3180c02...73a2d2b9979e23f8bc53bb1f0601c39125ca27db
You're receiving this email because of your account on gitlab.com.
_______________________________________________
Mailman-checkins mailing list
[email protected]
Unsubscribe:
https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org