summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Törnqvist <simon.tornqvist@liu.se>2024-05-16 10:09:09 +0200
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-05-27 10:54:25 +0200
commitd3a7ed5bcc45000a6c3dd55d85a4caaa83299f83 (patch)
tree0e996aef9cfe1ca5f05c03f3ca4be329b946ff22
parentb049bec7cfe9b5854584d240addb44fa1e9375a5 (diff)
Fixed #35443 -- Changed ordinal to return negative numbers unchanged.
Previously, `-1` was converted to `"-1th"`. This has been updated to return negative numbers "as is", so that for example `-1` is converted to `"-1"`. This is now explicit in the docs. Co-authored-by: Martin Jonson <artin.onson@gmail.com>
-rw-r--r--django/contrib/humanize/templatetags/humanize.py4
-rw-r--r--docs/ref/contrib/humanize.txt1
-rw-r--r--tests/humanize_tests/tests.py6
3 files changed, 10 insertions, 1 deletions
diff --git a/django/contrib/humanize/templatetags/humanize.py b/django/contrib/humanize/templatetags/humanize.py
index 19000c185c..174e367a69 100644
--- a/django/contrib/humanize/templatetags/humanize.py
+++ b/django/contrib/humanize/templatetags/humanize.py
@@ -24,12 +24,14 @@ register = template.Library()
def ordinal(value):
"""
Convert an integer to its ordinal as a string. 1 is '1st', 2 is '2nd',
- 3 is '3rd', etc. Works for any integer.
+ 3 is '3rd', etc. Works for any non-negative integer.
"""
try:
value = int(value)
except (TypeError, ValueError):
return value
+ if value < 0:
+ return str(value)
if value % 100 in (11, 12, 13):
# Translators: Ordinal format for 11 (11th), 12 (12th), and 13 (13th).
value = pgettext("ordinal 11, 12, 13", "{}th").format(value)
diff --git a/docs/ref/contrib/humanize.txt b/docs/ref/contrib/humanize.txt
index 7c1af53ed3..1596f30b97 100644
--- a/docs/ref/contrib/humanize.txt
+++ b/docs/ref/contrib/humanize.txt
@@ -143,3 +143,4 @@ Examples:
* ``3`` becomes ``3rd``.
You can pass in either an integer or a string representation of an integer.
+Negative integers are returned unchanged.
diff --git a/tests/humanize_tests/tests.py b/tests/humanize_tests/tests.py
index 5e4f7f0ef7..ab967e2874 100644
--- a/tests/humanize_tests/tests.py
+++ b/tests/humanize_tests/tests.py
@@ -55,6 +55,9 @@ class HumanizeTests(SimpleTestCase):
"102",
"103",
"111",
+ "-0",
+ "-1",
+ "-105",
"something else",
None,
)
@@ -70,6 +73,9 @@ class HumanizeTests(SimpleTestCase):
"102nd",
"103rd",
"111th",
+ "0th",
+ "-1",
+ "-105",
"something else",
None,
)