49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
|
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}
|