Author: garcia_marc
Date: 2009-07-12 08:53:37 -0500 (Sun, 12 Jul 2009)
New Revision: 11228

Modified:
   
django/branches/soc2009/i18n-improvements/django/contrib/admin/templatetags/admin_list.py
   django/branches/soc2009/i18n-improvements/django/forms/fields.py
   django/branches/soc2009/i18n-improvements/django/forms/widgets.py
   django/branches/soc2009/i18n-improvements/django/utils/formats.py
   django/branches/soc2009/i18n-improvements/docs/ref/settings.txt
Log:
[soc2009/i18n] bugs fixed on input formatting, and more documentation written.

Modified: 
django/branches/soc2009/i18n-improvements/django/contrib/admin/templatetags/admin_list.py
===================================================================
--- 
django/branches/soc2009/i18n-improvements/django/contrib/admin/templatetags/admin_list.py
   2009-07-11 20:34:27 UTC (rev 11227)
+++ 
django/branches/soc2009/i18n-improvements/django/contrib/admin/templatetags/admin_list.py
   2009-07-12 13:53:37 UTC (rev 11228)
@@ -193,6 +193,12 @@
                 else:
                     result_repr = EMPTY_CHANGELIST_VALUE
                 row_class = ' class="nowrap"'
+            elif isinstance(f, models.FloatField):
+                if field_val:
+                    result_repr = formats.number_format(field_val)
+                else:
+                    result_repr = EMPTY_CHANGELIST_VALUE
+                row_class = ' class="nowrap"'
             # Booleans are special: We use images.
             elif isinstance(f, models.BooleanField) or isinstance(f, 
models.NullBooleanField):
                 result_repr = _boolean_icon(field_val)

Modified: django/branches/soc2009/i18n-improvements/django/forms/fields.py
===================================================================
--- django/branches/soc2009/i18n-improvements/django/forms/fields.py    
2009-07-11 20:34:27 UTC (rev 11227)
+++ django/branches/soc2009/i18n-improvements/django/forms/fields.py    
2009-07-12 13:53:37 UTC (rev 11228)
@@ -26,7 +26,7 @@
 import django.core.exceptions
 from django.utils.translation import ugettext_lazy as _
 from django.utils.encoding import smart_unicode, smart_str
-from django.utils.formats import get_format
+from django.utils.formats import getformat
 
 from util import ErrorList, ValidationError
 from widgets import TextInput, PasswordInput, HiddenInput, 
MultipleHiddenInput, FileInput, CheckboxInput, Select, NullBooleanSelect, 
SelectMultiple, DateInput, DateTimeInput, TimeInput, SplitDateTimeWidget, 
SplitHiddenDateTimeWidget
@@ -209,7 +209,8 @@
         if not self.required and value in EMPTY_VALUES:
             return None
         try:
-            value = float(value)
+            # We always accept dot as decimal separator
+            value = float(value.replace(getformat('DECIMAL_SEPARATOR'), '.'))
         except (ValueError, TypeError):
             raise ValidationError(self.error_messages['invalid'])
         if self.max_value is not None and value > self.max_value:
@@ -245,7 +246,8 @@
             return None
         value = smart_str(value).strip()
         try:
-            value = Decimal(value)
+            # We always accept dot as decimal separator
+            value = Decimal(value.replace(getformat('DECIMAL_SEPARATOR'), '.'))
         except DecimalException:
             raise ValidationError(self.error_messages['invalid'])
 
@@ -281,7 +283,7 @@
 
     def __init__(self, input_formats=None, *args, **kwargs):
         super(DateField, self).__init__(*args, **kwargs)
-        self.input_formats = input_formats or get_format('DATE_INPUT_FORMATS')
+        self.input_formats = input_formats or getformat('DATE_INPUT_FORMATS')
 
     def clean(self, value):
         """
@@ -310,7 +312,7 @@
 
     def __init__(self, input_formats=None, *args, **kwargs):
         super(TimeField, self).__init__(*args, **kwargs)
-        self.input_formats = input_formats or get_format('TIME_INPUT_FORMATS')
+        self.input_formats = input_formats or getformat('TIME_INPUT_FORMATS')
 
     def clean(self, value):
         """
@@ -337,7 +339,7 @@
 
     def __init__(self, input_formats=None, *args, **kwargs):
         super(DateTimeField, self).__init__(*args, **kwargs)
-        self.input_formats = input_formats or 
get_format('DATETIME_INPUT_FORMATS')
+        self.input_formats = input_formats or 
getformat('DATETIME_INPUT_FORMATS')
 
     def clean(self, value):
         """

Modified: django/branches/soc2009/i18n-improvements/django/forms/widgets.py
===================================================================
--- django/branches/soc2009/i18n-improvements/django/forms/widgets.py   
2009-07-11 20:34:27 UTC (rev 11227)
+++ django/branches/soc2009/i18n-improvements/django/forms/widgets.py   
2009-07-12 13:53:37 UTC (rev 11228)
@@ -15,6 +15,7 @@
 from django.utils.translation import ugettext
 from django.utils.encoding import StrAndUnicode, force_unicode
 from django.utils.safestring import mark_safe
+from django.utils.formats import localize
 from django.utils import datetime_safe
 from datetime import time
 from util import flatatt
@@ -213,7 +214,7 @@
         final_attrs = self.build_attrs(attrs, type=self.input_type, name=name)
         if value != '':
             # Only add the 'value' attribute if a value is non-empty.
-            final_attrs['value'] = force_unicode(value)
+            final_attrs['value'] = force_unicode(localize(value, 
is_input=True))
         return mark_safe(u'<input%s />' % flatatt(final_attrs))
 
 class TextInput(Input):

Modified: django/branches/soc2009/i18n-improvements/django/utils/formats.py
===================================================================
--- django/branches/soc2009/i18n-improvements/django/utils/formats.py   
2009-07-11 20:34:27 UTC (rev 11227)
+++ django/branches/soc2009/i18n-improvements/django/utils/formats.py   
2009-07-12 13:53:37 UTC (rev 11228)
@@ -72,7 +72,7 @@
         getformat('THOUSAND_SEPARATOR'),
     )
 
-def localize(value):
+def localize(value, is_input=False):
     """
     Checks value, and if it has a localizable type (date,
     number...) it returns the value as a string using
@@ -86,8 +86,19 @@
         elif isinstance(value, int):
             return number_format(value)
         elif isinstance(value, datetime.datetime):
-            return date_format(value, 'DATETIME_FORMAT')
+            if not is_input:
+                return date_format(value, 'DATETIME_FORMAT')
+            else:
+                return value.strftime(getformat('DATETIME_INPUT_FORMATS')[0])
         elif isinstance(value, datetime.date):
-            return date_format(value)
+            if not is_input:
+                return date_format(value)
+            else:
+                return value.strftime(getformat('DATE_INPUT_FORMATS')[0])
+        elif isinstance(value, datetime.time):
+            if not is_input:
+                return date_format(value, 'TIME_FORMAT')
+            else:
+                return value.strftime(getformat('TIME_INPUT_FORMATS')[0])
     return value
 

Modified: django/branches/soc2009/i18n-improvements/docs/ref/settings.txt
===================================================================
--- django/branches/soc2009/i18n-improvements/docs/ref/settings.txt     
2009-07-11 20:34:27 UTC (rev 11227)
+++ django/branches/soc2009/i18n-improvements/docs/ref/settings.txt     
2009-07-12 13:53:37 UTC (rev 11228)
@@ -243,12 +243,11 @@
 
 Default: ``'N j, Y'`` (e.g. ``Feb. 4, 2003``)
 
-The default formatting to use for date fields on Django admin change-list
-pages -- and, possibly, by other parts of the system. See
-:ttag:`allowed date format strings <now>`.
+The default formatting to use for date fields in any part of the system.
+Note that if ``USE_FORMAT_I18N`` is set to ``True``, then locale format will
+be applied. See :ttag:`allowed date format strings <now>`.
 
-See also ``DATETIME_FORMAT``, ``TIME_FORMAT``, ``YEAR_MONTH_FORMAT``
-and ``MONTH_DAY_FORMAT``.
+See also ``DATETIME_FORMAT``, ``TIME_FORMAT`` and ``SHORT_DATE_FORMAT``.
 
 .. setting:: DATETIME_FORMAT
 
@@ -257,12 +256,11 @@
 
 Default: ``'N j, Y, P'`` (e.g. ``Feb. 4, 2003, 4 p.m.``)
 
-The default formatting to use for datetime fields on Django admin change-list
-pages -- and, possibly, by other parts of the system. See
-:ttag:`allowed date format strings <now>`.
+The default formatting to use for datetime fields in any part of the system.
+Note that if ``USE_FORMAT_I18N`` is set to ``True``, then locale format will
+be applied. See :ttag:`allowed date format strings <now>`.
 
-See also ``DATE_FORMAT``, ``DATETIME_FORMAT``, ``TIME_FORMAT``,
-``YEAR_MONTH_FORMAT`` and ``MONTH_DAY_FORMAT``.
+See also ``DATE_FORMAT``, ``TIME_FORMAT`` and ``SHORT_DATETIME_FORMAT``.
 
 .. setting:: DEBUG
 
@@ -1003,6 +1001,32 @@
 Whether to save the session data on every request. See
 :ref:`topics-http-sessions`.
 
+.. setting:: SHORT_DATE_FORMAT
+
+SHORT_DATE_FORMAT
+-----------------
+
+Default: ``m/d/Y`` (e.g. ``12/31/2003``)
+
+An available formatting that can be used for date fields on templates.
+Note that if ``USE_FORMAT_I18N`` is set to ``True``, then locale format will
+be applied. See :ttag:`allowed date format strings <now>`.
+
+See also ``DATE_FORMAT`` and ``SHORT_DATETIME_FORMAT``.
+
+.. setting:: SHORT_DATETIME_FORMAT
+
+SHORT_DATETIME_FORMAT
+---------------------
+
+Default: ``m/d/Y P`` (e.g. ``12/31/2003 4 p.m.``)
+
+An available formatting that can be used for datetime fields on templates.
+Note that if ``USE_FORMAT_I18N`` is set to ``True``, then locale format will
+be applied. See :ttag:`allowed date format strings <now>`.
+
+See also ``DATE_FORMAT`` and ``SHORT_DATETIME_FORMAT``.
+
 .. setting:: SITE_ID
 
 SITE_ID
@@ -1167,12 +1191,11 @@
 
 Default: ``'P'`` (e.g. ``4 p.m.``)
 
-The default formatting to use for time fields on Django admin change-list
-pages -- and, possibly, by other parts of the system. See
-:ttag:`allowed date format strings <now>`.
+The default formatting to use for time fields in any part of the system.
+Note that if ``USE_FORMAT_I18N`` is set to ``True``, then locale format will
+be applied. See :ttag:`allowed date format strings <now>`.
 
-See also ``DATE_FORMAT``, ``DATETIME_FORMAT``, ``TIME_FORMAT``,
-``YEAR_MONTH_FORMAT`` and ``MONTH_DAY_FORMAT``.
+See also ``DATE_FORMAT`` and ``DATETIME_FORMAT``.
 
 .. setting:: TIME_ZONE
 


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

Reply via email to