From 4247204d050a856f60e1c7395c8e2794838d39dd Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Tue, 16 Jul 2024 13:46:54 +0200 Subject: [PATCH] Better errors display for sieve connections --- frontend/src/api/repository.js | 4 +++- modoboa/sievefilters/api/v2/viewsets.py | 4 ---- modoboa/sievefilters/lib.py | 12 +++++------- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/frontend/src/api/repository.js b/frontend/src/api/repository.js index 3117adbb3..9c23ab68a 100644 --- a/frontend/src/api/repository.js +++ b/frontend/src/api/repository.js @@ -1,7 +1,7 @@ import axios from 'axios' import Cookies from 'js-cookie' import router from '@/router' -import { useAuthStore } from '@/stores' +import { useAuthStore, useBusStore } from '@/stores' const _axios = axios.create() @@ -36,6 +36,8 @@ _axios.interceptors.response.use( return Promise.reject(error) } if (error.response.status !== 401 || router.currentRoute.name === 'Login') { + const busStore = useBusStore() + busStore.displayNotification({ msg: error.response.data, type: 'error' }) return Promise.reject(error) } const refreshToken = Cookies.get('refreshToken') diff --git a/modoboa/sievefilters/api/v2/viewsets.py b/modoboa/sievefilters/api/v2/viewsets.py index e53bf9f97..51b822135 100644 --- a/modoboa/sievefilters/api/v2/viewsets.py +++ b/modoboa/sievefilters/api/v2/viewsets.py @@ -13,7 +13,6 @@ from drf_spectacular.utils import extend_schema, OpenApiParameter from rest_framework import response, viewsets from rest_framework.decorators import action -from modoboa.lib.connections import ConnectionError from modoboa.lib.viewsets import HasMailbox from modoboa.sievefilters import constants from modoboa.sievefilters.lib import SieveClient, SieveClientError @@ -35,10 +34,7 @@ class FilterSetViewSet(viewsets.ViewSet): serializer_class = serializers.FilterSetSerializer def get_sieve_client(self, request): - # try: return SieveClient(user=request.user.username, password=str(request.auth)) - # except ConnectionError as e: - # raise def list(self, request): """Retrieve list of available filter sets.""" diff --git a/modoboa/sievefilters/lib.py b/modoboa/sievefilters/lib.py index 68194871f..7776adc41 100644 --- a/modoboa/sievefilters/lib.py +++ b/modoboa/sievefilters/lib.py @@ -6,11 +6,10 @@ from typing import Optional, Tuple, Union from sievelib.factory import FiltersSet from sievelib import managesieve from sievelib.parser import Parser -import six from django.utils.translation import gettext as _ -from modoboa.lib.connections import ConnectionsManager, ConnectionError +from modoboa.lib.connections import ConnectionError from modoboa.lib.exceptions import ModoboaException from modoboa.parameters import tools as param_tools @@ -18,10 +17,9 @@ from . import constants class SieveClientError(ModoboaException): - http_code = 424 + http_code = 400 -# @six.add_metaclass(ConnectionsManager) class SieveClient: """Sieve client.""" @@ -31,10 +29,10 @@ class SieveClient: if user and password: try: ret, msg = self.login(user, password) - except managesieve.Error as e: - raise ConnectionError(str(e)) + except (managesieve.Error, ConnectionError) as e: + raise SieveClientError(str(e)) if not ret: - raise ConnectionError(msg) + raise SieveClientError(msg) def login(self, user: str, password: str) -> Tuple[bool, Union[str, None]]: conf = dict(param_tools.get_global_parameters("sievefilters"))