125 lines
No EOL
2.8 KiB
Python
125 lines
No EOL
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_path)
|
|
for key in settings.keys():
|
|
hdf.setValue(key,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.
|
|
"""
|
|
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
|
|
|
|
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()
|
|
|
|
|