From 0366298c55f118df72990aed46ec132a71e0b9f6 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 29 Jan 2020 12:49:43 +0100 Subject: [PATCH 1/2] feeder: factorize values in field's schemas (#39373) --- wcs_olap/feeder.py | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/wcs_olap/feeder.py b/wcs_olap/feeder.py index e1cafb0..1292142 100644 --- a/wcs_olap/feeder.py +++ b/wcs_olap/feeder.py @@ -1000,43 +1000,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': join_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': join_name, + 'label': dimension_label, 'type': 'string', - 'value': quote('field_%s' % field.varname), + 'value': quote(field_name), 'filter': True, } else: -- 2.24.0