Author: jezdez
Date: 2010-02-04 18:44:35 -0600 (Thu, 04 Feb 2010)
New Revision: 12382

Modified:
   django/trunk/django/utils/formats.py
   django/trunk/tests/regressiontests/i18n/models.py
   django/trunk/tests/regressiontests/i18n/tests.py
Log:
Fixed #12777 - Localize decimal fields correctly. Thanks, Florian Apolloner

Modified: django/trunk/django/utils/formats.py
===================================================================
--- django/trunk/django/utils/formats.py        2010-02-04 21:47:19 UTC (rev 
12381)
+++ django/trunk/django/utils/formats.py        2010-02-05 00:44:35 UTC (rev 
12382)
@@ -80,12 +80,8 @@
     formatted as a string using current locale format
     """
     if settings.USE_L10N:
-        if isinstance(value, decimal.Decimal):
+        if isinstance(value, (decimal.Decimal, float, int)):
             return number_format(value)
-        elif isinstance(value, float):
-            return number_format(value)
-        elif isinstance(value, int):
-            return number_format(value)
         elif isinstance(value, datetime.datetime):
             return date_format(value, 'DATETIME_FORMAT')
         elif isinstance(value, datetime.date):
@@ -99,6 +95,8 @@
     Checks if an input value is a localizable type and returns it
     formatted with the appropriate formatting string of the current locale.
     """
+    if isinstance(value, (decimal.Decimal, float, int)):
+        return number_format(value)
     if isinstance(value, datetime.datetime):
         value = datetime_safe.new_datetime(value)
         format = smart_str(default or get_format('DATETIME_INPUT_FORMATS')[0])

Modified: django/trunk/tests/regressiontests/i18n/models.py
===================================================================
--- django/trunk/tests/regressiontests/i18n/models.py   2010-02-04 21:47:19 UTC 
(rev 12381)
+++ django/trunk/tests/regressiontests/i18n/models.py   2010-02-05 00:44:35 UTC 
(rev 12382)
@@ -8,6 +8,7 @@
 class Company(models.Model):
     name = models.CharField(max_length=50)
     date_added = models.DateTimeField(default=datetime(1799,1,31,23,59,59,0))
+    cents_payed = models.DecimalField(max_digits=4, decimal_places=2)
 
 __test__ = {'API_TESTS': '''
 >>> tm = TestModel()

Modified: django/trunk/tests/regressiontests/i18n/tests.py
===================================================================
--- django/trunk/tests/regressiontests/i18n/tests.py    2010-02-04 21:47:19 UTC 
(rev 12381)
+++ django/trunk/tests/regressiontests/i18n/tests.py    2010-02-05 00:44:35 UTC 
(rev 12382)
@@ -362,12 +362,13 @@
             form6 = CompanyForm({
                 'name': u'acme',
                 'date_added': datetime.datetime(2009, 12, 31, 6, 0, 0),
+                'cents_payed': decimal.Decimal('59.47'),
             })
             form6.save()
             self.assertEqual(True, form6.is_valid())
             self.assertEqual(
                 form6.as_ul(),
-                u'<li><label for="id_name">Name:</label> <input id="id_name" 
type="text" name="name" value="acme" maxlength="50" /></li>\n<li><label 
for="id_date_added">Date added:</label> <input type="text" name="date_added" 
value="31.12.2009 06:00:00" id="id_date_added" /></li>'
+                u'<li><label for="id_name">Name:</label> <input id="id_name" 
type="text" name="name" value="acme" maxlength="50" /></li>\n<li><label 
for="id_date_added">Date added:</label> <input type="text" name="date_added" 
value="31.12.2009 06:00:00" id="id_date_added" /></li>\n<li><label 
for="id_cents_payed">Cents payed:</label> <input type="text" name="cents_payed" 
value="59,47" id="id_cents_payed" /></li>'
             )
             self.assertEqual(localize_input(datetime.datetime(2009, 12, 31, 6, 
0, 0)), '31.12.2009 06:00:00')
             self.assertEqual(datetime.datetime(2009, 12, 31, 6, 0, 0), 
form6.cleaned_data['date_added'])

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-upda...@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to