diff --git a/modoboa/core/utils.py b/modoboa/core/utils.py index d3903687d..820ded898 100644 --- a/modoboa/core/utils.py +++ b/modoboa/core/utils.py @@ -13,7 +13,7 @@ from django.utils.translation import gettext as _ from modoboa.core.extensions import exts_pool from modoboa.core.password_hashers import get_configured_password_hasher, PasswordHasher from modoboa.lib.api_client import ModoAPIClient -from modoboa.rspamd.utils import check_rspamd_installed +from modoboa.rspamd.utils import check_rspamd_installed, get_rspamd_options def parse_map_file(path): @@ -108,7 +108,8 @@ def get_capabilities(): """Return the list of capabilities of this modoboa instance.""" capabilities = {} # Rspamd - rspamd_options = check_rspamd_installed() - if rspamd_options is not None: + is_rspamd_installed = check_rspamd_installed() + if is_rspamd_installed: + rspamd_options = get_rspamd_options() capabilities.update({"rspamd": rspamd_options}) return capabilities diff --git a/modoboa/rspamd/management/commands/manage_rspamd_maps.py b/modoboa/rspamd/management/commands/manage_rspamd_maps.py index 4446bb234..c4cf4474a 100644 --- a/modoboa/rspamd/management/commands/manage_rspamd_maps.py +++ b/modoboa/rspamd/management/commands/manage_rspamd_maps.py @@ -1,4 +1,5 @@ """Management command to create DKIM keys.""" + from django.core.management.base import BaseCommand, CommandError from modoboa.parameters import tools as param_tools diff --git a/modoboa/rspamd/utils.py b/modoboa/rspamd/utils.py index aace6b6bf..14d014070 100644 --- a/modoboa/rspamd/utils.py +++ b/modoboa/rspamd/utils.py @@ -4,21 +4,27 @@ import shutil from django.core.exceptions import AppRegistryNotReady -from modoboa.lib import signals as lib_signals - def check_rspamd_installed(): + return shutil.which("rspamd") is not None + + +def get_rspamd_options(): try: - is_rspamd_installed = shutil.which("rspamd") is not None - rspamd_options = {} if is_rspamd_installed else None - request = lib_signals.get_request() - if is_rspamd_installed: - if request is not None: - rspamd_options["location"] = request.localconfig.parameters.get_value( - "rspamd_dashboard_location" - ) - else: - rspamd_options["location"] = None + from modoboa.core import models + + is_rspamd_installed = check_rspamd_installed() + if not is_rspamd_installed: + return None + rspamd_options = {} + localconfig = models.LocalConfig.objects.first() + rspamd_location = localconfig.parameters.get_value( + "rspamd_dashboard_location", raise_exception=False + ) + if not rspamd_location: + return None + rspamd_options["location"] = rspamd_location + return rspamd_options except AppRegistryNotReady: + # If the instance is not restarted after rspamd installation return None - return rspamd_options