fields: handle table with unicode row labels (#23147)

This commit is contained in:
Frédéric Péters 2018-04-12 23:03:13 +02:00
parent d03e155327
commit 87fbb4c783
2 changed files with 3 additions and 2 deletions

View File

@ -2003,7 +2003,8 @@ def test_form_file_field_submit_wrong_mimetype(pub):
def test_form_table_field_submit(pub, emails):
formdef = create_formdef()
formdef.fields = [fields.TableField(id='0', label='table', type='table',
rows=['a', 'b'], columns=['c', 'd', 'e'], required=False)]
rows=[u'à'.encode(pub.site_charset), 'b'],
columns=['c', 'd', u'e'.encode(pub.site_charset)], required=False)]
formdef.store()
formdef.data_class().wipe()

View File

@ -1708,7 +1708,7 @@ class TableField(WidgetField):
r.append(' '.join([smart_text(column).center(max_width) for column in ['/']+self.columns]))
r.append(' '.join(['='*max_width]*(len(self.columns)+1)))
for i, row in enumerate(self.rows):
r.append(' '.join([cell.center(max_width) for cell in [row] +
r.append(' '.join([cell.center(max_width) for cell in [smart_text(row)] +
[get_value(i, x) for x in range(len(self.columns))]]))
r.append(' '.join(['='*max_width]*(len(self.columns)+1)))
return misc.site_encode('\n'.join([indent + x for x in r]))