From 504e7782fef74cb78768092780a3476866379c21 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Sat, 6 May 2017 00:45:07 +0200 Subject: [PATCH] Refs #22654 -- Added additional tests and amended release note. --- docs/releases/2.0.txt | 16 ++++++++++++---- tests/i18n/tests.py | 13 +++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/docs/releases/2.0.txt b/docs/releases/2.0.txt index 223e008e37..7b114f2e8a 100644 --- a/docs/releases/2.0.txt +++ b/docs/releases/2.0.txt @@ -163,10 +163,6 @@ Forms HTML attributes for the ``DateInput`` and ``TimeInput`` (or hidden) subwidgets. -* :class:`~django.forms.FloatField` and :class:`~django.forms.DecimalField` - now handle :setting:`DECIMAL_SEPARATOR` and :setting:`THOUSAND_SEPARATOR` - correctly when :setting:`USE_L10N` is off. - Generic Views ~~~~~~~~~~~~~ @@ -311,6 +307,18 @@ Miscellaneous * :class:`~django.views.generic.base.RedirectView` no longer silences ``NoReverseMatch`` if the ``pattern_name`` doesn't exist. +* When :setting:`USE_L10N` is off, :class:`~django.forms.FloatField` and + :class:`~django.forms.DecimalField` now respect :setting:`DECIMAL_SEPARATOR` + and :setting:`THOUSAND_SEPARATOR` during validation. For example, with the + settings:: + + USE_L10N = False + USE_THOUSAND_SEPARATOR = True + DECIMAL_SEPARATOR = ',' + THOUSAND_SEPARATOR = '.' + + an input of ``"1.345"`` is now converted to ``1345`` instead of ``1.345``. + .. _deprecated-features-2.0: Features deprecated in 2.0 diff --git a/tests/i18n/tests.py b/tests/i18n/tests.py index 2f61007fff..796be40e8a 100644 --- a/tests/i18n/tests.py +++ b/tests/i18n/tests.py @@ -874,6 +874,19 @@ class FormattingTests(SimpleTestCase): # Suspicion that user entered dot as decimal separator (#22171) self.assertEqual(sanitize_separators('10.10'), '10.10') + with self.settings(USE_L10N=False, DECIMAL_SEPARATOR=','): + self.assertEqual(sanitize_separators('1001,10'), '1001.10') + self.assertEqual(sanitize_separators('1001.10'), '1001.10') + + with self.settings( + USE_L10N=False, DECIMAL_SEPARATOR=',', USE_THOUSAND_SEPARATOR=True, + THOUSAND_SEPARATOR='.' + ): + self.assertEqual(sanitize_separators('1.001,10'), '1001.10') + self.assertEqual(sanitize_separators('1001,10'), '1001.10') + self.assertEqual(sanitize_separators('1001.10'), '1001.10') + self.assertEqual(sanitize_separators('1,001.10'), '1.001.10') # Invalid output + def test_iter_format_modules(self): """ Tests the iter_format_modules function.