25 lines
685 B
Python
25 lines
685 B
Python
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/<name>", 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
|