start implementation

This commit is contained in:
2019-06-08 18:08:56 +02:00
parent 452e86c659
commit 8837e1a553
2 changed files with 101 additions and 47 deletions

View File

@@ -11,53 +11,9 @@
<input class=input-field>
</div>
<div class=leaderboard-container>
<div class=colum-names>LOL</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
<div class=line-even>even</div>
<div class=line-odd>odd</div>
{% for player in playerList %}
<option value="">{{country}}</option>
{% endfor %}
</div>
<div class=footer>
<a class="footerLink" href="https://blog.atlantishq.de/about">Impressum/Legal</a>

98
open-leaderboard-server.py Executable file
View File

@@ -0,0 +1,98 @@
#!/usr/bin/python3
import flask
import requests
import argparse
app = flask.Flask("open-leaderboard")
SERVER = "localhost:5000"
LOCATION = "/rankrange"
PARAM_START = "start"
PARAM_END = "end"
BASE_URL = "http://{server}{path}?{paramStart}={start}&{paramEnd}={end}"
SEGMENT = 100
class Player:
def __init__(self, line):
pass
def getLineHTML(self):
pass
@app.route('/leaderboard')
def leaderboard():
'''Show main leaderboard page with range dependant on parameters'''
# parse parameters #
start = flask.request.args.get(PARAM_START)
page = flask.request.args.get("page")
if start:
start = int(start)
elif page:
start = SEGMENT * int(page)
else:
start = 0
end = start + SEGMENT
# request information from rating server #
requestURL = BASE_URL.format(server=SERVER, \
path=LOCATION, \
paramStart=PARAM_START, \
paramEnd=PARAM_END, \
start=start, \
end=end)
response = str(requests.get(requestURL), "utf-8")
# create relevant html-lines from player
players = [Player(line) for line in response.split("\n")]
playersHTMLs = [p.getLineHTML() for p in players]
# sanity check reponse #
if len(players) > 100:
raise ValueError("Bad reponse from rating server")
# template html #
leaderBoardColumnNames = "<div class=colum-names>{}</div>"
leaderBoardEvenLine = "<div class=line-even>{}</div>"
leaderBoardOddLine = "<div class=line-odd>{}</div>"
columContent = "LOL"
leaderBoardContent = leaderBoardColumnNames.format(columContent)
for i in range(0, len(players)):
if i%2 == 0:
leaderBoardContent += leaderBoardEvenLine.format(players[i].getLineHTML())
else:
leaderBoardContent += leaderBoardOdd.format(players[i].getLineHTML())
finalResponse = render_template("base.html",
return finalResponse
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Start open-leaderboard')
parser.add_argument('--rating-server', default=SERVER, \
help='Compatible rating server to query, default %(default)')
parser.add_argument('--request-url', default=LOCATION, \
help='API location for rating range, default %(default)')
parser.add_argument('--param-start', default=PARAM_START, \
help='Name of parameter annotating the start of the rating range, default %(default)')
parser.add_argument('--param-end', default=PARAM_END, \
help='Name of parameter annotating the end of the rating range, default %(default)')
parser.add_argument('--interface', default="localhost", \
help='Interface on which flask (this server) will take requests on, default %(default)')
parser.add_argument('--port', default="5002", \
help='Port on which flask (this server) will take requests on, default %(default)')
args = parser.parse_args()
SERVER = args.rating_server
LOCATION = args.request_url
PARAM_START = args.param_start
PARAM_END = args.param_end
app.run(host=args.interface, port=args.port)