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
-~----------~----~----~----~------~----~------~--~---