from subprocess import run from flask import Flask, request from jinja2 import Environment, FileSystemLoader app = Flask(__name__) tpl_env = Environment(loader=FileSystemLoader("templates")) @app.route("/api/render/", methods=["POST"]) def render_template(name): template = tpl_env.get_template(f"{name}.scad.j2") parameters = request.get_json() scad_source = template.render(parameters) proc = run( ["openscad", "-", "-o", "-", "--hardwarnings", "--export-format", "stl"], input=scad_source.encode("utf-8"), capture_output=True, ) if proc.returncode == 0: return proc.stdout else: return proc.stderr, 500