Skip to content

Commit ea9733c

Browse files
committed
check for multiselect
1 parent 271ed85 commit ea9733c

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

Mergin/field_filtering.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,14 @@ def __init__(
8585
self.provider = ""
8686
self.layer_id = ""
8787

88+
allow_multi = None
8889
if layer is not None:
8990
provider = layer.dataProvider()
9091
self.provider = provider.name() if provider else ""
9192
self.layer_id = layer.id()
93+
allow_multi = layer.fields().field(field_name).editorWidgetSetup().config().get("AllowMulti", None)
94+
95+
self.field_has_multi_selection = allow_multi == True
9296

9397
self.field_name = field_name
9498
self.filter_type = filter_type
@@ -167,10 +171,16 @@ def _generate_sql_expression(self) -> None:
167171
elif self.filter_type == FieldFilterType.CHECKBOX:
168172
expr = f"{field} = {SQL_PLACEHOLDER_VALUE}"
169173

170-
elif self.filter_type == FieldFilterType.SINGLE_SELECT:
174+
elif (
175+
self.filter_type in (FieldFilterType.SINGLE_SELECT, FieldFilterType.MULTI_SELECT)
176+
and self.field_has_multi_selection is False
177+
):
171178
expr = f"{field} IS {SQL_PLACEHOLDER_VALUE}"
172179

173-
elif self.filter_type == FieldFilterType.MULTI_SELECT:
180+
elif (
181+
self.filter_type in (FieldFilterType.SINGLE_SELECT, FieldFilterType.MULTI_SELECT)
182+
and self.field_has_multi_selection is True
183+
):
174184
expr = f"(',' || TRIM(\"NAME_OF_FIELD\", '{{}}') || ',' ) LIKE '%,' || {SQL_PLACEHOLDER_VALUE} || ',%'"
175185

176186
else:

0 commit comments

Comments
 (0)