fix UnicodeDecodeError in PickerWidgetMixin (fixes #23055)

'%s' % _(whatever) will produce a str containing utf-8 characters, but
it will fail when interpolated with another unicode string, which
happend in:

  '%s %s' % (_('Format:'), self.options['format'])

as self.options['format'] is unicode.
This commit is contained in:
Benjamin Dauvergne 2018-04-10 09:49:18 +02:00
parent b3f89132ce
commit 33ffd4e42c
3 changed files with 20 additions and 5 deletions

View File

@ -121,7 +121,7 @@ class PickerWidgetMixin(object):
help_text = self.help_text
if not help_text:
help_text = '%s %s' % (_('Format:'), self.options['format'])
help_text = u'%s %s' % (_('Format:'), self.options['format'])
return mark_safe(BOOTSTRAP_INPUT_TEMPLATE % dict(
id=id,

View File

@ -330,3 +330,11 @@ def assert_external_redirect(external_redirect):
def check_location(response, default_return):
assert response['Location'] == urlparse.urljoin('http://testserver/', default_return)
return check_location
@pytest.fixture
def french_translation():
from django.utils.translation import activate, deactivate
activate('fr')
yield
deactivate()

View File

@ -1,6 +1,13 @@
from authentic2.widgets import DateTimeWidget, DateWidget, TimeWidget
def test_widgets_init():
DateTimeWidget()
DateWidget()
TimeWidget()
def test_widgets_init_and_render_no_locale():
DateTimeWidget().render('wt', '2019/12/12 12:34:34')
DateWidget().render('wt', '2019/12/12')
TimeWidget().render('wt', '12:34:34')
def test_widgets_init_and_render_fr(french_translation):
DateTimeWidget().render('wt', '2019/12/12 12:34:34')
DateWidget().render('wt', '2019/12/12')
TimeWidget().render('wt', '12:34:34')