Setup small HTTP server to display scores
This commit is contained in:
parent
d425426c42
commit
caa4bcfa92
|
@ -3,6 +3,7 @@ from disnake import CategoryChannel, PermissionOverwrite, TextChannel
|
|||
from disnake.ext import commands
|
||||
import logging
|
||||
|
||||
from orochi import http
|
||||
from orochi.config import Config
|
||||
from orochi.models import Game
|
||||
|
||||
|
@ -221,6 +222,8 @@ class Confirm(disnake.ui.View):
|
|||
def run():
|
||||
config = Config.load()
|
||||
|
||||
http.run_web_server()
|
||||
|
||||
logger = logging.getLogger('discord')
|
||||
logger.setLevel(logging.DEBUG)
|
||||
handler = logging.FileHandler(filename='../discord.log', encoding='utf-8', mode='w')
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
from threading import Thread
|
||||
|
||||
from flask import Flask, render_template
|
||||
|
||||
from orochi.models import Game
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
game = Game.INSTANCE
|
||||
return render_template('list.html', game=game)
|
||||
|
||||
|
||||
@app.route('/admin')
|
||||
def admin():
|
||||
game = Game.INSTANCE
|
||||
return render_template('list.html', game=game, admin=True)
|
||||
|
||||
|
||||
def run_web_server():
|
||||
Thread(target=lambda: app.run(debug=True, use_reloader=False)).start()
|
|
@ -68,7 +68,7 @@ class RoundVote:
|
|||
|
||||
@property
|
||||
def room(self):
|
||||
for r in Game.rounds:
|
||||
for r in Game.INSTANCE.rounds:
|
||||
for room in r.rooms:
|
||||
if self in room.votes:
|
||||
return room
|
||||
|
@ -126,11 +126,11 @@ class Game:
|
|||
vote1=RoundVote(player1=self.players['Tora']),
|
||||
vote2=RoundVote(player1=self.players['Kamui'],
|
||||
player2=self.players['Philia'])),
|
||||
room_b=RoundRoom(room=Room.A,
|
||||
room_b=RoundRoom(room=Room.B,
|
||||
vote1=RoundVote(player1=self.players['Dan']),
|
||||
vote2=RoundVote(player1=self.players['Ennea'],
|
||||
player2=self.players['Delphine'])),
|
||||
room_c=RoundRoom(room=Room.A,
|
||||
room_c=RoundRoom(room=Room.C,
|
||||
vote1=RoundVote(player1=self.players['Hanabi']),
|
||||
vote2=RoundVote(player1=self.players['Nona'],
|
||||
player2=self.players['Oji'])),
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
<!doctype html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<title>Zero Escape: Radical Outcome</title>
|
||||
|
||||
<style>
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border: 1px solid black;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Scores Nonary Game: Ambidex Edition</h1>
|
||||
|
||||
<h2>Tableau des scores</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Joueur</th>
|
||||
<th>Score</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for player in game.players.values() %}
|
||||
<tr>
|
||||
<td>{{ player.name }}</td>
|
||||
<td>{{ player.score }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2>Récapitulatif par tour</h2>
|
||||
|
||||
{% for round in game.rounds %}
|
||||
<h3>Tour n°{{ round.round }}</h3>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Salle</th>
|
||||
<th>Équipes</th>
|
||||
<th>Vote</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for room in round.rooms %}
|
||||
{% for vote in room.votes %}
|
||||
<tr>
|
||||
{% if loop.index0 == 0 %}
|
||||
<td rowspan="2">{{ room.room.value }}</td>
|
||||
{% endif %}
|
||||
<td>{{ vote.player1.name }}{% if vote.player2 %}, {{ vote.player2.name }}{% endif %}</td>
|
||||
{% if round.round != game.rounds|length or admin %}
|
||||
<td>{{ room.vote1.vote.value|default('Pas de vote') }}</td>
|
||||
{% else %}
|
||||
<td><em>Vote en cours ...</em></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endfor %}
|
||||
</body>
|
||||
</html>
|
|
@ -1,2 +1,3 @@
|
|||
disnake
|
||||
flask
|
||||
pyyaml
|
||||
|
|
Loading…
Reference in New Issue