Loading django/utils/formats.py +7 −3 Original line number Diff line number Diff line Loading @@ -221,6 +221,10 @@ def sanitize_separators(value): parts.append(decimals) if settings.USE_THOUSAND_SEPARATOR: thousand_sep = get_format('THOUSAND_SEPARATOR') if thousand_sep == '.' and value.count('.') == 1 and len(value.split('.')[-1]) != 3: # Special case where we suspect a dot meant decimal separator (see #22171) pass else: for replacement in set([ thousand_sep, unicodedata.normalize('NFKD', thousand_sep)]): value = value.replace(replacement, '') Loading tests/i18n/tests.py +6 −0 Original line number Diff line number Diff line Loading @@ -734,6 +734,12 @@ class FormattingTests(TestCase): with self.settings(USE_THOUSAND_SEPARATOR=True, USE_L10N=False): self.assertEqual(sanitize_separators('12\xa0345'), '12\xa0345') with patch_formats(get_language(), THOUSAND_SEPARATOR='.', DECIMAL_SEPARATOR=','): with self.settings(USE_THOUSAND_SEPARATOR=True): self.assertEqual(sanitize_separators('10.234'), '10234') # Suspicion that user entered dot as decimal separator (#22171) self.assertEqual(sanitize_separators('10.10'), '10.10') def test_iter_format_modules(self): """ Tests the iter_format_modules function. Loading Loading
django/utils/formats.py +7 −3 Original line number Diff line number Diff line Loading @@ -221,6 +221,10 @@ def sanitize_separators(value): parts.append(decimals) if settings.USE_THOUSAND_SEPARATOR: thousand_sep = get_format('THOUSAND_SEPARATOR') if thousand_sep == '.' and value.count('.') == 1 and len(value.split('.')[-1]) != 3: # Special case where we suspect a dot meant decimal separator (see #22171) pass else: for replacement in set([ thousand_sep, unicodedata.normalize('NFKD', thousand_sep)]): value = value.replace(replacement, '') Loading
tests/i18n/tests.py +6 −0 Original line number Diff line number Diff line Loading @@ -734,6 +734,12 @@ class FormattingTests(TestCase): with self.settings(USE_THOUSAND_SEPARATOR=True, USE_L10N=False): self.assertEqual(sanitize_separators('12\xa0345'), '12\xa0345') with patch_formats(get_language(), THOUSAND_SEPARATOR='.', DECIMAL_SEPARATOR=','): with self.settings(USE_THOUSAND_SEPARATOR=True): self.assertEqual(sanitize_separators('10.234'), '10234') # Suspicion that user entered dot as decimal separator (#22171) self.assertEqual(sanitize_separators('10.10'), '10.10') def test_iter_format_modules(self): """ Tests the iter_format_modules function. Loading