99 lines
3 KiB
Python
99 lines
3 KiB
Python
from flask import Blueprint, render_template, request, redirect, url_for, jsonify
|
|
import json
|
|
import os
|
|
from app.utils import gpio_handler, countdown, zeitmessung, system_tools
|
|
|
|
main = Blueprint("main", __name__)
|
|
|
|
@main.route("/")
|
|
def index():
|
|
return render_template("index.html")
|
|
|
|
@main.route("/rennen_starten")
|
|
def rennen_starten():
|
|
with open("config/fahrer.json") as f:
|
|
fahrer = json.load(f)
|
|
return render_template("rennen_starten.html", fahrer=fahrer)
|
|
|
|
@main.route("/countdown_starten", methods=["POST"])
|
|
def countdown_starten():
|
|
countdown.start()
|
|
return redirect(url_for("main.rennansicht"))
|
|
|
|
@main.route("/rennansicht")
|
|
def rennansicht():
|
|
with open("config/fahrer.json") as f:
|
|
fahrer = json.load(f)
|
|
return render_template("rennbildschirm.html", fahrer=fahrer)
|
|
|
|
@main.route("/fahrerverwaltung")
|
|
def fahrerverwaltung():
|
|
with open("config/fahrer.json") as f:
|
|
fahrer = json.load(f)
|
|
return render_template("fahrerverwaltung.html", fahrer=fahrer)
|
|
|
|
@main.route("/fahrerverwaltung/speichern", methods=["POST"])
|
|
def fahrer_speichern():
|
|
data = request.get_json()
|
|
with open("config/fahrer.json", "w") as f:
|
|
json.dump(data, f, indent=2)
|
|
return jsonify({"status": "ok"})
|
|
|
|
@main.route("/admin")
|
|
def admin():
|
|
return render_template("admin.html")
|
|
|
|
@main.route("/zeit_zuordnen")
|
|
def zeit_zuordnen():
|
|
with open("data/zeiten.json") as f:
|
|
zeiten = json.load(f)
|
|
with open("config/fahrer.json") as f:
|
|
fahrer = json.load(f)
|
|
return render_template("zeit_zuordnen.html", zeiten=zeiten, fahrer=fahrer)
|
|
|
|
@main.route("/zuordnung/speichern", methods=["POST"])
|
|
def zuordnung_speichern():
|
|
data = request.get_json()
|
|
with open("data/zuordnung.json", "w") as f:
|
|
json.dump(data, f, indent=2)
|
|
return jsonify({"status": "ok"})
|
|
|
|
@main.route("/ergebnis")
|
|
def ergebnis():
|
|
zuordnung_path = "data/zuordnung.json"
|
|
fahrer_path = "config/fahrer.json"
|
|
|
|
with open(fahrer_path) as f:
|
|
fahrer_list = json.load(f)
|
|
|
|
if os.path.exists(zuordnung_path):
|
|
with open(zuordnung_path) as f:
|
|
zuordnungen = json.load(f)
|
|
else:
|
|
zuordnungen = []
|
|
|
|
fahrer_dict = {str(f["nummer"]): {"name": f["name"], "zeiten": [], "farbe": f["farbe"]} for f in fahrer_list}
|
|
|
|
for eintrag in zuordnungen:
|
|
fahrer_id = str(eintrag["fahrer"])
|
|
zeit = float(eintrag["zeit"])
|
|
if fahrer_id in fahrer_dict:
|
|
fahrer_dict[fahrer_id]["zeiten"].append(zeit)
|
|
|
|
ergebnisse = []
|
|
for nummer, daten in fahrer_dict.items():
|
|
zeiten = daten["zeiten"]
|
|
if zeiten:
|
|
beste = min(zeiten)
|
|
durchschnitt = sum(zeiten) / len(zeiten)
|
|
gesamt = sum(zeiten)
|
|
ergebnisse.append({
|
|
"nummer": nummer,
|
|
"name": daten["name"],
|
|
"farbe": daten["farbe"],
|
|
"beste": f"{beste:.3f}",
|
|
"durchschnitt": f"{durchschnitt:.3f}",
|
|
"gesamt": f"{gesamt:.3f}"
|
|
})
|
|
|
|
return render_template("ergebnis.html", ergebnisse=ergebnisse)
|