webgo/helper.py

126 lines
2.8 KiB
Python

import string,re,time
#clearsilver templates
import neo_cgi
import neo_util # you must import neo_cgi first...
import neo_cs # you must import neo_cgi first...
DEBUG = 1
def cs_render(cs_path,settings = {},hdf_path = ""):
"""
render a clearsilver template and return the result.
gets:
- path to clearsilver template
- path to hdf dataset (optional)
- dictionary with settings (optional)
"""
hdf=neo_util.HDF()
hdf.readFile(hdf_path)
for key in settings.keys():
hdf.setValue(key,str(settings[key]))
cs= neo_cs.CS(hdf)
cs.parseFile(cs_path)
return cs.render()
# 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()))
s = string.replace(base64.encodestring(m.digest())[:-3], '/', '$')
return s
def generate_game_name():
from whrandom import choice
return generate_session_id()
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
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)
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)
def format_time(mytime):
"""
gets output of time.time()
formats it nicely and returns as string.
"""
mytime = int(mytime)
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:
retstring = time.strftime("%Y-%m-%d %H:%M",time.gmtime(mytime))
return retstring
def clean_list(l):
#removing None-entries
clean = []
for item in l:
if (item != "None") and (item != None):
clean.append(item)
return clean
def test():
print dict_coords_to_gnugo_coords((6,5),7)
print format_time(time.time()-20000)
if __name__ == "__main__":
test()