Fixed #3266 -- newforms: Made RadioSelect accept funky characters. Thanks for reporting, Honza Kral

git-svn-id: http://code.djangoproject.com/svn/django/trunk@4304 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2007-01-10 23:25:29 +00:00
parent f6a7002ef1
commit fa38ce7207
2 changed files with 8 additions and 3 deletions

View File

@ -172,14 +172,15 @@ class RadioInput(StrAndUnicode):
def __init__(self, name, value, attrs, choice, index): def __init__(self, name, value, attrs, choice, index):
self.name, self.value = name, value self.name, self.value = name, value
self.attrs = attrs self.attrs = attrs
self.choice_value, self.choice_label = choice self.choice_value = smart_unicode(choice[0])
self.choice_label = smart_unicode(choice[1])
self.index = index self.index = index
def __unicode__(self): def __unicode__(self):
return u'<label>%s %s</label>' % (self.tag(), self.choice_label) return u'<label>%s %s</label>' % (self.tag(), self.choice_label)
def is_checked(self): def is_checked(self):
return self.value == smart_unicode(self.choice_value) return self.value == self.choice_value
def tag(self): def tag(self):
if self.attrs.has_key('id'): if self.attrs.has_key('id'):

View File

@ -527,12 +527,16 @@ True
>>> r[1].is_checked() >>> r[1].is_checked()
False False
>>> r[1].name, r[1].value, r[1].choice_value, r[1].choice_label >>> r[1].name, r[1].value, r[1].choice_value, r[1].choice_label
('beatle', u'J', 'P', 'Paul') ('beatle', u'J', u'P', u'Paul')
>>> r[10] >>> r[10]
Traceback (most recent call last): Traceback (most recent call last):
... ...
IndexError: list index out of range IndexError: list index out of range
>>> w = RadioSelect()
>>> unicode(w.render('email', 'ŠĐĆŽćžšđ', choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')]))
u'<ul>\n<li><label><input checked="checked" type="radio" name="email" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" /> \u0160\u0110abc\u0106\u017d\u0107\u017e\u0161\u0111</label></li>\n<li><label><input type="radio" name="email" value="\u0107\u017e\u0161\u0111" /> abc\u0107\u017e\u0161\u0111</label></li>\n</ul>'
# CheckboxSelectMultiple Widget ############################################### # CheckboxSelectMultiple Widget ###############################################
>>> w = CheckboxSelectMultiple() >>> w = CheckboxSelectMultiple()