-
Notifications
You must be signed in to change notification settings - Fork 328
/
Copy pathserver.py
72 lines (55 loc) · 2.35 KB
/
server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# app/server.py
from flask import Flask, render_template, request, redirect, flash, url_for
from app.booking_manager import BookingManager
# Indique que le dossier statique se trouve dans ../static (à la racine du projet)
# Les templates seront recherchés par défaut dans "templates" situé dans ce même dossier (ici "app/templates")
app = Flask(__name__, static_folder="../static")
app.secret_key = "secret_key_xyz"
# Instanciation du manager avec les chemins de fichiers en paramètre
manager = BookingManager(
clubs_file="data/clubs.json",
competitions_file="data/competitions.json"
)
@app.route("/")
def index():
return render_template("index.html")
@app.route("/showSummary", methods=["POST"])
def show_summary():
email = request.form.get("email", "")
club = manager.find_club_by_email(email)
if not club:
flash("Email inconnu ou invalide.")
return redirect(url_for("index"))
return render_template("welcome.html", club=club, competitions=manager.competitions)
@app.route("/book/<competition>/<club>")
def book(competition, club):
found_competition = manager.find_competition_by_name(competition)
found_club = manager.find_club_by_name(club)
if not found_competition or not found_club:
flash("Something went wrong - please try again")
return redirect(url_for("index"))
return render_template("booking.html", club=found_club, competition=found_competition)
@app.route("/purchasePlaces", methods=["POST"])
def purchase_places():
competition_name = request.form.get("competition")
club_name = request.form.get("club")
places_str = request.form.get("places")
try:
places_requested = int(places_str)
except ValueError:
flash("Le nombre de places est invalide.")
return redirect(url_for("index"))
success = manager.purchase_places(
club_name, competition_name, places_requested)
if success:
flash("Great-booking complete!")
else:
flash("Impossible de réserver ces places (Règle non respectée).")
club = manager.find_club_by_name(club_name)
return render_template("welcome.html", club=club, competitions=manager.competitions)
@app.route("/clubsPoints")
def clubs_points():
return render_template("clubs_points.html", clubs=manager.clubs)
@app.route("/logout")
def logout():
return redirect(url_for("index"))