summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-11-29 19:30:38 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-11-29 19:30:38 +0000
commit29892d02fa9c9ab3e48a18a143408abc3c88716e (patch)
tree05773a30e8c6e9005075c9fc21dbae346f8a2b25
parent7a166f1a1c126bea547ad00387ff134ee4743b1c (diff)
Fixed #6014 -- More robust error handling when validating decimal fields.
Thanks, pigletto. git-svn-id: http://code.djangoproject.com/svn/django/trunk@6746 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/newforms/fields.py4
-rw-r--r--tests/regressiontests/forms/fields.py4
2 files changed, 6 insertions, 2 deletions
diff --git a/django/newforms/fields.py b/django/newforms/fields.py
index 9b1253de1f..4a54a98d61 100644
--- a/django/newforms/fields.py
+++ b/django/newforms/fields.py
@@ -17,7 +17,7 @@ except NameError:
from sets import Set as set
from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import StrAndUnicode, smart_unicode
+from django.utils.encoding import StrAndUnicode, smart_unicode, smart_str
from util import ErrorList, ValidationError
from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, FileInput, CheckboxInput, Select, NullBooleanSelect, SelectMultiple, DateTimeInput
@@ -235,7 +235,7 @@ class DecimalField(Field):
super(DecimalField, self).clean(value)
if not self.required and value in EMPTY_VALUES:
return None
- value = str(value).strip()
+ value = smart_str(value).strip()
try:
value = Decimal(value)
except DecimalException:
diff --git a/tests/regressiontests/forms/fields.py b/tests/regressiontests/forms/fields.py
index 1c436ce680..cff5db6fca 100644
--- a/tests/regressiontests/forms/fields.py
+++ b/tests/regressiontests/forms/fields.py
@@ -323,6 +323,10 @@ Decimal("3.14")
Traceback (most recent call last):
...
ValidationError: [u'Enter a number.']
+>>> f.clean(u'łąść')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a number.']
>>> f.clean('1.0 ')
Decimal("1.0")
>>> f.clean(' 1.0')