Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core
Commits:
7c0c47a6 by Mark Sapiro at 2022-01-20T17:11:27-08:00
Extend fix for JSON encoded booleans to REST validator.
- - - - -
9d72e46a by Mark Sapiro at 2022-01-21T03:58:22+00:00
Merge branch 'bool' into 'master'
Extend fix for JSON encoded booleans to REST validator.
See merge request mailman/mailman!950
- - - - -
2 changed files:
- src/mailman/rest/tests/test_validator.py
- src/mailman/rest/validator.py
Changes:
=====================================
src/mailman/rest/tests/test_validator.py
=====================================
@@ -27,7 +27,7 @@ from mailman.interfaces.action import Action
from mailman.interfaces.usermanager import IUserManager
from mailman.rest import helpers
from mailman.rest.validator import (
- email_or_regexp_validator, email_validator, enum_validator,
+ Validator, email_or_regexp_validator, email_validator, enum_validator,
integer_ge_zero_validator, list_of_emails_validator,
list_of_strings_validator, subscriber_validator)
from mailman.testing.layers import RESTLayer
@@ -147,6 +147,20 @@ class TestValidators(unittest.TestCase):
email_validator, 'foo.example.com')
self.assertEqual('[email protected]',
email_validator('[email protected]'))
+ def test_validator_class_boolean_as_bool(self):
+
+ class RequestTrue:
+ params = dict(key=True)
+ content_type = 'application/x-www-form-urlencoded'
+
+ class RequestFalse:
+ params = dict(key=False)
+ content_type = 'application/x-www-form-urlencoded'
+
+ validator = Validator(key=as_boolean)
+ self.assertTrue(validator(RequestTrue)['key'])
+ self.assertFalse(validator(RequestFalse)['key'])
+
class TestGetterSetter(unittest.TestCase):
"""Test the GeterSetter class"""
=====================================
src/mailman/rest/validator.py
=====================================
@@ -19,6 +19,7 @@
import re
+from lazr.config import as_boolean
from mailman.interfaces.address import IEmailValidator
from mailman.interfaces.errors import MailmanError
from mailman.interfaces.languages import ILanguageManager
@@ -224,7 +225,11 @@ class Validator:
# Now do all the conversions.
for key, value in form_data.items():
try:
- values[key] = self._converters[key](value)
+ if (self._converters[key] is as_boolean and
+ isinstance(value, bool)):
+ values[key] = value
+ else:
+ values[key] = self._converters[key](value)
except KeyError:
extras.add(key)
except (TypeError, ValueError) as e:
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/37b769136c96d457b36d5bf9dd6c433b22bddb14...9d72e46aca1596481e4dec1eec3615469a445034
--
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/37b769136c96d457b36d5bf9dd6c433b22bddb14...9d72e46aca1596481e4dec1eec3615469a445034
You're receiving this email because of your account on gitlab.com.
_______________________________________________
Mailman-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/mailman-checkins.python.org/
Member address: [email protected]