124 lines
3.6 KiB
Python
Executable file
124 lines
3.6 KiB
Python
Executable file
#import database,init_webgo,helper,gamecreation
|
|
import helper,database,deletegame
|
|
from sets import Set as set
|
|
from cherrypy import cpg
|
|
from cherrypy.lib import httptools
|
|
|
|
|
|
|
|
|
|
class Login:
|
|
def index(self,username=None,password=None):
|
|
"""
|
|
Without arguments, this function writes a login form. Else the login data is evaluated
|
|
and the user is eventually logged in.
|
|
"""
|
|
if username == None and password == None:
|
|
return self.login_form()
|
|
else:
|
|
return self.process_form(username,password)
|
|
|
|
def login_form(self,message=""):
|
|
"""
|
|
print welcome message and html form.
|
|
"""
|
|
return helper.cs_render("templates/login_form.cs",{"Data.Message":message})
|
|
|
|
def process_form(self,username,password):
|
|
"""
|
|
gets username and password, checks for validity, eventually the user is logged in.
|
|
TODO: check for session timeout
|
|
"""
|
|
sessionid = cpg.request.sessionMap["_sessionId"]
|
|
|
|
try:
|
|
myuser = database.Users.byUsername(username)
|
|
origpassword = myuser.password
|
|
except:
|
|
origpassword = ""
|
|
if origpassword != "" and password == origpassword:
|
|
#login accepted
|
|
myuser.sessionid = sessionid
|
|
myuser.set_timeout()
|
|
cpg.request.sessionMap["username"] = username
|
|
#now display list of games.
|
|
httptools.redirect("/overview")
|
|
else:
|
|
message = "Login incorrect. Please try again.<br>"
|
|
data = self.login_form(message)
|
|
return data
|
|
|
|
|
|
|
|
|
|
index.exposed=True
|
|
|
|
class Overview:
|
|
"""
|
|
give out a list of current games and stuff."""
|
|
def index(self,game=None,delete=None):
|
|
#load username and sesisonid from session data
|
|
username = cpg.request.sessionMap["username"]
|
|
sessionid = cpg.request.sessionMap["_sessionId"]
|
|
|
|
if username != None:
|
|
try:
|
|
myuser = database.Users.byUsername(username)
|
|
user = 1
|
|
except:
|
|
user = 0
|
|
if user:
|
|
if myuser.sessionid == sessionid:
|
|
if game!=None and delete != None: #delete given game
|
|
deletegame.main(game)
|
|
return self.game_overview_form(username)
|
|
else:
|
|
return helper.cs_render("templates/not_logged_in.cs")
|
|
else:
|
|
return helper.cs_render("templates/not_logged_in.cs")
|
|
else:
|
|
return helper.cs_render("templates/not_logged_in.cs")
|
|
|
|
def game_overview_form(self,username=None):
|
|
"""
|
|
gets:name of user,
|
|
prints a form with the option to select,create and delete games.
|
|
"""
|
|
try:
|
|
myuser = database.Users.byUsername(username)
|
|
user = True
|
|
except:
|
|
user = False
|
|
if username != "" and user:
|
|
gamelist = myuser.gamelist()
|
|
|
|
settings = {}
|
|
|
|
cleanlist = helper.clean_list(gamelist)
|
|
#display list of current games
|
|
counter = 10 - len(cleanlist)
|
|
settings["Data.Counter"] = counter
|
|
settings["Data.Gamelist"] = cleanlist
|
|
tmp = ""
|
|
if cleanlist != []:
|
|
settings["Data.GamelistNotEmpty"] = 1
|
|
else:
|
|
settings["Data.GamelistNotEmpty"] = 0
|
|
for item in gamelist:
|
|
if (item != None) and (item != "None"):
|
|
mygame = database.GobanTable.get(item)
|
|
description = mygame.description
|
|
if (description == None) or (description == "None") or (description == ""):
|
|
description = item
|
|
settings["Data.Games.%s.Description" % item] = mygame.description
|
|
settings["Data.Games.%s.Name" % item] = item
|
|
players = mygame.players()
|
|
settings["Data.Games.%s.Player1" % item] = mygame.players()[0]
|
|
settings["Data.Games.%s.Player2" % item] = mygame.players()[1]
|
|
settings["Data.Games.%s.Created" % item] = helper.format_time(mygame.created)
|
|
settings["Data.Games.%s.Lastmove" % item] = helper.format_time(mygame.lastmove)
|
|
return helper.cs_render("templates/overview.cs",settings)
|
|
else:
|
|
return helper.cs_render("templates/not_logged_in.cs")
|
|
|
|
index.exposed = True |