42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
import os
|
|
|
|
from quart import Quart, redirect, request, jsonify
|
|
import jinja2
|
|
|
|
from jeeves.core.parsers import FlowParser
|
|
|
|
app = Quart(__name__)
|
|
jinja2_env = jinja2.Environment(loader=jinja2.FileSystemLoader("/home/fmartingr/Code/jeeves/jeeves/server/frontend/templates"))
|
|
|
|
|
|
FLOWS = []
|
|
DATA_FOLDER = "~/Code/jeeves/_data"
|
|
for rootname, dirnames, filenames in os.walk(DATA_FOLDER):
|
|
for filename in filenames:
|
|
_zz, extension = os.path.splitext(os.path.join(rootname, filename))
|
|
if extension == '.yaml':
|
|
FLOWS.append(FlowParser.from_yaml(open(os.path.join(rootname, filename), "rb").read()))
|
|
|
|
|
|
@app.route("/healthz")
|
|
async def healthz_view():
|
|
return "ok"
|
|
|
|
|
|
@app.route("/")
|
|
async def home():
|
|
return redirect("/flows")
|
|
|
|
|
|
@app.route("/flows")
|
|
async def list_flows():
|
|
template = jinja2_env.get_template("flows/list.j2")
|
|
return template.render(flows=FLOWS)
|
|
|
|
|
|
@app.route("/flows/<int:flow_id>")
|
|
async def flow_detail(flow_id):
|
|
flow = list(filter(lambda flow: flow.id == flow_id, FLOWS))[0]
|
|
template = jinja2_env.get_template("flows/task-list.j2")
|
|
return template.render(flow=flow)
|