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.
This commit is contained in:
John "Elwin" Edwards 2012-09-17 13:41:10 -07:00
parent 3f54b7a87d
commit dc45fbe25e
2 changed files with 26 additions and 2 deletions

View file

@ -171,7 +171,6 @@ class Game:
break break
entlist.append(self.logtoDict(nextentry)) entlist.append(self.logtoDict(nextentry))
return return
# TODO how does this work with postprocess?
def loadnew(self): def loadnew(self):
conn = getconn() conn = getconn()
if conn == None: if conn == None:
@ -239,6 +238,29 @@ class Game:
conn.commit() conn.commit()
cur.close() cur.close()
return return
def tablerecent(self, of):
"Prints the most recent games from the logfile, NOT the database."
newest = []
try:
scr = open(self.scores)
except IOError:
pass
else:
try:
scr.seek(self.lookback, 2)
except IOError:
scr.seek(0) # The file wasn't that long, start at the beginning
if scr.tell() != 0:
scr.readline() # Throw away the incomplete line
self.getEntryDicts(scr, newest)
newest.reverse()
scr.close()
of.write(secthead.format(self.name))
if not newest:
of.write("<div>No one has braved this dungeon yet.</div>\n")
else:
printTable(newest, self.fields, of)
return
# End Game class definition # End Game class definition
class RogueGame(Game): class RogueGame(Game):
@ -251,6 +273,7 @@ class RogueGame(Game):
"name": "varchar(20)", "xl": "int", "fate": "text", "name": "varchar(20)", "xl": "int", "fate": "text",
"ttyrecs": "text ARRAY", "startt": "timestamptz"} "ttyrecs": "text ARRAY", "startt": "timestamptz"}
self.logdelim = " " self.logdelim = " "
self.lookback = -1500
colspec = "(" colspec = "("
valspec = "(" valspec = "("
for i, col in enumerate(self.sqltypes.keys()): for i, col in enumerate(self.sqltypes.keys()):
@ -379,6 +402,7 @@ class ARogueGame(Game):
"maxdepth": "int", "quest": "int", "hadquest": "bool", "maxdepth": "int", "quest": "int", "hadquest": "bool",
"fate": "text", "ttyrecs": "text ARRAY", "startt": "timestamptz"} "fate": "text", "ttyrecs": "text ARRAY", "startt": "timestamptz"}
self.logdelim = " " self.logdelim = " "
self.lookback = -1800
colspec = "(" colspec = "("
valspec = "(" valspec = "("
for i, col in enumerate(self.sqltypes.keys()): for i, col in enumerate(self.sqltypes.keys()):

View file

@ -3,7 +3,7 @@
import sys import sys
import time import time
import rlgall import rlgalldb as rlgall
# The required header # The required header
sys.stdout.write("Content-type: text/html\r\n\r\n") sys.stdout.write("Content-type: text/html\r\n\r\n")