diff --git a/server_environment/serv_config.py b/server_environment/serv_config.py index ce038c972..639b8050d 100644 --- a/server_environment/serv_config.py +++ b/server_environment/serv_config.py @@ -19,6 +19,7 @@ # ############################################################################## +import logging import os import ConfigParser from lxml import etree @@ -29,8 +30,15 @@ from odoo.tools.config import config as system_base_config from .system_info import get_server_environment -from odoo.addons import server_environment_files -_dir = os.path.dirname(server_environment_files.__file__) +_logger = logging.getLogger(__name__) + +try: + from odoo.addons import server_environment_files + _dir = os.path.dirname(server_environment_files.__file__) +except ImportError: + _logger.info('not using server_environment_files for configuration,' + ' no directory found') + _dir = None # Same dict as RawConfigParser._boolean_states _boolean_states = {'1': True, 'yes': True, 'true': True, 'on': True, @@ -45,13 +53,15 @@ if not system_base_config.get('running_env', False): "[options]\nrunning_env = dev" ) -ck_path = os.path.join(_dir, system_base_config['running_env']) +ck_path = None +if _dir: + ck_path = os.path.join(_dir, system_base_config['running_env']) -if not os.path.exists(ck_path): - raise Exception( - "Provided server environment does not exist, " - "please add a folder %s" % ck_path - ) + if not os.path.exists(ck_path): + raise Exception( + "Provided server environment does not exist, " + "please add a folder %s" % ck_path + ) def setboolean(obj, attr, _bool=None): @@ -81,8 +91,7 @@ def _listconf(env_path): return files -def _load_config(): - """Load the configuration and return a ConfigParser instance.""" +def _load_config_from_server_env_files(config_p): default = os.path.join(_dir, 'default') running_env = os.path.join(_dir, system_base_config['running_env']) @@ -91,16 +100,25 @@ def _load_config(): else: conf_files = _listconf(running_env) - config_p = ConfigParser.SafeConfigParser() - # options are case-sensitive - config_p.optionxform = str try: config_p.read(conf_files) except Exception as e: raise Exception('Cannot read config files "%s": %s' % (conf_files, e)) + + +def _load_config_from_rcfile(config_p): config_p.read(system_base_config.rcfile) config_p.remove_section('options') + +def _load_config(): + """Load the configuration and return a ConfigParser instance.""" + config_p = ConfigParser.SafeConfigParser() + # options are case-sensitive + config_p.optionxform = str + if _dir: + _load_config_from_server_env_files(config_p) + _load_config_from_rcfile(config_p) return config_p