35
+ − 1 #!/usr/bin/python3
+ − 2
+ − 3 import sys
+ − 4 import cgi
+ − 5 import rlgall
+ − 6
+ − 7 checkstr = '{0}:<input type="checkbox" name="g" value="{1}" checked="checked"> '
+ − 8 uncheckstr = '{0}:<input type="checkbox" name="g" value="{1}"> '
+ − 9
+ − 10 cgidata = cgi.FieldStorage()
+ − 11
+ − 12 formgames = cgidata.getlist("g")
+ − 13 if "all" in formgames:
+ − 14 games = rlgall.gamelist
+ − 15 else:
+ − 16 games = []
+ − 17 for g in rlgall.gamelist:
+ − 18 if g.uname in formgames:
+ − 19 games.append(g)
+ − 20 if not games:
+ − 21 games = rlgall.gamelist
+ − 22
+ − 23 formstart = cgidata.getfirst("s")
+ − 24 if not formstart:
+ − 25 start = 0
+ − 26 else:
+ − 27 try:
+ − 28 start = int(formstart)
+ − 29 except ValueError:
+ − 30 start = 0
+ − 31 if start < 0:
+ − 32 start = 0
+ − 33
+ − 34 deflimit = (12 // len(games)) * 5
+ − 35 formlimit = cgidata.getfirst("l")
+ − 36 if not formlimit:
+ − 37 limit = deflimit
+ − 38 else:
+ − 39 try:
+ − 40 limit = int(formlimit)
+ − 41 except ValueError:
+ − 42 limit = deflimit
+ − 43 if limit <= 0:
+ − 44 limit = deflimit
+ − 45
+ − 46
+ − 47 sys.stdout.write("Content-Type: text/html; charset=utf-8\r\n\r\n")
+ − 48 sys.stdout.write(rlgall.phead.format("High Scores"))
+ − 49 sys.stdout.write(rlgall.ptop)
+ − 50 sys.stdout.write(rlgall.navscore.format("High Scores"))
+ − 51 if len(games) == 1:
+ − 52 if start == 0:
+ − 53 intitle = "Top {0} scores for {1}".format(limit, games[0].name)
+ − 54 else:
+ − 55 intitle = "Scores {0} - {1} for {2}".format(start + 1, start + limit,
+ − 56 games[0].name)
+ − 57 sys.stdout.write(rlgall.pti.format(intitle))
+ − 58 highlist = games[0].getHigh(limit, start)
+ − 59 rlgall.printTable(highlist, games[0].rankfields, sys.stdout)
+ − 60 else:
+ − 61 if start == 0:
+ − 62 intitle = "Top {0} scores".format(limit)
+ − 63 else:
+ − 64 intitle = "Scores {0} - {1}".format(start + 1, start + limit)
+ − 65 sys.stdout.write(rlgall.pti.format(intitle))
+ − 66 for g in games:
+ − 67 sys.stdout.write(rlgall.secthead.format(g.name))
+ − 68 highlist = g.getHigh(limit, start)
+ − 69 rlgall.printTable(highlist, g.rankfields, sys.stdout)
+ − 70 sys.stdout.write('<form action="/scoring/high.cgi" method="get">\n')
+ − 71 sys.stdout.write('<div>Number of scores: ')
+ − 72 sys.stdout.write('<input type="text" name="l" value="{0}">'.format(limit))
+ − 73 sys.stdout.write(' Skip the first: ')
+ − 74 sys.stdout.write('<input type="text" name="s" value="{0}">'.format(start))
+ − 75 sys.stdout.write('</div><div>')
+ − 76 for game in rlgall.gamelist:
+ − 77 if game in games:
+ − 78 sys.stdout.write(checkstr.format(game.name, game.uname))
+ − 79 else:
+ − 80 sys.stdout.write(uncheckstr.format(game.name, game.uname))
+ − 81 sys.stdout.write('</div><div><input type="submit" value="Get Scores">')
+ − 82 sys.stdout.write('</div></form>')
+ − 83 sys.stdout.write(rlgall.pend)
+ − 84 exit()