From dc45fbe25eb8b34d640ee69ee4802ccd30592f46 Mon Sep 17 00:00:00 2001 From: "John \"Elwin\" Edwards" Date: Mon, 17 Sep 2012 13:41:10 -0700 Subject: [PATCH] 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. --- py/rlgalldb.py | 26 +++++++++++++++++++++++++- web/recent.cgi | 2 +- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/py/rlgalldb.py b/py/rlgalldb.py index 32096d7..aea9c73 100644 --- a/py/rlgalldb.py +++ b/py/rlgalldb.py @@ -171,7 +171,6 @@ class Game: break entlist.append(self.logtoDict(nextentry)) return - # TODO how does this work with postprocess? def loadnew(self): conn = getconn() if conn == None: @@ -239,6 +238,29 @@ class Game: conn.commit() cur.close() 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("
No one has braved this dungeon yet.
\n") + else: + printTable(newest, self.fields, of) + return # End Game class definition class RogueGame(Game): @@ -251,6 +273,7 @@ class RogueGame(Game): "name": "varchar(20)", "xl": "int", "fate": "text", "ttyrecs": "text ARRAY", "startt": "timestamptz"} self.logdelim = " " + self.lookback = -1500 colspec = "(" valspec = "(" for i, col in enumerate(self.sqltypes.keys()): @@ -379,6 +402,7 @@ class ARogueGame(Game): "maxdepth": "int", "quest": "int", "hadquest": "bool", "fate": "text", "ttyrecs": "text ARRAY", "startt": "timestamptz"} self.logdelim = " " + self.lookback = -1800 colspec = "(" valspec = "(" for i, col in enumerate(self.sqltypes.keys()): diff --git a/web/recent.cgi b/web/recent.cgi index 644e720..253a9d9 100755 --- a/web/recent.cgi +++ b/web/recent.cgi @@ -3,7 +3,7 @@ import sys import time -import rlgall +import rlgalldb as rlgall # The required header sys.stdout.write("Content-type: text/html\r\n\r\n")