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}
|