view py/recorder.py @ 18:5731d2ecaec4

Store arogue5 results in the database. The ARogueGame class is functional enough to put game results into the database, though it still can't get them back out.
author John "Elwin" Edwards <elwin@sdf.org>
date Mon, 17 Sep 2012 09:14:26 -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()