From 4286429cba03173804ff5855eeb5f282227bbff2 Mon Sep 17 00:00:00 2001 From: Pierre Verkest Date: Tue, 7 Mar 2023 18:37:12 +0100 Subject: [PATCH] [IMP] server_environment: allow env variable conf --- server_environment/readme/CONFIGURE.rst | 6 ++++++ server_environment/server_env.py | 21 ++++++++++++------- .../tests/test_server_environment.py | 15 ++++++++++++- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/server_environment/readme/CONFIGURE.rst b/server_environment/readme/CONFIGURE.rst index b3e8024c..28b91f0c 100644 --- a/server_environment/readme/CONFIGURE.rst +++ b/server_environment/readme/CONFIGURE.rst @@ -5,6 +5,12 @@ used values are 'dev', 'test', 'production':: [options] running_env=dev +Or set the `RUNNING_ENV` or `ODOO_STAGE` environment variable. If both all are set config file +will take the precedence on environment and `RUNNING_ENV` over `ODOO_STAGE`. + +`ODOO_STAGE` is used for odoo.sh platform where we can't set `RUNNING_ENV`, possible +observed values are `production`, `staging` and `dev` + Values associated to keys containing 'passw' are only displayed in the 'dev' environment. diff --git a/server_environment/server_env.py b/server_environment/server_env.py index ef89a79b..c20654c7 100644 --- a/server_environment/server_env.py +++ b/server_environment/server_env.py @@ -45,13 +45,20 @@ def _load_running_env(): if not system_base_config.get("running_env"): - _logger.info("`running_env` not found. Using default = `test`.") - _logger.info( - "We strongly recommend against using the rc file but instead use an " - "explicit config file or env variable." - ) - # safe default - system_base_config["running_env"] = "test" + env_running_env = os.environ.get("RUNNING_ENV", os.environ.get("ODOO_STAGE")) + if env_running_env: + system_base_config["running_env"] = env_running_env + else: + _logger.info( + "`running_env` or `RUNNING_ENV`, `ODOO_STAGE` not found. " + "Using default = `test`." + ) + _logger.info( + "We strongly recommend against using the rc file but instead use an " + "explicit config file or env variable." + ) + # safe default + system_base_config["running_env"] = "test" _load_running_env() diff --git a/server_environment/tests/test_server_environment.py b/server_environment/tests/test_server_environment.py index 0abc84ae..253d6c6e 100644 --- a/server_environment/tests/test_server_environment.py +++ b/server_environment/tests/test_server_environment.py @@ -1,6 +1,6 @@ # Copyright 2018 Camptocamp (https://www.camptocamp.com). # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - +import os from unittest.mock import patch from odoo.tools.config import config as odoo_config @@ -35,8 +35,21 @@ def test_default_dev(self): @patch.dict(odoo_config.options, {"running_env": "whatever"}) def test_default_non_dev_env(self): + server_env._load_running_env() self._test_default(hidden_pwd=True) + @patch.dict(odoo_config.options, {"running_env": None}) + @patch.dict(os.environ, {"RUNNING_ENV": "dev"}) + def test_default_dev_from_environ(self): + server_env._load_running_env() + self._test_default() + + @patch.dict(odoo_config.options, {"running_env": None}) + @patch.dict(os.environ, {"ODOO_STAGE": "dev"}) + def test_odoosh_dev_from_environ(self): + server_env._load_running_env() + self._test_default() + @patch.dict(odoo_config.options, {"running_env": "testing"}) def test_value_retrival(self): with self.set_config_dir("testfiles"):