#!/usr/bin/env python3 class ConfigBase: def __init__(self, c): self._c = c def __getattr__(self, name): if name in self._c.keys(): return self._c.get(name) else: raise AttributeError() class ControllerConfig(ConfigBase): def __init__(self, c): self._c = c class DatabaseConfig(ConfigBase): pass class DectConfig(ConfigBase): def __init__(self, c): self._c = c def check(self): return True class YateConfig(ConfigBase): pass class Config: def __init__(self, c): self._c = c self.controller = ControllerConfig(c.get("controller", {})) self.database = DatabaseConfig(c.get("database", {})) self.dect = DectConfig(c.get("dect", {})) self.yate = YateConfig(c.get("yate", {})) def check(self): return self.dect.check() class ExtensionConfig(ConfigBase): def __init__(self, c): self.num = c[0] self._c = c[1] class Extensions: def __init__(self, c): self._c = c self.extensions = [] for e in self._c.get("extensions", {}).items(): self.extensions.append(ExtensionConfig(e)) def extensions_by_type(self, t): for e in self.extensions: if e.type == t: yield e