From f7a9872b914c8390eb1b5f5de9634160974b7d4f Mon Sep 17 00:00:00 2001 From: Marcin Markiewicz Date: Wed, 3 Feb 2016 15:59:55 +0100 Subject: [PATCH] Fixed #26173 -- Prevented localize_input() from formatting booleans as numbers. --- django/utils/formats.py | 2 ++ tests/i18n/tests.py | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/django/utils/formats.py b/django/utils/formats.py index 401f187163..1c59fdd05e 100644 --- a/django/utils/formats.py +++ b/django/utils/formats.py @@ -214,6 +214,8 @@ def localize_input(value, default=None): """ if isinstance(value, six.string_types): # Handle strings first for performance reasons. return value + elif isinstance(value, bool): # Don't treat booleans as numbers. + return six.text_type(value) elif isinstance(value, (decimal.Decimal, float) + six.integer_types): return number_format(value) elif isinstance(value, datetime.datetime): diff --git a/tests/i18n/tests.py b/tests/i18n/tests.py index 9bbbf10a09..1e07378ec2 100644 --- a/tests/i18n/tests.py +++ b/tests/i18n/tests.py @@ -1117,6 +1117,10 @@ class FormattingTests(SimpleTestCase): form6.as_ul() ) + def test_localized_input_func(self): + with self.settings(USE_THOUSAND_SEPARATOR=True): + self.assertEqual(localize_input(True), 'True') + def test_sanitize_separators(self): """ Tests django.utils.formats.sanitize_separators.