from os import mkdir from os.path import isdir, join from shutil import rmtree from rougail.template import generate from tiramisu import Storage from ...config import ROOT_CACHE_DIR, CONFIGURATION_DIR, TEMPLATE_DIR, TMP_DIR from ...controller import Controller from ...register import register from ...dispatcher import dispatcher class Risotto(Controller): def __init__(self): self.storage = Storage(engine='dictionary') @register('v1.template.generate', None) async def template_get(self, server_id: int): config_module = dispatcher.get_service('config') server = config_module.server[server_id] config = meta = server['server'].config.deepcopy(storage=self.storage) while True: try: children = list(config.config.list()) except: break if children: config = children[0] else: break print(config.value.dict()) configurations_dir = join(CONFIGURATION_DIR, str(server_id)) if isdir(configurations_dir): rmtree(configurations_dir) mkdir(configurations_dir) tmp_dir = join(TMP_DIR, str(server_id)) if isdir(tmp_dir): rmtree(tmp_dir) mkdir(tmp_dir) templates_dir = join(TEMPLATE_DIR, str(server_id)) generate(config, server['funcs_file'], templates_dir, tmp_dir, configurations_dir) return {'server_id': server_id, 'template_dir': configurations_dir}