init
This commit is contained in:
commit
ce1095bb24
27 changed files with 621 additions and 0 deletions
99
app/routes.py
Normal file
99
app/routes.py
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
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)
|
||||
Reference in a new issue