Mercurial > hg > rlgallery-misc
view py/recorder.py @ 21:453278a81371
Add tablerecent() so recent.cgi will work as before.
Port the tablerecent() function, which reads the most recent games
directly from the logfile instead of the database. This allows
recent.cgi to show games immediately without waiting for the recorder
to put them in the database.
author | John "Elwin" Edwards <elwin@sdf.org> |
---|---|
date | Mon, 17 Sep 2012 13:41:10 -0700 |
parents | a943cfdfbad9 |
children | e8f3b7994d88 |
line wrap: on
line source
#!/usr/bin/python import os import psycopg2 import rlgalldb as rlgall # Contains a dir for everyone who registered everydir = "/var/dgl/dgldir/ttyrec/" # Contains a page for everyone we know about #knowndir = rlgall.dbdir + "players/" # Contact the database conn = psycopg2.connect("dbname=rlg") cur = conn.cursor() # newnames is the list of newly registered players who are not yet in the # database. updatenames is the set of players whose pages need updating. cur.execute("SELECT pname FROM players;") playersInDB = [ row[0] for row in cur.fetchall() ] playersAll = os.listdir(everydir) newnames = [ name for name in playersAll if name not in playersInDB ] updatenames = set(newnames) # Add the new names to the database for newplayer in newnames: cur.execute("INSERT INTO players VALUES (%s);", [newplayer]) conn.commit() cur.close() conn.close() # Update the database for each game. for game in rlgall.gamelist: updatenames.update(game.loadnew()) # All the databases have been updated. Now make the pages. # Currently the high scores for all the games are on the same page. If # they split up, this will have to change to a Game method. rlgall.highpage() for name in updatenames: rlgall.playerpage(name) exit()