Mercurial > hg > rlgallery-misc
annotate web/archive.cgi @ 2:8f49df4074d7
Convert web/archive.cgi to use the new SQL timestamps.
The Archivist has replaced UNIX timestamps with python datetime objects
derived from SQL timestamps.  There are still a lot of struct_time
objects which should be converted too.
| author | John "Elwin" Edwards <elwin@sdf.org> | 
|---|---|
| date | Thu, 26 Jul 2012 08:07:00 -0700 | 
| parents | 5ba2123d2c20 | 
| children | a943cfdfbad9 | 
| rev | line source | 
|---|---|
| 0 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 1 #!/usr/bin/python | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 2 | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 3 import cgi | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 4 import os | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 5 import sys | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 6 import re | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 7 import time | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 8 import calendar | 
| 2 
8f49df4074d7
Convert web/archive.cgi to use the new SQL timestamps.
 John "Elwin" Edwards <elwin@sdf.org> parents: 
0diff
changeset | 9 from datetime import datetime | 
| 0 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 10 import rlgalldb as rlgall | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 11 import cgitb | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 12 | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 13 cgitb.enable() | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 14 | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 15 infop = """<p>Looking for ttyrec files? Don't like digging through Web directory listings, converting time zones in your head, or guessing how many files | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 16 the game was spread across? The Archivist can find them all for you.</p> | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 17 """ | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 18 | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 19 ttyrecbase = "/var/dgl/dgldir/ttyrec/" | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 20 recre = r"(\d{4,4})-(\d{2,2})-(\d{2,2})\.(\d{2,2}):(\d{2,2}):(\d{2,2})\.ttyrec" | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 21 recrec = re.compile(recre) | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 22 | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 23 def input_game(outf, selected=None): | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 24 "Prints the form components for selecting a game." | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 25 selstr = '<option label="{0}" value="{1}" selected="selected">{0}</option>\n' | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 26 unselstr = '<option label="{0}" value="{1}">{0}</option>\n' | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 27 outf.write('<div>Dungeon name: <select name="game">\n') | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 28 for game in rlgall.gamelist: | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 29 # This will cause trouble if someone puts games with identical names | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 30 # into rlgall. | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 31 if selected and selected == game.uname: | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 32 outf.write(selstr.format(game.name, game.uname)) | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 33 else: | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 34 outf.write(unselstr.format(game.name, game.uname)) | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 35 outf.write('</select></div>\n') | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 36 return | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 37 | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 38 def input_name(outf, defaultval=None): | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 39 defstr = '<div>Adventurer\'s name: <input type="text" name="name" value="{0}"></div>\n' | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 40 if defaultval: | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 41 outf.write(defstr.format(defaultval)) | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 42 else: | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 43 outf.write('<div>Adventurer\'s Name: <input type="text" name="name"></div>\n') | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 44 return | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 45 | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 46 def input_time(outf, defaultval=None): | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 47 defstr = '<div>Time: <input type="text" name="time" value="{0}"></div>\n' | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 48 if defaultval: | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 49 outf.write(defstr.format(defaultval)) | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 50 else: | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 51 outf.write('<div>Time: <input type="text" name="time"></div>\n') | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 52 return | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 53 | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 54 def input_datetime(outf, dvals=[None, None, None, None, None, None]): | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 55 optstr = '<option value="{0}" label="{1}">{1}</option>\n' | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 56 soptstr = '<option value="{0}" label="{1}" selected="selected">{1}</option>\n' | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 57 tf = '<input type="text" size="2" maxlength="2" name="{0}" value="{1:02}">' | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 58 emptf = '<input type="text" size="2" maxlength="2" name="{0}">' | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 59 sstr = '<div>Date: <select name="year">\n' | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 60 # Default to today | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 61 now = time.gmtime() | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 62 for dindex in range(3): | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 63 if not dvals[dindex]: | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 64 dvals[dindex] = now[dindex] | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 65 for year in range(2010, now[0] + 1): | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 66 if year == dvals[0]: | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 67 sstr += soptstr.format(year, year) | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 68 else: | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 69 sstr += optstr.format(year, year) | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 70 sstr += '</select>\n' | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 71 outf.write(sstr) | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 72 sstr = '<select name="month">\n' | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 73 for month in range(1, 13): | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 74 if month == dvals[1]: | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 75 sstr += soptstr.format(month, calendar.month_name[month]) | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 76 else: | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 77 sstr += optstr.format(month, calendar.month_name[month]) | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 78 sstr += '</select>\n' | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 79 outf.write(sstr) | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 80 sstr = '<select name="day">\n' | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 81 for day in range(1, 32): | 
| 
5ba2123d2c20
Put this project under version control, finally.
 John "Elwin" Edwards <elwin@sdf.org> parents: diff
changeset | 
