Skip to content

Commit

Permalink
Added a page to view submitted games
Browse files Browse the repository at this point in the history
  • Loading branch information
itsmatu committed Jan 28, 2022
1 parent 683c36a commit 352f02e
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 15 deletions.
Binary file added .app.py.swp
Binary file not shown.
Binary file added .schema.sql.swp
Binary file not shown.
Binary file modified __pycache__/app.cpython-38.pyc
Binary file not shown.
28 changes: 19 additions & 9 deletions app.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,28 +60,38 @@ def mainpage():
username = session["username"]
user = db.session.execute("SELECT id FROM users WHERE username=:username", {"username": username})
user_id = user.fetchone()[0]
averages = db.session.execute("SELECT average_date, average FROM averages WHERE user_id=:user_id ORDER BY id DESC", {"user_id": user_id})
topavgs = db.session.execute("SELECT average_date, average FROM averages WHERE user_id=:user_id ORDER BY average DESC LIMIT 5", {"user_id": user_id})
averages = db.session.execute("SELECT game_id, average_date, average FROM averages WHERE user_id=:user_id ORDER BY id DESC", {"user_id": user_id})
topavgs = db.session.execute("SELECT game_id, average_date, average FROM averages WHERE user_id=:user_id ORDER BY average DESC LIMIT 5", {"user_id": user_id})
total_avg = db.session.execute("SELECT AVG(average)::numeric(3,1) FROM averages WHERE user_id=:user_id AND average_date > NOW() - INTERVAL '30 days'", {"user_id": user_id})
total = total_avg.fetchone()[0]
return render_template("mainpage.html", avgs=averages, total=total, topavgs=topavgs)
else:
averages = db.session.execute("SELECT average_date, average FROM averages")
top_averages = db.session.execute("SELECT average_date, average FROM averages ORDER BY average DESC LIMIT 5")
averages = db.session.execute("SELECT game_id, average_date, average FROM averages")
top_averages = db.session.execute("SELECT game_id, average_date, average FROM averages ORDER BY average DESC LIMIT 5")
return render_template("mainpage.html", avgs=averages, topavgs=top_averages)
if request.method == "POST":
average = request.form["addaverage"]
username = session["username"]
user = db.session.execute("SELECT id FROM users WHERE username=:username", {"username": username})
user_id = user.fetchone()[0]
sql = "INSERT INTO averages (average_date, user_id, average) VALUES (current_date, :user_id, :average)"
db.session.execute(sql, {"user_id": user_id, "average": average})
sql_game = "INSERT INTO games (game_date, player_one) VALUES (current_date, :player_one)"
db.session.execute(sql_game, {"player_one": user_id})
game = db.session.execute("SELECT id FROM games ORDER BY id DESC")
game_id = game.fetchone()[0]
sql = "INSERT INTO averages (game_id, average_date, user_id, average) VALUES (:game_id, current_date, :user_id, :average)"
db.session.execute(sql, {"game_id": game_id, "user_id": user_id, "average": average})
db.session.commit()
return redirect("/")

@app.route("/game", methods = ["GET"])
def game():
return render_template("game.html")
@app.route("/game/<int:id>", methods = ["GET"])
def game(id):
avg_sql = db.session.execute("SELECT * FROM averages WHERE game_id=:id", {"id": id})
game_sql = db.session.execute("SELECT * FROM games WHERE id=:id", {"id": id})
avg = avg_sql.fetchone()
player = db.session.execute("SELECT username FROM users WHERE id=:user_id", {"user_id": avg.user_id})
player_one = player.fetchone()
game = game_sql.fetchone()
return render_template("game.html", game=game, avg=avg, player1=player_one)

@app.route("/newgame", methods = ["GET", "POST"])
def newgame():
Expand Down
2 changes: 1 addition & 1 deletion schema.sql
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
CREATE TABLE users (id SERIAL PRIMARY KEY, username TEXT UNIQUE, password TEXT);
CREATE TABLE settings (id SERIAL PRIMARY KEY, user_id INTEGER REFERENCES users, name TEXT, language TEXT);
CREATE TABLE averages (id SERIAL PRIMARY KEY, average_date DATE, user_id INTEGER REFERENCES users, average REAL);
CREATE TABLE averages (id SERIAL PRIMARY KEY, game_id INTEGER REFERENCES games, average_date DATE, user_id INTEGER REFERENCES users, average REAL);
CREATE TABLE games (id SERIAL PRIMARY KEY, game_date DATE, player_one INTEGER REFERENCES users, player_two INTEGER REFERENCES users, result INTEGER);
Binary file added templates/.mainpage.html.swp
Binary file not shown.
1 change: 1 addition & 0 deletions templates/game.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<title>Darts scores</title>
<h1>Game</h1>

<p>{{ player1.username }} {{ avg.average }}</p>
<a href="/mainpage">Back to main page</a>
10 changes: 5 additions & 5 deletions templates/mainpage.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{% if session.username %}
<p>You are logged in as <b>{{ session.username }}</b><a href="/logout">Log out</a></p>
<p>You are logged in as <b>{{ session.username }}</b><a href="/logout"> Log out</a></p>
<form action="/mainpage" method="POST">
Add an average: <input type="number" step="0.1" min=0 max=180 name="addaverage">
<br>
Expand All @@ -8,20 +8,20 @@
<h1>Your total average past 30 days: <u>{{ total }}</u></h1>
<h2>Your top 5 averages: </h2>
{%for avg in topavgs %}
<p>{{ avg.average_date }} {{ avg.average }} <a href="/game">view</a></p>
<p>Date: {{ avg.average_date }} Average: <b>{{ avg.average }}</b> - <a href="/game/{{ avg.game_id }}">view</a></p>
{% endfor %}
<h2>Your averages:</h2>
{% for avg in avgs %}
<p>{{ avg.average_date }} {{ avg.average }} <a href="/game">view</a></p>
<p>Date: {{ avg.average_date }} Average: <b>{{ avg.average }}</b> - <a href="/game/{{ avg.game_id }}">view</a></p>
{% endfor %}
{% else %}
<a href="/login">Log in</a>
<h1>Top 5 averages:</h1>
{% for avg in topavgs %}
<p> {{ avg.average_date }} {{ avg.average }} <a href="/game">view</a></p>
<p>Date: {{ avg.average_date }} Average: <b>{{ avg.average }}</b> - <a href="/game/{{ avg.game_id }}">view</a></p>
{% endfor %}
<h2>All averages:</h2>
{% for avg in avgs %}
<p>{{ avg.average_date }} {{ avg.average }} <a href="/game">view</a></p>
<p>Date: {{ avg.average_date }} Average: <b>{{ avg.average }}</b> - <a href="/game/{{ avg.game_id }}">view</a></p>
{% endfor %}
{% endif %}

0 comments on commit 352f02e

Please sign in to comment.