From 39720bb44a32264542b5d7ac6ba34c9fab96d4fc Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Thu, 4 Apr 2024 15:56:29 +0200 Subject: [PATCH] Deal with boolean values for argument --- frontend/src/components/account/FilterForm.vue | 14 ++++++++++++-- modoboa/sievefilters/api/v2/serializers.py | 6 +----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/account/FilterForm.vue b/frontend/src/components/account/FilterForm.vue index a60b24b82..42add6e18 100644 --- a/frontend/src/components/account/FilterForm.vue +++ b/frontend/src/components/account/FilterForm.vue @@ -107,6 +107,8 @@ v-if="arg.type === 'boolean'" v-model="action.args[arg.name]" :label="arg.label" + color="primary" + :value="arg.value" /> @@ -265,12 +267,20 @@ async function submit() { return } let msg + const data = JSON.parse(JSON.stringify(form.value)) + for (const action of data.actions) { + for (const [key, value] of Object.entries(action.args)) { + if (typeof value === 'boolean' && !value) { + delete action.args[key] + } + } + } try { if (!props.filter) { - await accountApi.createFilter(props.filterSet, form.value) + await accountApi.createFilter(props.filterSet, data) msg = $gettext('Filter added') } else { - await accountApi.updateFilter(props.filterSet, originalFilterName, form.value) + await accountApi.updateFilter(props.filterSet, originalFilterName, data) msg = $gettext('Filter updated') } } catch (err) { diff --git a/modoboa/sievefilters/api/v2/serializers.py b/modoboa/sievefilters/api/v2/serializers.py index e69362e86..e6ffb9362 100644 --- a/modoboa/sievefilters/api/v2/serializers.py +++ b/modoboa/sievefilters/api/v2/serializers.py @@ -85,11 +85,7 @@ class FilterSerializer(serializers.Serializer): for argtpl in tpl.get("args", []): if argtpl["name"] not in c: continue - value = c[argtpl["name"]] - if argtpl["type"] == "boolean": - value = True if value else False - else: - value = value.strip('"') + value = c[argtpl["name"]].strip('"') action["args"][argtpl["name"]] = value item["actions"] += [action] result.append(item)