pyceo/ceo_common/model/Config.py

35 lines
1.1 KiB
Python
Raw Normal View History

2021-08-03 19:19:33 -04:00
from configparser import ConfigParser
import os
from typing import Union
2021-07-19 01:47:39 -04:00
from zope.interface import implementer
from ceo_common.interfaces import IConfig
@implementer(IConfig)
class Config:
2021-08-03 19:19:33 -04:00
def __init__(self, config_file: Union[str, None] = None):
if config_file is None:
config_file = os.environ.get('CEOD_CONFIG', '/etc/csc/ceod.ini')
self.config = ConfigParser()
self.config.read(config_file)
2021-07-19 01:47:39 -04:00
def get(self, key: str) -> str:
2021-08-03 19:19:33 -04:00
section, subkey = key.split('_', 1)
if section in self.config:
2021-08-03 23:30:19 -04:00
val = self.config[section][subkey]
else:
val = self.config['DEFAULT'][key]
if val.isdigit():
return int(val)
if val.lower() in ['true', 'yes']:
return True
if val.lower() in ['false', 'no']:
return False
# We should do something about this...
if section.startswith('auxiliary ') or section == 'positions' or \
(section == 'registry' and key == 'projects_to_ignore'):
return [item.strip() for item in val.split(',')]
2021-08-03 23:30:19 -04:00
return val