factored code to reuse get_rst_view_value in detailed_email

Correct this bug: eval(data[field.id]) could crash when data[field.id] was not
a string. This is the case on multipage forms, when formdata.data contains
boolean values instead of string ('True' or 'False').
This commit is contained in:
Thomas NOËL 2011-08-19 14:57:40 +00:00
parent f69ca38d01
commit c9185caa87
1 changed files with 2 additions and 9 deletions

View File

@ -411,20 +411,15 @@ class FormDef(StorableObject):
details.append(' %s' % formdata.user.name)
details.append('')
data = formdata.data
for field in self.fields:
data = formdata.data
if isinstance(field, (fields.SubtitleField, fields.TitleField, fields.CommentField,
fields.PageField)):
continue
if data.get(field.id) is None:
continue
details.append(_('%s:') % field.label)
if field.type == 'bool':
if eval(data[field.id]):
details.append(' %s' % _('Yes'))
else:
details.append(' %s' % _('No'))
elif field.type == 'file':
if field.type == 'file':
if 'status' in url:
file_url = url.replace('status', 'download?f=%s' % field.id)
else:
@ -433,8 +428,6 @@ class FormDef(StorableObject):
elif field.type == 'text':
# XXX: howto support preformatted text in a dl in docutils ?
details.append((' %s' % data[field.id]).replace('\n', '\n '))
elif field.type == 'date':
details.append(' %s' % strftime.strftime(date_format(), data[field.id]))
else:
details.append('%s' % field.get_rst_view_value(data[field.id], indent=' '))
details.append('')