import json from jinja2 import Environment, FileSystemLoader import sys import os def extract_param_names(mc): result = {} def extract_param_groups(mc): return [k for k in mc['params']] def build_modem_env(modem): with open('render-params.json') as f: config = json.load(f) if modem not in config['modem_types']: raise RuntimeError(f"Modem '{modem}' is not exist in config!") mc = config['modem_types'][modem] return { "modem": modem, "modem_name": mc['modem_name'], "header_tabs": mc['tabs'], "tab_names_array": [t['name'] for t in mc['tabs']], "params": mc["params"], "paramGroupsWithNames": extract_param_names(mc), "paramGroupsList": extract_param_groups(mc), } def render_modem(modem): loader = FileSystemLoader('template') env = Environment(loader=loader, trim_blocks=True, lstrip_blocks=True) template = env.get_template('main.html') context = build_modem_env(modem) with open(f"main-{modem}.html", "w") as f: f.write(template.render(context)) if __name__ == '__main__': render_modem('scpc') render_modem('tdma') os.system('cp -u main-tdma.html ../static') os.system('cp -u main-scpc.html ../static')