from flask import Flask, render_template, request import math from profiles import profiles app = Flask(__name__) # --- Matching logic (server-side copy, used for initial render only) --- def euclidean_distance(a, b): return math.sqrt(sum((x - y) ** 2 for x, y in zip(a, b))) @app.route("/") def index(): return render_template("about.html") @app.route("/inactive") def inactive(): # Default user values (all 20). Client-side UI will live-update from there. user_values = [20, 20, 20, 20, 20, 20] sorted_matches = sorted( profiles.items(), key=lambda p: euclidean_distance(user_values, p[1]['values']) ) top_matches = sorted_matches[:3] return render_template( "inactive.html", user=user_values, top_matches=top_matches, profiles=profiles, ) @app.route("/profiles") def profiles_page(): return render_template("profiles.html", profiles=profiles) @app.route("/quiz", methods=["GET", "POST"]) def quiz(): if request.method == "POST": user_values = [ int(request.form.get(f"point{i}", 20)) for i in range(1, 7) ] sorted_matches = sorted( profiles.items(), key=lambda p: euclidean_distance(user_values, p[1]['values']) ) top_matches = sorted_matches[:3] return render_template("result.html", user=user_values, top_matches=top_matches, profiles=profiles) return render_template("quiz.html", profiles=profiles) @app.route("/result") def result(): return render_template("result.html", profiles=profiles) if __name__ == "__main__": app.run(host='localhost', port=1337, debug=False)