Przeglądaj źródła

Fixed #19282 -- Restored ability to pass Decimals to intcomma filter

Hernan Lozano 12 lat temu
rodzic
commit
7e6ad76b24

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

@@ -1,6 +1,7 @@
 from __future__ import unicode_literals
 import re
 from datetime import date, datetime
+from decimal import Decimal
 
 from django import template
 from django.conf import settings
@@ -35,7 +36,7 @@ def intcomma(value, use_l10n=True):
     """
     if settings.USE_L10N and use_l10n:
         try:
-            if not isinstance(value, float):
+            if not isinstance(value, (float, Decimal)):
                 value = int(value)
         except (TypeError, ValueError):
             return intcomma(value, False)

+ 5 - 4
django/contrib/humanize/tests.py

@@ -1,5 +1,6 @@
 from __future__ import unicode_literals
 import datetime
+from decimal import Decimal
 
 try:
     import pytz
@@ -58,20 +59,20 @@ class HumanizeTests(TestCase):
 
     def test_intcomma(self):
         test_list = (100, 1000, 10123, 10311, 1000000, 1234567.25,
-                     '100', '1000', '10123', '10311', '1000000', '1234567.1234567',
+                     '100', '1000', '10123', '10311', '1000000', '1234567.1234567', Decimal('1234567.1234567'),
                      None)
         result_list = ('100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.25',
-                       '100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.1234567',
+                       '100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.1234567', '1,234,567.1234567',
                      None)
 
         self.humanize_tester(test_list, result_list, 'intcomma')
 
     def test_l10n_intcomma(self):
         test_list = (100, 1000, 10123, 10311, 1000000, 1234567.25,
-                     '100', '1000', '10123', '10311', '1000000', '1234567.1234567',
+                     '100', '1000', '10123', '10311', '1000000', '1234567.1234567', Decimal('1234567.1234567'),
                      None)
         result_list = ('100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.25',
-                       '100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.1234567',
+                       '100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.1234567', '1,234,567.1234567',
                      None)
 
         with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=False):