123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- from flask import Flask, flash, redirect, render_template, abort, request, session
- from tournament import Tournament
- app = Flask(__name__)
- app.secret_key = "This is an extremely secret key"
- T = Tournament(sdump=True)
- @app.route("/")
- def index():
- compact = session.get('compact', False)
- games = list(T.running_games.values())
- games.sort(key = lambda x: x.table)
- return render_template("index.html.j2", tournament=T, compact=compact, sdump=T.sdump, games=games)
- @app.route("/compact/<z>")
- def compact(z):
- c = bool(int(z))
- session['compact'] = c
- return redirect('/')
- @app.route("/sdump/<z>")
- def sdump(z):
- c = bool(int(z))
- T.sdump = c
- return redirect('/')
- @app.route("/sched", methods=['POST'])
- def schedule_default():
- try:
- T.schedule_round()
- except RuntimeError as e:
- flash(str(e))
- return redirect('/')
- @app.route("/finalize/<int:t>", methods=['POST'])
- def finalize(t):
- if t not in T.running_games:
- abort(404)
- g = T.running_games[t]
- try:
- if 's' in request.form:
- s1 = int(request.form['s'])
- s2 = 4-s1
- else:
- s1 = int(request.form['s1'])
- s2 = int(request.form['s2'])
- except (ValueError, KeyError):
- abort(400)
- g.finalize((s1,s2))
- return redirect('/')
- @app.route("/cancel", methods=['POST'])
- def cancel():
- for g in list(T.running_games.values()):
- g.finalize((0, 0))
- flash("All games have been cancelled")
- return redirect('/')
- @app.route("/randomize", methods=['POST'])
- def randomize():
- import random
- for g in list(T.running_games.values()):
- a = random.randint(0, 4)
- g.finalize((a, 4-a))
- flash("All games have been randomized")
- return redirect('/')
- @app.route("/sort", methods=['POST'])
- def sort():
- T.sort_players()
- return redirect('/')
- @app.route("/remove", methods=['POST'])
- def remove():
- try:
- n = int(request.form['n'])
- except (ValueError, KeyError):
- abort(400)
- try:
- r = T.remove_players(n)
- except (ValueError, RuntimeError) as e:
- flash(str(e))
- return redirect('/')
- return render_template("removed.html.j2", rem=r)
- @app.route("/load_sdump", methods=['POST'])
- def load_sdump():
- try:
- T.load_sdump(request.form['fname'])
- except KeyError:
- abort(400)
- except (RuntimeError, IOError) as e:
- flash(str(e))
- return redirect('/')
- if __name__ == '__main__':
- import IPython
- import signal
- def debug(sig, frame):
- print("Running debug shell.")
- IPython.embed()
- signal.signal(signal.SIGUSR2, debug)
- app.run()
|