view web/scoring/high.cgi @ 67:5b6211e2e36f

Update some static pages. The front page has been reorganized. Links and information on the downloads page are now current.
author John "Elwin" Edwards
date Sat, 21 Nov 2015 20:01:41 -0500
parents 6592cdd1fceb
children 1d8dc3ed22cf
line wrap: on
line source

#!/usr/bin/python3

import sys
import cgi
import rlgall

checkstr = '{0}:<input type="checkbox" name="g" value="{1}" checked="checked"> '
uncheckstr = '{0}:<input type="checkbox" name="g" value="{1}"> '

cgidata = cgi.FieldStorage()

formgames = cgidata.getlist("g")
if "all" in formgames:
  games = rlgall.gamelist
else:
  games = []
  for g in rlgall.gamelist:
    if g.uname in formgames:
      games.append(g)
  if not games:
    games = rlgall.gamelist

formstart = cgidata.getfirst("s")
if not formstart:
  start = 0
else:
  try:
    start = int(formstart)
  except ValueError:
    start = 0
if start < 0:
  start = 0

deflimit = (12 // len(games)) * 5
formlimit = cgidata.getfirst("l")
if not formlimit:
  limit = deflimit
else:
  try:
    limit = int(formlimit)
  except ValueError:
    limit = deflimit
if limit <= 0:
  limit = deflimit


sys.stdout.write("Content-Type: text/html; charset=utf-8\r\n\r\n")
sys.stdout.write(rlgall.phead.format("High Scores"))
sys.stdout.write(rlgall.ptop)
sys.stdout.write(rlgall.navscore.format("High Scores"))
if len(games) == 1:
  if start == 0:
    intitle = "Top {0} scores for {1}".format(limit, games[0].name)
  else:
    intitle = "Scores {0} - {1} for {2}".format(start + 1, start + limit, 
                games[0].name)
  sys.stdout.write(rlgall.pti.format(intitle))
  highlist = games[0].getHigh(limit, start)
  rlgall.printTable(highlist, games[0].rankfields, sys.stdout)
else:
  if start == 0:
    intitle = "Top {0} scores".format(limit)
  else:
    intitle = "Scores {0} - {1}".format(start + 1, start + limit)
  sys.stdout.write(rlgall.pti.format(intitle))
  for g in games:
    sys.stdout.write(rlgall.secthead.format(g.name))
    highlist = g.getHigh(limit, start)
    rlgall.printTable(highlist, g.rankfields, sys.stdout)
sys.stdout.write('<form action="/scoring/high.cgi" method="get">\n')
sys.stdout.write('<div>Number of scores: ')
sys.stdout.write('<input type="text" name="l" value="{0}">'.format(limit))
sys.stdout.write(' Skip the first: ')
sys.stdout.write('<input type="text" name="s" value="{0}">'.format(start))
sys.stdout.write('</div><div>')
for game in rlgall.gamelist:
  if game in games:
    sys.stdout.write(checkstr.format(game.name, game.uname))
  else:
    sys.stdout.write(uncheckstr.format(game.name, game.uname))
sys.stdout.write('</div><div><input type="submit" value="Get Scores">')
sys.stdout.write('</div></form>')
sys.stdout.write(rlgall.pend)
exit()