Merge pull request #1564 from alumni/master

Fixes #1535 (HTML widget missing `id` attribute)
This commit is contained in:
Carlton Gibson 2014-05-09 10:36:06 +02:00
commit d69d975015
2 changed files with 17 additions and 1 deletions

View File

@ -154,7 +154,12 @@ class Field(object):
def widget_html(self): def widget_html(self):
if not self.widget: if not self.widget:
return '' return ''
return self.widget.render(self._name, self._value)
attrs = {}
if 'id' not in self.widget.attrs:
attrs['id'] = self._name
return self.widget.render(self._name, self._value, attrs=attrs)
def label_tag(self): def label_tag(self):
return '<label for="%s">%s:</label>' % (self._name, self.label) return '<label for="%s">%s:</label>' % (self._name, self.label)

View File

@ -4,6 +4,7 @@ General serializer field tests.
from __future__ import unicode_literals from __future__ import unicode_literals
import datetime import datetime
import re
from decimal import Decimal from decimal import Decimal
from uuid import uuid4 from uuid import uuid4
from django.core import validators from django.core import validators
@ -103,6 +104,16 @@ class BasicFieldTests(TestCase):
keys = list(field.to_native(ret).keys()) keys = list(field.to_native(ret).keys())
self.assertEqual(keys, ['c', 'b', 'a', 'z']) self.assertEqual(keys, ['c', 'b', 'a', 'z'])
def test_widget_html_attributes(self):
"""
Make sure widget_html() renders the correct attributes
"""
r = re.compile('(\S+)=["\']?((?:.(?!["\']?\s+(?:\S+)=|[>"\']))+.)["\']?')
form = TimeFieldModelSerializer().data
attributes = r.findall(form.fields['clock'].widget_html())
self.assertIn(('name', 'clock'), attributes)
self.assertIn(('id', 'clock'), attributes)
class DateFieldTest(TestCase): class DateFieldTest(TestCase):
""" """