From 54ba72ba746cb3e346898db40ee07cb097251c0c Mon Sep 17 00:00:00 2001 From: Akhil Narang Date: Fri, 2 Feb 2024 17:42:35 +0530 Subject: [PATCH] feat: allow extending site config with a hook Signed-off-by: Akhil Narang --- frappe/__init__.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/frappe/__init__.py b/frappe/__init__.py index 90f01b3b98..3c4e1ebbdd 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -17,6 +17,7 @@ import inspect import json import os import re +import traceback import warnings from collections.abc import Callable from typing import TYPE_CHECKING, Any, Literal, Optional, TypeAlias, overload @@ -435,6 +436,18 @@ def get_site_config(sites_path: str | None = None, site_path: str | None = None) os.environ.get("FRAPPE_DB_USER") or config.get("db_user") or config.get("db_name") ) + # Allow externally extending the config with hooks + if extra_config := config.get("extra_config"): + if isinstance(extra_config, str): + extra_config = [extra_config] + for hook in extra_config: + try: + module, method = hook.rsplit(".", 1) + config |= getattr(importlib.import_module(module), method)() + except Exception: + print(f"Config hook {hook} failed") + traceback.print_exc() + return config