feeder: factorize values in field's schemas (#39373)

This commit is contained in:
Benjamin Dauvergne 2020-01-29 12:49:43 +01:00
parent 047d03200c
commit 04ad4ee2d2
1 changed files with 19 additions and 14 deletions

View File

@ -963,43 +963,48 @@ class WcsFormdefFeeder(object):
for field in good_fields.values():
join = None
join_name = field.varname
field_name = 'field_%s' % field.varname
dimension_name = field.varname
dimension_label = field.label.lower()
if field.type == 'item':
table_name = self.hash_table_name('%s_field_%s' % (self.table_name, field.varname))
join = {
'name': field.varname,
'name': join_name,
'table': quote(table_name),
'master': quote('field_%s' % field.varname),
'master': quote(field_name),
'detail': 'id',
'kind': 'left',
}
dimension = {
'name': field.varname,
'label': field.label.lower(),
'join': [field.varname],
'name': dimension_name,
'label': dimension_label,
'join': [join_name],
'type': 'integer',
'value': '%s.id' % quote(field.varname),
'value_label': '%s.label' % quote(field.varname),
'value': '%s.id' % quote(join_name),
'value_label': '%s.label' % quote(join_name),
'filter': True,
}
elif field.type == 'bool':
dimension = {
'name': field.varname,
'label': field.label.lower(),
'name': dimension_name,
'label': dimension_label,
'type': 'bool',
'value': quote('field_%s' % field.varname),
'value': quote(field_name),
'value_label': '(CASE WHEN %(field)s IS NULL THEN NULL'
' WHEN %(field)s THEN \'Oui\''
' ELSE \'Non\' END)' % {
'field': quote('field_%s' % field.varname),
'field': quote(field_name),
},
'filter': True,
}
elif field.type == 'string':
dimension = {
'name': field.varname,
'label': field.label.lower(),
'name': dimension_name,
'label': dimension_label,
'type': 'string',
'value': quote('field_%s' % field.varname),
'value': quote(field_name),
'filter': True,
}
else: