Projet

Général

Profil

0001-feeder-factorize-values-in-field-s-schemas-39373.patch

Benjamin Dauvergne, 29 janvier 2020 12:51

Télécharger (3,2 ko)

Voir les différences:

Subject: [PATCH 1/2] feeder: factorize values in field's schemas (#39373)

 wcs_olap/feeder.py | 33 +++++++++++++++++++--------------
 1 file changed, 19 insertions(+), 14 deletions(-)
wcs_olap/feeder.py
1000 1000
        for field in good_fields.values():
1001 1001
            join = None
1002 1002

  
1003
            join_name = field.varname
1004
            field_name = 'field_%s' % field.varname
1005
            dimension_name = field.varname
1006
            dimension_label = field.label.lower()
1007

  
1003 1008
            if field.type == 'item':
1004 1009
                table_name = self.hash_table_name('%s_field_%s' % (self.table_name, field.varname))
1005 1010
                join = {
1006
                    'name': field.varname,
1011
                    'name': join_name,
1007 1012
                    'table': quote(table_name),
1008
                    'master': quote('field_%s' % field.varname),
1013
                    'master': quote(field_name),
1009 1014
                    'detail': 'id',
1010 1015
                    'kind': 'left',
1011 1016
                }
1012 1017
                dimension = {
1013
                    'name': field.varname,
1014
                    'label': field.label.lower(),
1015
                    'join': [field.varname],
1018
                    'name': dimension_name,
1019
                    'label': dimension_label,
1020
                    'join': [join_name],
1016 1021
                    'type': 'integer',
1017
                    'value': '%s.id' % quote(field.varname),
1018
                    'value_label': '%s.label' % quote(field.varname),
1022
                    'value': '%s.id' % quote(join_name),
1023
                    'value_label': '%s.label' % quote(join_name),
1019 1024
                    'filter': True,
1020 1025
                }
1021 1026
            elif field.type == 'bool':
1022 1027
                dimension = {
1023
                    'name': field.varname,
1024
                    'label': field.label.lower(),
1028
                    'name': join_name,
1029
                    'label': dimension_label,
1025 1030
                    'type': 'bool',
1026
                    'value': quote('field_%s' % field.varname),
1031
                    'value': quote(field_name),
1027 1032
                    'value_label': '(CASE WHEN %(field)s IS NULL THEN NULL'
1028 1033
                                   ' WHEN %(field)s THEN \'Oui\''
1029 1034
                                   ' ELSE \'Non\' END)' % {
1030
                        'field': quote('field_%s' % field.varname),
1035
                        'field': quote(field_name),
1031 1036
                    },
1032 1037
                    'filter': True,
1033 1038
                }
1034 1039
            elif field.type == 'string':
1035 1040
                dimension = {
1036
                    'name': field.varname,
1037
                    'label': field.label.lower(),
1041
                    'name': join_name,
1042
                    'label': dimension_label,
1038 1043
                    'type': 'string',
1039
                    'value': quote('field_%s' % field.varname),
1044
                    'value': quote(field_name),
1040 1045
                    'filter': True,
1041 1046
                }
1042 1047
            else:
1043
-