summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2013-06-19 23:42:23 -0400
committerSimon Charette <charette.s@gmail.com>2013-06-20 10:59:41 -0400
commit04628e2016641bfa657333d6ee1f5b371c17f62c (patch)
tree09267c5cac81eeee1d3eac8e75c1394d0b60cd87
parent6ef199a08e1c452289deda67629b1630d25ccfcf (diff)
Fixed #20630 -- Removed `maxlength` attribute from `NumberInput`.
This attribute is only allowed on inputs of type "text", "search", "url", "tel", "email", or "password". Thanks to yoyoma for the report and @bmispelon for the review.
-rw-r--r--django/forms/fields.py10
-rw-r--r--tests/forms_tests/tests/test_fields.py4
-rw-r--r--tests/model_formsets/tests.py2
3 files changed, 5 insertions, 11 deletions
diff --git a/django/forms/fields.py b/django/forms/fields.py
index 52bcf9485c..c4bc3fa88c 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -370,14 +370,8 @@ class DecimalField(IntegerField):
def widget_attrs(self, widget):
attrs = super(DecimalField, self).widget_attrs(widget)
- if isinstance(widget, NumberInput):
- if self.max_digits is not None:
- max_length = self.max_digits + 1 # for the sign
- if self.decimal_places is None or self.decimal_places > 0:
- max_length += 1 # for the dot
- attrs['maxlength'] = max_length
- if self.decimal_places:
- attrs['step'] = '0.%s1' % ('0' * (self.decimal_places-1))
+ if isinstance(widget, NumberInput) and self.decimal_places:
+ attrs['step'] = '0.%s1' % ('0' * (self.decimal_places - 1))
return attrs
diff --git a/tests/forms_tests/tests/test_fields.py b/tests/forms_tests/tests/test_fields.py
index 47c637befa..f7d83503f4 100644
--- a/tests/forms_tests/tests/test_fields.py
+++ b/tests/forms_tests/tests/test_fields.py
@@ -296,7 +296,7 @@ class FieldsTests(SimpleTestCase):
def test_decimalfield_1(self):
f = DecimalField(max_digits=4, decimal_places=2)
- self.assertWidgetRendersTo(f, '<input id="id_f" step="0.01" type="number" name="f" maxlength="6" />')
+ self.assertWidgetRendersTo(f, '<input id="id_f" step="0.01" type="number" name="f" />')
self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
self.assertEqual(f.clean('1'), Decimal("1"))
@@ -342,7 +342,7 @@ class FieldsTests(SimpleTestCase):
def test_decimalfield_3(self):
f = DecimalField(max_digits=4, decimal_places=2, max_value=Decimal('1.5'), min_value=Decimal('0.5'))
- self.assertWidgetRendersTo(f, '<input step="0.01" name="f" min="0.5" max="1.5" maxlength="6" type="number" id="id_f" />')
+ self.assertWidgetRendersTo(f, '<input step="0.01" name="f" min="0.5" max="1.5" type="number" id="id_f" />')
self.assertRaisesMessage(ValidationError, "'Ensure this value is less than or equal to 1.5.'", f.clean, '1.6')
self.assertRaisesMessage(ValidationError, "'Ensure this value is greater than or equal to 0.5.'", f.clean, '0.4')
self.assertEqual(f.clean('1.5'), Decimal("1.5"))
diff --git a/tests/model_formsets/tests.py b/tests/model_formsets/tests.py
index 03cd3b0159..62870c7462 100644
--- a/tests/model_formsets/tests.py
+++ b/tests/model_formsets/tests.py
@@ -559,7 +559,7 @@ class ModelFormsetTest(TestCase):
formset = AuthorBooksFormSet2(instance=author)
self.assertEqual(len(formset.forms), 1)
self.assertHTMLEqual(formset.forms[0].as_p(),
- '<p><label for="id_bookwithcustompk_set-0-my_pk">My pk:</label> <input id="id_bookwithcustompk_set-0-my_pk" type="number" name="bookwithcustompk_set-0-my_pk" maxlength="6" /></p>\n'
+ '<p><label for="id_bookwithcustompk_set-0-my_pk">My pk:</label> <input id="id_bookwithcustompk_set-0-my_pk" type="number" name="bookwithcustompk_set-0-my_pk" /></p>\n'
'<p><label for="id_bookwithcustompk_set-0-title">Title:</label> <input id="id_bookwithcustompk_set-0-title" type="text" name="bookwithcustompk_set-0-title" maxlength="100" /><input type="hidden" name="bookwithcustompk_set-0-author" value="1" id="id_bookwithcustompk_set-0-author" /></p>')
data = {