38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
import yaml
|
|
from pathlib import Path
|
|
|
|
|
|
class Config:
|
|
|
|
_conf = dict()
|
|
_list_valid_parameters = {
|
|
"inbox",
|
|
"outbox",
|
|
"theme",
|
|
"title",
|
|
"presentation",
|
|
"url",
|
|
"draft",
|
|
}
|
|
|
|
def __init__(self, config_file: Path):
|
|
"""Constructeur : charge les paramètres depuis le fichier de configuration"""
|
|
with open(config_file) as cfile:
|
|
self._conf = yaml.safe_load(cfile.read())
|
|
|
|
def __getattr__(self, name):
|
|
"""Renvoie la valeur d'un paramètre"""
|
|
if name not in self._list_valid_parameters:
|
|
raise AttributeError(f"L'attribut '{name}' n'existe pas.")
|
|
|
|
if name in self._conf:
|
|
return self._conf[name]
|
|
|
|
return "undefined"
|
|
|
|
def overload(self, parameters: dict):
|
|
"""Surcharge les paramètres depuis une liste fournie"""
|
|
for valid_parameter in self._list_valid_parameters:
|
|
if valid_parameter in parameters:
|
|
self._conf[valid_parameter] = parameters[valid_parameter]
|