Commit 132d0e51 authored by Claude Paroz's avatar Claude Paroz
Browse files

Fixed #22171 -- Improved sanitize_separators cleverness

Thanks Klaas van Schelven for the report and Tim Graham for the
review.
parent a3d7f581
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -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, '')
+6 −0
Original line number Diff line number Diff line
@@ -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.