Opened 18 years ago
Closed 18 years ago
#4593 closed (wontfix)
Unicode error in newforms\forms.py
Reported by: | Owned by: | Malcolm Tredinnick | |
---|---|---|---|
Component: | Internationalization | Version: | dev |
Severity: | Keywords: | unicode newforms | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
When translating a project, I ran into a Unicode error in newforms. As it seems, the field label wasn't being smart_unicode
-d. A small patch is attached to fix that problem.
(Actually, two patches. Fix the same problem, but in different functions. Don't know where you want the problem fixed - but method B is probably better.)
The same problem persists with help_text, although that doesn't seem as easy to fix. If one uses help_text=gettext("foo")
everything works fine (as help_text is thrown through smart_unicode
in newform\fields.py
's Field.__init__()
). But if one uses gettext_lazy
, help_text
is a Promise
instance, doesn't get encoded and an exception is raised when string formatting is done.
A dirty hack to avoid this could be to call help_text
's __str__()
directly, that is change [browser:django/trunk/django/newforms/forms.py#5481#L136]
help_text = help_text_html % field.help_text
to
help_text = help_text_html % smart_unicode(field.help_text.__str__())
.. but this probably doesn't qualify as a fix ;) !!
Or, hmm. Well. Shouldn't field.help_text be escaped at this point anyway? So perhaps the line should be changed to
help_text = help_text_html % smart_unicode(escape(field.help_text))
Better add a third patch with this included..
Attachments (3)
Change History (4)
by , 18 years ago
Attachment: | unicode.newforms.a.patch added |
---|
by , 18 years ago
Attachment: | unicode.newforms.b.patch added |
---|
Encode label in label_tag using smart_unicode
by , 18 years ago
Attachment: | unicode.newforms.c.patch added |
---|
Encode label in label_tag and help_text in _html_output using smart_unicode
comment:1 by , 18 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
Thanks for the patch. However, this is the type of problem we've fixed right across the unicode branch (in a slightly different fashion). So we aren't going to be fixing isolated incidents on trunk, but rather moving towards merging the unicode branch into trunk as soon as possible.
Encode label in _html_output using smart_unicode