diff --git a/tests/olap.model b/tests/olap.model index 6a3d74e..4620bb5 100644 --- a/tests/olap.model +++ b/tests/olap.model @@ -239,6 +239,13 @@ "value" : "\"function__receiver\".id", "value_label" : "\"function__receiver\".label" }, + { + "filter": true, + "label": "1st field", + "name": "field_string", + "type": "string", + "value": "\"field_string\"" + }, { "filter" : true, "join" : [ diff --git a/tests/test_wcs.py b/tests/test_wcs.py index 31f615a..80d61b3 100644 --- a/tests/test_wcs.py +++ b/tests/test_wcs.py @@ -66,6 +66,7 @@ schema = olap ('formdata_demande', 'geolocation_base'), ('formdata_demande', 'json_data'), ('formdata_demande', 'status_id'), + ('formdata_demande', 'field_field_string'), ('formdata_demande', 'field_field_item'), ('formdata_demande', 'field_field_bool'), ('formdata_demande', 'function__receiver'), diff --git a/wcs_olap/feeder.py b/wcs_olap/feeder.py index 5b1c07c..d86dca1 100644 --- a/wcs_olap/feeder.py +++ b/wcs_olap/feeder.py @@ -564,6 +564,8 @@ class WcsFormdefFeeder(object): field_def = 'smallint REFERENCES %s (id)' % table_name elif field.type == 'bool': field_def = 'boolean' + elif field.type == 'string': + field_def = 'varchar' else: continue self.fields.append(field) @@ -701,7 +703,7 @@ class WcsFormdefFeeder(object): v = self.items_mappings[field.varname].get(raw) else: v = raw and self.get_item_id(field, raw) - elif field.type == 'bool': + elif field.type in ('string', 'bool'): v = raw # unstructured storage of field values @@ -895,6 +897,14 @@ class WcsFormdefFeeder(object): 'value_label': '(case when "%s" IS NOT NULL then \'Oui\' else \'Non\' end)' % field.varname, 'filter': True, } + elif field.type == 'string': + dimension = { + 'name': field.varname, + 'label': field.label.lower(), + 'type': 'string', + 'value': '"%s"' % field.varname, + 'filter': True, + } else: continue if join: