Fixed #24382 -- Allowed unicode chars inside formatted numbers

Thanks Jacob Rief for the report and Tim Graham for the review.
This commit is contained in:
Claude Paroz 2015-03-09 17:56:13 +01:00
parent ea9157f681
commit df193b3cef
2 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,5 @@
from __future__ import unicode_literals
from decimal import Decimal from decimal import Decimal
from django.conf import settings from django.conf import settings

View File

@ -1,3 +1,6 @@
# -*- encoding: utf-8 -*-
from __future__ import unicode_literals
from decimal import Decimal from decimal import Decimal
from sys import float_info from sys import float_info
from unittest import TestCase from unittest import TestCase
@ -59,3 +62,15 @@ class TestNumberFormat(TestCase):
self.assertEqual(nformat(Decimal('1234'), '.', grouping=2, thousand_sep=',', force_grouping=True), '12,34') self.assertEqual(nformat(Decimal('1234'), '.', grouping=2, thousand_sep=',', force_grouping=True), '12,34')
self.assertEqual(nformat(Decimal('-1234.33'), '.', decimal_pos=1), '-1234.3') self.assertEqual(nformat(Decimal('-1234.33'), '.', decimal_pos=1), '-1234.3')
self.assertEqual(nformat(Decimal('0.00000001'), '.', decimal_pos=8), '0.00000001') self.assertEqual(nformat(Decimal('0.00000001'), '.', decimal_pos=8), '0.00000001')
def test_decimal_subclass(self):
class EuroDecimal(Decimal):
"""
Wrapper for Decimal which prefixes each amount with the symbol.
"""
def __format__(self, specifier, **kwargs):
amount = super(EuroDecimal, self).__format__(specifier, **kwargs)
return '{}'.format(amount)
price = EuroDecimal('1.23')
self.assertEqual(nformat(price, ','), '€ 1,23')