diff --git a/app/app.db b/app/app.db index 1f61ea9..88ad1e0 100644 Binary files a/app/app.db and b/app/app.db differ diff --git a/app/app.py b/app/app.py index f5f9307..ef9f764 100644 --- a/app/app.py +++ b/app/app.py @@ -5,7 +5,7 @@ from flask_login import LoginManager from .config import Config from .models import User, db -from .results.main import results +from .results.main_select import results from .main import main bootstrap = Bootstrap5() diff --git a/app/main.py b/app/main.py index 82613ab..b10d5d6 100644 --- a/app/main.py +++ b/app/main.py @@ -9,10 +9,12 @@ from flask import ( from flask_login import login_user, current_user, logout_user, login_required from werkzeug.urls import url_parse from .forms import LoginForm -from .models import User, Benchmark +from .models import User, Benchmark, db main = Blueprint("main", __name__) +INDEX = "main.index" + @main.route("/") @main.route("/index") @@ -27,6 +29,21 @@ def index(): return render_template("index.html", benchmarks=benchmarks) +@main.route("/set_benchmark/") +@login_required +def set_benchmark(benchmark_id): + if current_user.admin: + benchmark = Benchmark.query.filter_by(id=benchmark_id).first() + if benchmark is None: + flash("Benchmark not found.") + return redirect(url_for(INDEX)) + current_user.benchmark = benchmark + db.session.commit() + else: + flash("You are not an admin.", "danger") + return redirect(url_for(INDEX)) + + @main.route("/config") @login_required def config(): @@ -36,7 +53,7 @@ def config(): @main.route("/login", methods=["GET", "POST"]) def login(): if current_user.is_authenticated: - return redirect(url_for("main.index")) + return redirect(url_for(INDEX)) form = LoginForm() if form.validate_on_submit(): user = User.query.filter_by(username=form.username.data).first() @@ -47,7 +64,7 @@ def login(): flash("Logged in successfully.") next_page = request.args.get("next") if not next_page or url_parse(next_page).netloc != "": - next_page = url_for("main.index") + next_page = url_for(INDEX) return redirect(next_page) return render_template("login.html", title="Sign In", form=form) @@ -55,4 +72,4 @@ def login(): @main.route("/logout") def logout(): logout_user() - return redirect(url_for("main.index")) + return redirect(url_for(INDEX)) diff --git a/app/results/main.py b/app/results/main_select.py similarity index 94% rename from app/results/main.py rename to app/results/main_select.py index a801e57..90f5f4b 100644 --- a/app/results/main.py +++ b/app/results/main_select.py @@ -1,6 +1,7 @@ import os from benchmark.Utils import Files, Folders from benchmark.ResultsBase import StubReport +from flask_login import current_user from flask import Blueprint, current_app, send_file from flask import render_template, current_app, request, redirect, url_for from flask_login import login_required @@ -19,6 +20,7 @@ results = Blueprint("results", __name__, template_folder="templates") def select(compare="False"): # Get a list of files in a directory files = {} + os.chdir(current_user.benchmark.folder) names = Files.get_all_results(hidden=False) for name in names: report = StubReport(os.path.join(Folders.results, name)) diff --git a/app/static/img/robert-lukeman-_RBcxo9AU-U-unsplash.jpg b/app/static/img/robert-lukeman-_RBcxo9AU-U-unsplash.jpg new file mode 100644 index 0000000..28bb172 Binary files /dev/null and b/app/static/img/robert-lukeman-_RBcxo9AU-U-unsplash.jpg differ diff --git a/app/templates/_nav.html b/app/templates/_nav.html index 1c9f8aa..a5e6c92 100644 --- a/app/templates/_nav.html +++ b/app/templates/_nav.html @@ -1,5 +1,5 @@ {% from 'bootstrap5/nav.html' import render_nav_item %} -