fields: handle csv output for table fields

This commit is contained in:
Frédéric Péters 2012-08-13 10:50:20 +02:00
parent 601c0a8d2b
commit aecacef348
1 changed files with 27 additions and 21 deletions

View File

@ -198,6 +198,9 @@ class Field:
def get_csv_heading(self):
return []
def get_csv_value(self, element):
return []
class WidgetField(Field):
hint = None
@ -967,6 +970,27 @@ class TableField(WidgetField):
r.append(' '.join(['='*max_width]*(len(self.columns)+1)))
return '\n'.join([indent + x for x in r])
def get_csv_heading(self):
labels = []
for col in self.columns:
for row in self.rows:
t = '%s / %s' % (col, row)
if len(labels) == 0:
labels.append('%s - %s' % (self.label, t))
else:
labels.append(t)
return labels
def get_csv_value(self, value):
values = []
for i in range(len(self.columns)):
for j in range(len(self.rows)):
try:
values.append(value[j][i])
except IndexError:
values.append('')
return values
register_field_class(TableField)
@ -1009,27 +1033,6 @@ class TableSelectField(TableField):
return
d[v] = None
def get_csv_heading(self):
labels = []
for col in self.columns:
for row in self.rows:
t = '%s / %s' % (col, row)
if len(labels) == 0:
labels.append('%s - %s' % (self.label, t))
else:
labels.append(t)
return labels
def get_csv_value(self, value):
values = []
for i in range(len(self.columns)):
for j in range(len(self.rows)):
try:
values.append(value[j][i])
except IndexError:
values.append('')
return values
register_field_class(TableSelectField)
@ -1154,6 +1157,9 @@ class TableRowsField(WidgetField):
r.append(' '.join(['='*max_width]*(len(self.columns))))
return '\n'.join([indent + x for x in r])
def get_csv_value(self, element):
return [_('unimplemented')] # XXX
register_field_class(TableRowsField)