OpoTests/Python/Managers/ControllersManager.py

36 lines
1.2 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from typing import Self, Any
from Interfaces.ControllersAbstractInterface import ControllersAbstractInterface
from Interfaces.OpoTestsInterface import OpoTestsInterface
from Models.RequestModel import RequestModel
class ControllersManager:
def __init__(self:Self, ot:OpoTestsInterface) -> None:
self.ot:OpoTestsInterface = ot
self.__controllers:dict[str, ControllersAbstractInterface] = {}
def start(self:Self) -> None:
pass
def add(self:Self, inputs:str|ControllersAbstractInterface|list|tuple, overwrite:bool = False) -> None:
item:dict[str, ControllersAbstractInterface]
for item in self.ot.load_json_data(inputs, False) or (inputs,):
key:str
controller:ControllersAbstractInterface
for key, controller in item.items():
if overwrite or key not in self.__controllers:
self.__controllers[key] = controller
def get(self:Self,
key:str,
action:str,
request:RequestModel
) -> tuple[Any|None, dict[str, Any|None]]|None:
return self.__controllers[key].get(action, request) if key in self.__controllers else None