2
0
Эх сурвалжийг харах

[5.0.x] Fixed #35172 -- Fixed intcomma for string floats.

Thanks Warwick Brown for the report.

Regression in 55519d6cf8998fe4c8f5c8abffc2b10a7c3d14e9.
Backport of 2f14c2cedc9c92373471c1f98a80c81ba299584a from main
Mariusz Felisiak 1 жил өмнө
parent
commit
c22075af80

+ 2 - 0
django/contrib/humanize/templatetags/humanize.py

@@ -80,6 +80,8 @@ def intcomma(value, use_l10n=True):
     if match:
         prefix = match[0]
         prefix_with_commas = re.sub(r"\d{3}", r"\g<0>,", prefix[::-1])[::-1]
+        # Remove a leading comma, if needed.
+        prefix_with_commas = re.sub(r"^(-?),", r"\1", prefix_with_commas)
         result = prefix_with_commas + result[len(prefix) :]
     return result
 

+ 13 - 0
docs/releases/3.2.25.txt

@@ -0,0 +1,13 @@
+===========================
+Django 3.2.25 release notes
+===========================
+
+*Expected March 4, 2024*
+
+Django 3.2.25 fixes a regression in 3.2.24.
+
+Bugfixes
+========
+
+* Fixed a regression in Django 3.2.24 where ``intcomma`` template filter could
+  return a leading comma for string representation of floats (:ticket:`35172`).

+ 13 - 0
docs/releases/4.2.11.txt

@@ -0,0 +1,13 @@
+===========================
+Django 4.2.11 release notes
+===========================
+
+*Expected March 4, 2024*
+
+Django 4.2.11 fixes a regression in 4.2.10.
+
+Bugfixes
+========
+
+* Fixed a regression in Django 4.2.10 where ``intcomma`` template filter could
+  return a leading comma for string representation of floats (:ticket:`35172`).

+ 2 - 1
docs/releases/5.0.3.txt

@@ -9,4 +9,5 @@ Django 5.0.3 fixes several bugs in 5.0.2.
 Bugfixes
 ========
 
-* ...
+* Fixed a regression in Django 5.0.2 where ``intcomma`` template filter could
+  return a leading comma for string representation of floats (:ticket:`35172`).

+ 2 - 0
docs/releases/index.txt

@@ -36,6 +36,7 @@ versions of the documentation contain the release notes for any later releases.
 .. toctree::
    :maxdepth: 1
 
+   4.2.11
    4.2.10
    4.2.9
    4.2.8
@@ -90,6 +91,7 @@ versions of the documentation contain the release notes for any later releases.
 .. toctree::
    :maxdepth: 1
 
+   3.2.25
    3.2.24
    3.2.23
    3.2.22

+ 12 - 0
tests/humanize_tests/tests.py

@@ -129,12 +129,18 @@ class HumanizeTests(SimpleTestCase):
             -1234567.25,
             "100",
             "-100",
+            "100.1",
+            "-100.1",
+            "100.13",
+            "-100.13",
             "1000",
             "-1000",
             "10123",
             "-10123",
             "10311",
             "-10311",
+            "100000.13",
+            "-100000.13",
             "1000000",
             "-1000000",
             "1234567.1234567",
@@ -163,12 +169,18 @@ class HumanizeTests(SimpleTestCase):
             "-1,234,567.25",
             "100",
             "-100",
+            "100.1",
+            "-100.1",
+            "100.13",
+            "-100.13",
             "1,000",
             "-1,000",
             "10,123",
             "-10,123",
             "10,311",
             "-10,311",
+            "100,000.13",
+            "-100,000.13",
             "1,000,000",
             "-1,000,000",
             "1,234,567.1234567",