summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2010-12-21 15:07:43 +0000
committerJannis Leidel <jannis@leidel.info>2010-12-21 15:07:43 +0000
commit3cf8502d35cdfbb4f868a848b1f38dcc275f6be1 (patch)
tree8639f2d8136ed3d52abb7bf7ff0393ee1b2d0ff8
parent75f16982d839be682b4f54d9f179caa4a86c07a5 (diff)
Fixed #4976 -- Stopped humanize template tags to raise a TypeError if passed a value of ``None``. Thanks, Simon G. and Adam Vandenberg.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15000 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/humanize/templatetags/humanize.py7
-rw-r--r--django/forms/formsets.py1
-rw-r--r--tests/regressiontests/humanize/tests.py19
3 files changed, 18 insertions, 9 deletions
diff --git a/django/contrib/humanize/templatetags/humanize.py b/django/contrib/humanize/templatetags/humanize.py
index 3e19fed823..cfa93fe534 100644
--- a/django/contrib/humanize/templatetags/humanize.py
+++ b/django/contrib/humanize/templatetags/humanize.py
@@ -43,7 +43,10 @@ def intword(value):
numbers over 1 million. For example, 1000000 becomes '1.0 million', 1200000
becomes '1.2 million' and '1200000000' becomes '1.2 billion'.
"""
- value = int(value)
+ try:
+ value = int(value)
+ except (TypeError, ValueError):
+ return value
if value < 1000000:
return value
if value < 1000000000:
@@ -66,7 +69,7 @@ def apnumber(value):
"""
try:
value = int(value)
- except ValueError:
+ except (TypeError, ValueError):
return value
if not 0 < value < 10:
return value
diff --git a/django/forms/formsets.py b/django/forms/formsets.py
index 9a1b5a8cac..8c153f6cf1 100644
--- a/django/forms/formsets.py
+++ b/django/forms/formsets.py
@@ -263,6 +263,7 @@ class BaseFormSet(StrAndUnicode):
# We loop over every form.errors here rather than short circuiting on the
# first failure to make sure validation gets triggered for every form.
forms_valid = True
+ err = self.errors
for i in range(0, self.total_form_count()):
form = self.forms[i]
if self.can_delete:
diff --git a/tests/regressiontests/humanize/tests.py b/tests/regressiontests/humanize/tests.py
index e1962ab442..7eeaaee594 100644
--- a/tests/regressiontests/humanize/tests.py
+++ b/tests/regressiontests/humanize/tests.py
@@ -32,24 +32,29 @@ class HumanizeTests(unittest.TestCase):
def test_intcomma(self):
test_list = (100, 1000, 10123, 10311, 1000000, 1234567.25,
- '100', '1000', '10123', '10311', '1000000', '1234567.1234567')
+ '100', '1000', '10123', '10311', '1000000', '1234567.1234567',
+ None)
result_list = ('100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.25',
- '100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.1234567')
+ '100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.1234567',
+ None)
self.humanize_tester(test_list, result_list, 'intcomma')
def test_intword(self):
test_list = ('100', '1000000', '1200000', '1290000',
- '1000000000','2000000000','6000000000000')
+ '1000000000','2000000000','6000000000000',
+ None)
result_list = ('100', '1.0 million', '1.2 million', '1.3 million',
- '1.0 billion', '2.0 billion', '6.0 trillion')
+ '1.0 billion', '2.0 billion', '6.0 trillion',
+ None)
self.humanize_tester(test_list, result_list, 'intword')
def test_apnumber(self):
test_list = [str(x) for x in range(1, 11)]
+ test_list.append(None)
result_list = (u'one', u'two', u'three', u'four', u'five', u'six',
- u'seven', u'eight', u'nine', u'10')
+ u'seven', u'eight', u'nine', u'10', None)
self.humanize_tester(test_list, result_list, 'apnumber')
@@ -61,10 +66,10 @@ class HumanizeTests(unittest.TestCase):
someday = today - timedelta(days=10)
notdate = u"I'm not a date value"
- test_list = (today, yesterday, tomorrow, someday, notdate)
+ test_list = (today, yesterday, tomorrow, someday, notdate, None)
someday_result = defaultfilters.date(someday)
result_list = (_(u'today'), _(u'yesterday'), _(u'tomorrow'),
- someday_result, u"I'm not a date value")
+ someday_result, u"I'm not a date value", None)
self.humanize_tester(test_list, result_list, 'naturalday')
if __name__ == '__main__':