Projet

Général

Profil

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

Benjamin Dauvergne, 30 janvier 2020 23:06

Télécharger (3,21 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
1001 1001
        for field in good_fields.values():
1002 1002
            join = None
1003 1003

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

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