| 
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()
 |