from flask import render_template import vars import jinja2 import subprocess import codecs from markdown2 import Markdown import sass file_loader = jinja2.FileSystemLoader(".") env = jinja2.Environment(loader=file_loader) # Converts templates/footer.md from Markdown to HTML md = Markdown() footer_file = env.get_template("templates/footer.md") footer_jinja = footer_file.render(title=vars.brand.title()) footer = footer_jinja # Functions for rendering Jinja2 templates & importing variables class html: def renderTemplate(t): if t == "index": template = env.get_template("templates/index.html") elif t == "429": template = env.get_template("templates/429.html") elif t == "415": template = env.get_template("templates/415.html") elif t == "test": template = env.get_template("templates/429.html") return template.render( site_title=vars.brand.site_title(), primary_asn=vars.gen.primary_asn(), google_analytics=vars.gen.google_analytics(), enable_recaptcha=vars.gen.enable_recaptcha(), enable_bgp_route=vars.gen.enable_bgp_route(), enable_bgp_community=vars.gen.enable_bgp_community(), enable_bgp_aspath=vars.gen.enable_bgp_aspath(), enable_ping=vars.gen.enable_ping(), enable_traceroute=vars.gen.enable_traceroute(), title=vars.brand.title(), subtitle=vars.brand.subtitle(), title_mode=vars.brand.title_mode(), color_hero=vars.brand.color_hero(), enable_credit=vars.brand.enable_credit(), enable_footer=vars.brand.enable_footer(), footer_content=md.convert(footer), logo_path=vars.brand.logo_path(), logo_width=vars.brand.logo_width(), placeholder_prefix=vars.brand.placeholder_prefix(), show_peeringdb=vars.brand.show_peeringdb(), text_results=vars.brand.text_results(), text_location=vars.brand.text_location(), text_cache=vars.brand.text_cache(), text_415_title=vars.brand.text_415_title(), text_415_subtitle=vars.brand.text_415_subtitle(), text_415_button=vars.brand.text_415_button(), text_help_bgp_route=vars.brand.text_help_bgp_route(), text_help_bgp_community=vars.brand.text_help_bgp_community(), text_help_bgp_aspath=vars.brand.text_help_bgp_aspath(), text_help_ping=vars.brand.text_help_ping(), text_help_traceroute=vars.brand.text_help_traceroute(), message_rate_limit_query=vars.gen.message_rate_limit_query(), text_limiter_title=vars.brand.text_limiter_title(), text_limiter_subtitle=vars.brand.text_limiter_subtitle(), cache_timeout=vars.gen.cache_timeout(), ) class css: def renderTemplate(): try: template = env.get_template("templates/hyperglass.scss") rendered_output = template.render( color_btn_submit=vars.brand.color_btn_submit(), color_progressbar=vars.brand.color_progressbar(), color_tag_loctitle=vars.brand.color_tag_loctitle(), color_tag_cmdtitle=vars.brand.color_tag_cmdtitle(), color_tag_cmd=vars.brand.color_tag_cmd(), color_tag_loc=vars.brand.color_tag_loc(), color_hero=vars.brand.color_hero(), primary_font_url=vars.brand.primary_font_url(), primary_font_name=vars.brand.primary_font_name(), mono_font_url=vars.brand.mono_font_url(), mono_font_name=vars.brand.mono_font_name(), ) with open("static/sass/hyperglass.scss", "w") as scss_output: scss_output.write(rendered_output) except: raise TypeError("Error rendering Jinja2 template.") try: generated_sass = sass.compile(filename="static/sass/hyperglass.scss") with open("static/css/hyperglass.css", "w") as css_output: css_output.write(generated_sass) print("\n", "* Sass templates rendered to CSS files.", "\n") except: raise TypeError("Error rendering Sass template.")