added config to Trigger

This commit is contained in:
2024-12-07 16:26:42 +01:00
parent 860d19097b
commit 9710a19dbf
3 changed files with 23 additions and 6 deletions
+9 -1
View File
@@ -3,12 +3,16 @@ from pathlib import Path
from lxml import etree from lxml import etree
from functools import cached_property from functools import cached_property
from arguments import ArgumentsParser from arguments import ArgumentsParser
from typing import NamedTuple from typing import NamedTuple, Optional
class TriggerTuple(NamedTuple): class TriggerTuple(NamedTuple):
name: str name: str
interval_in_seconds: int interval_in_seconds: int
class MissingConfig(Exception):
pass
class Config: class Config:
@@ -57,3 +61,7 @@ class Config:
) )
return ret_val return ret_val
def get_trigger_by_name(self, name: str) -> Optional[TriggerTuple]:
_all_trigger_tuples = self.triggertuples.copy()
return next((t for t in _all_trigger_tuples if t.name == name), None)
+12 -3
View File
@@ -1,9 +1,18 @@
from logger import getLogger from logger import getLogger
from config import Config from config import Config, TriggerTuple, MissingConfig
class Trigger: class Trigger:
def __init__(self, name: str, config: Config) -> None: def __init__(self, name: str, _config: Config) -> None:
self.name = name self.name = name
self.log = getLogger('trigger', loglevel=config.loglevel.upper()) self._config = _config
self.log = getLogger('trigger', loglevel=_config.loglevel.upper())
self.log.info(f'initializing {self.__class__.__name__}') self.log.info(f'initializing {self.__class__.__name__}')
@property
def config(self) -> TriggerTuple:
_config = self._config.get_trigger_by_name(self.name)
if _config is None:
raise MissingConfig(f"Trigger {self.name} hasn't been properly configures")
return _config
+2 -2
View File
@@ -2,6 +2,6 @@ from trigger import Trigger
from config import Config from config import Config
class RoonTrigger(Trigger): class RoonTrigger(Trigger):
def __init__(self, name: str, config: Config) -> None: def __init__(self, name: str, _config: Config) -> None:
super().__init__(name, config) super().__init__(name, _config)