Code

Opened 7 years ago

Closed 7 years ago

#4593 closed (wontfix)

Unicode error in newforms\forms.py

Reported by: bjorn.swift@… Owned by: mtredinnick
Component: Internationalization Version: master
Severity: Keywords: unicode newforms
Cc: Triage Stage: Unreviewed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

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)

unicode.newforms.a.patch (1005 bytes) - added by Bjorn Swift <bjorn.swift@…> 7 years ago.
Encode label in _html_output using smart_unicode
unicode.newforms.b.patch (851 bytes) - added by Bjorn Swift <bjorn.swift@…> 7 years ago.
Encode label in label_tag using smart_unicode
unicode.newforms.c.patch (1.3 KB) - added by Bjorn Swift <bjorn.swift@…> 7 years ago.
Encode label in label_tag and help_text in _html_output using smart_unicode

Download all attachments as: .zip

Change History (4)

Changed 7 years ago by Bjorn Swift <bjorn.swift@…>

Encode label in _html_output using smart_unicode

Changed 7 years ago by Bjorn Swift <bjorn.swift@…>

Encode label in label_tag using smart_unicode

Changed 7 years ago by Bjorn Swift <bjorn.swift@…>

Encode label in label_tag and help_text in _html_output using smart_unicode

comment:1 Changed 7 years ago by mtredinnick

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Resolution set to wontfix
  • Status changed from new to 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.

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'new'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.