From c10bbacaf995da10e368f05e625b4c9855fde5ca Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Fri, 28 Nov 2025 14:19:02 +0100 Subject: [PATCH] Added possibility to deactivate active filter set. fix #3789 --- frontend/src/api/account.js | 3 + frontend/src/views/account/FiltersView.vue | 98 ++++++++++++++-------- modoboa/sievefilters/api/v2/viewsets.py | 10 +++ 3 files changed, 74 insertions(+), 37 deletions(-) diff --git a/frontend/src/api/account.js b/frontend/src/api/account.js index c5c8dcc09..dc6fc6031 100644 --- a/frontend/src/api/account.js +++ b/frontend/src/api/account.js @@ -70,6 +70,9 @@ export default { activateFilterSet(filterSetName) { return repository.post(`${resource}/filtersets/${filterSetName}/activate/`) }, + deactivateActiveFilterSet() { + return repository.post(`${resource}/filtersets/deactivate_active/`) + }, deleteFilterSet(filterSetName) { return repository.delete(`${resource}/filtersets/${filterSetName}/`) }, diff --git a/frontend/src/views/account/FiltersView.vue b/frontend/src/views/account/FiltersView.vue index 1a0da2c9c..5a7e592da 100644 --- a/frontend/src/views/account/FiltersView.vue +++ b/frontend/src/views/account/FiltersView.vue @@ -4,7 +4,7 @@ {{ $gettext('Message filters') }} - + - {{ $gettext('Add') }} + {{ $gettext('New') }} - - - - + + + - - - + + + + diff --git a/modoboa/sievefilters/api/v2/viewsets.py b/modoboa/sievefilters/api/v2/viewsets.py index b025e0aa5..2047da9c0 100644 --- a/modoboa/sievefilters/api/v2/viewsets.py +++ b/modoboa/sievefilters/api/v2/viewsets.py @@ -99,6 +99,16 @@ class FilterSetViewSet(viewsets.ViewSet): return response.Response({"error": str(err)}, status=400) return response.Response() + @action(methods=["post"], detail=False) + def deactivate_active(self, request): + """Deactivate the current active filterset.""" + sclient = self.get_sieve_client(request) + try: + sclient.activatescript("") + except SieveClientError as err: + return response.Response({"error": str(err)}, status=400) + return response.Response() + @action(methods=["get"], detail=True) def download(self, request, pk): """Download the content of an existing filter set."""