2005-10-09 23:29:29 +02:00
|
|
|
import string,re,time
|
2005-09-11 19:11:09 +02:00
|
|
|
|
2005-09-20 09:05:05 +02:00
|
|
|
DEBUG = 1
|
|
|
|
|
2005-09-06 19:52:46 +02:00
|
|
|
def header():
|
|
|
|
"""return html header"""
|
|
|
|
data = """
|
2005-09-23 16:37:07 +02:00
|
|
|
<html>
|
2005-09-20 09:05:05 +02:00
|
|
|
<head>
|
|
|
|
<title>WebGo</title>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
<meta http-equiv="pragma" content="no-cache" />
|
|
|
|
<meta http-equiv="cache-control" content="no-cache" />
|
|
|
|
<meta http-equiv="expires" content="0" />
|
|
|
|
<link rel="stylesheet" media="screen" href="default.css" type="text/css" />
|
|
|
|
</head>
|
|
|
|
<h1> WebGo </h1>
|
2005-09-23 16:37:07 +02:00
|
|
|
<body>
|
2005-09-06 19:52:46 +02:00
|
|
|
"""
|
|
|
|
return data
|
|
|
|
|
2005-09-20 09:05:05 +02:00
|
|
|
def debug(req,form, optstr = ""):
|
|
|
|
"""
|
|
|
|
print various debug infos, e.g. form content.
|
|
|
|
gets request, util.FieldStorage form, optional extra string.
|
|
|
|
returns nothing, writes with request.write.
|
|
|
|
"""
|
|
|
|
if DEBUG:
|
|
|
|
if optstr == "":
|
2005-09-23 16:37:07 +02:00
|
|
|
req.write("Debug: "+str(form.keys())+"<br>\n")
|
2005-09-20 09:05:05 +02:00
|
|
|
else:
|
2005-09-23 16:37:07 +02:00
|
|
|
req.write("Debug: "+optstr+"<br>\n")
|
2005-09-20 09:05:05 +02:00
|
|
|
|
2005-09-06 19:52:46 +02:00
|
|
|
def footer():
|
|
|
|
"""return html footer"""
|
|
|
|
data = """
|
|
|
|
</body></html>
|
|
|
|
"""
|
|
|
|
return data
|
|
|
|
|
|
|
|
# create a unique session id
|
|
|
|
def generate_session_id():
|
|
|
|
import md5, time, base64, random, string
|
|
|
|
m = md5.new()
|
|
|
|
m.update(str(time.time()))
|
|
|
|
m.update(str(random.random()))
|
2005-09-12 15:51:18 +02:00
|
|
|
s = string.replace(base64.encodestring(m.digest())[:-3], '/', '$')
|
|
|
|
return s
|
2005-09-06 19:52:46 +02:00
|
|
|
|
2005-09-12 15:51:18 +02:00
|
|
|
def generate_game_name():
|
|
|
|
from whrandom import choice
|
|
|
|
chars = string.letters
|
|
|
|
name = ''
|
|
|
|
for i in range(16):
|
|
|
|
name = name + choice(chars)
|
|
|
|
return name.lower()
|
|
|
|
|
2005-09-06 19:52:46 +02:00
|
|
|
|
|
|
|
def check_for_int(data):
|
|
|
|
"""
|
|
|
|
gets a string. if string is an integer: return integer.
|
|
|
|
else return given string.
|
|
|
|
"""
|
|
|
|
#check if value is int
|
|
|
|
num = [n for n in data if n.isdigit()]
|
|
|
|
tmp = "".join(num)
|
|
|
|
if tmp == data:
|
|
|
|
ret = int(data)
|
|
|
|
else:
|
|
|
|
ret = data
|
2005-09-06 21:05:10 +02:00
|
|
|
return ret
|
|
|
|
|
|
|
|
def string_to_tuple(str):
|
|
|
|
"""
|
|
|
|
gets a string. If the string contains '(',')' and ',', then return
|
|
|
|
a tuple processed from the string. If the partial string is empty, then
|
|
|
|
-1 will be returned for that value.
|
|
|
|
"""
|
|
|
|
if (str[0] =='(') and (str[-1] ==')') and (string.find(str,',')):
|
|
|
|
splitlist = string.split(str[1:-1],",")
|
|
|
|
returnlist = []
|
|
|
|
for item in splitlist:
|
|
|
|
try:
|
|
|
|
returnlist.append(int(item))
|
|
|
|
except: #empty string
|
|
|
|
returnlist.append(-1)
|
2005-09-23 16:37:07 +02:00
|
|
|
return tuple(returnlist)
|
|
|
|
|
|
|
|
def dict_coords_to_gnugo_coords(coords,size):
|
|
|
|
"""
|
|
|
|
gets a (x,y) coordinate tuple and boardsize.
|
|
|
|
returns a string in gnugo syntax. examples:
|
|
|
|
gets (1,1), returns "A7".
|
|
|
|
gets (6,2), returns "B2".
|
|
|
|
"""
|
|
|
|
letterlist = [" "]
|
|
|
|
letterlist.extend(list(string.letters[26:]))
|
|
|
|
letterlist.remove("I")
|
|
|
|
letter = letterlist[coords[1]]
|
|
|
|
digit = size+1-coords[0]
|
|
|
|
return letter+str(digit)
|
|
|
|
|
2005-10-09 15:58:06 +02:00
|
|
|
|
2005-10-09 23:29:29 +02:00
|
|
|
def format_time(mytime):
|
|
|
|
"""
|
|
|
|
gets output of time.time()
|
|
|
|
formats it nicely and returns as string.
|
|
|
|
"""
|
|
|
|
acttime = int(time.time())
|
|
|
|
if mytime == None:
|
|
|
|
retstring = ""
|
|
|
|
elif acttime-mytime<86400: #given time is less than 24h ago
|
|
|
|
tmp = acttime-mytime
|
|
|
|
hour = int(tmp/3600)
|
|
|
|
minute = int((tmp-hour*3600)/60)
|
|
|
|
if hour == 0:
|
|
|
|
retstring = "%dm ago" % (minute)
|
|
|
|
else:
|
|
|
|
retstring = "%dh %dm ago" % (hour,minute)
|
|
|
|
else:
|
|
|
|
mytime = int(mytime)
|
|
|
|
retstring = time.strftime("%Y-%m-%d %H:%M",time.gmtime(mytime))
|
|
|
|
return retstring
|
2005-10-09 15:58:06 +02:00
|
|
|
|
2005-10-09 23:29:29 +02:00
|
|
|
def clean_list(l):
|
|
|
|
#removing None-entries
|
|
|
|
clean = []
|
|
|
|
for item in l:
|
|
|
|
if (item != "None") and (item != None):
|
|
|
|
clean.append(item)
|
|
|
|
return clean
|
|
|
|
|
2005-10-09 15:58:06 +02:00
|
|
|
|
2005-09-23 16:37:07 +02:00
|
|
|
def test():
|
|
|
|
print dict_coords_to_gnugo_coords((6,5),7)
|
2005-10-09 23:29:29 +02:00
|
|
|
print format_time(time.time()-20000)
|
2005-10-09 19:27:17 +02:00
|
|
|
|
2005-09-23 16:37:07 +02:00
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
test()
|
|
|
|
|
|
|
|
|