""" Methods for rendering of the various Jinja templates from the given data. """ import os import json import jinja2 def create_dropdown_panel(title, **kwargs): TEMPLATE_FILENAME = os.path.abspath(os.path.join( os.path.dirname(__file__), 'templates', 'shared', 'dropdown.json.j2')) with open(TEMPLATE_FILENAME) as f: template = jinja2.Template(f.read()) return template.render({**kwargs, 'title': title}) # wrapper around bits/s and err/s panel labels def create_yaxes(type): file = os.path.abspath(os.path.join( os.path.dirname(__file__), 'templates', 'shared', 'yaxes.json.j2')) with open(file) as f: template = jinja2.Template(f.read()) return template.render({'type': type}) def create_panel_target(data): file = os.path.abspath(os.path.join( os.path.dirname(__file__), 'templates', 'shared', 'panel_target.json.j2')) with open(file) as f: template = jinja2.Template(f.read()) return template.render(data) def create_panel(data): file = os.path.abspath(os.path.join( os.path.dirname(__file__), 'templates', 'shared', 'panel.json.j2')) with open(file) as f: template = jinja2.Template(f.read()) yaxes = create_yaxes(data.get('y_axis_type', 'bits')) targets = data.get('targets', []) for target in data.get('panel_targets', []): targets.append(create_panel_target(target)) return template.render({**data, 'yaxes': yaxes, 'targets': targets}) def render_dashboard(dashboard): file = os.path.abspath(os.path.join( os.path.dirname(__file__), 'templates', 'shared', 'dashboard.json.j2')) with open(file) as f: template = jinja2.Template(f.read()) rendered = template.render(dashboard) rendered = json.loads(rendered) rendered['uid'] = None rendered['id'] = None return rendered