diff --git a/deletegame.py b/deletegame.py
index 23bd88d..9393b4c 100644
--- a/deletegame.py
+++ b/deletegame.py
@@ -1,31 +1,21 @@
-import login,helper,database
+import helper,database
-#helper = apache.import_module("helper")
-def main(req,form):
+
+def main(gamename):
"""
- get request,util.FieldStorage.
+
manage the removal of game from game slots of players and
delete game from database.
+ TODO: add option do undo deletion when a failure happens
"""
- helper.debug(req,form,str(form.keys())+" sessionid in form:"+form["sessionid"]+"
")
- try:
- gamename = form["game"]
- except:
- gamename = ""
- if gamename != "":
- #get player names from game table in database
- mygame=database.GobanTable.byName(gamename)
- players = mygame.players()
- #free game slots of players
- for player in players:
- myuser = database.Users.byUsername(player)
- myuser.removegame(gamename)
-
- #delete table
- mygame.destroySelf()
- #now display game overview form.
- login.game_overview_form(req,form)
-
- else:
- req.write('Error: You have to select a game to delete it!')
\ No newline at end of file
+ #get player names from game table in database
+ mygame=database.GobanTable.get(gamename)
+ players = mygame.players()
+ #free game slots of players
+ for player in players:
+ myuser = database.Users.byUsername(player)
+ myuser.removegame(gamename)
+
+ #delete table
+ mygame.destroySelf()
diff --git a/helper.py b/helper.py
index 2959ee0..7b750a7 100644
--- a/helper.py
+++ b/helper.py
@@ -18,7 +18,7 @@ def cs_render(cs_path,settings = {},hdf_path = ""):
hdf=neo_util.HDF(hdf_path)
for key in settings.keys():
- hdf.setValue(key,settings[key])
+ hdf.setValue(key,str(settings[key]))
cs= neo_cs.CS(hdf)
cs.parseFile(cs_path)
return cs.render()
@@ -89,6 +89,7 @@ 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 = ""
@@ -101,7 +102,6 @@ def format_time(mytime):
else:
retstring = "%dh %dm ago" % (hour,minute)
else:
- mytime = int(mytime)
retstring = time.strftime("%Y-%m-%d %H:%M",time.gmtime(mytime))
return retstring
diff --git a/login.py b/login.py
index 6ff0847..d8dc112 100755
--- a/login.py
+++ b/login.py
@@ -1,5 +1,5 @@
#import database,init_webgo,helper,gamecreation
-import helper,database
+import helper,database,deletegame
from sets import Set as set
from cherrypy import cpg
from cherrypy.lib import httptools
@@ -43,19 +43,6 @@ def logout(req,form):
myuser.timeout = 0
-def main(req,form):
- #debug
- helper.debug(req,form)
- #req.write(helper.footer())
- if "sessionid" not in form.keys():
- req.write(login_form(req,form))
- elif ("game overview" in form.keys()) and ("username" in form.keys()) and ("sessionid" in form.keys()):
- game_overview_form(req,form)
- elif ("logout" in form.keys()) and ("username" in form.keys()):
- logout(req,form)
- process_form(req,form)
- else:
- process_form(req,form)
"""
class Login:
def index(self,username=None,password=None):
@@ -93,7 +80,6 @@ class Login:
cpg.request.sessionMap["username"] = username
#now display list of games.
httptools.redirect("/overview")
- #data += "Login accepted."
else:
message = "Login incorrect. Please try again.
"
data = self.login_form(message)
@@ -107,14 +93,28 @@ class Login:
class Overview:
"""
give out a list of current games and stuff."""
- def index(self):
+ def index(self,game=None,delete=None):
+ #load username and sesisonid from session data
username = cpg.request.sessionMap["username"]
- myuser = database.Users.byUsername(username)
sessionid = cpg.request.sessionMap["_sessionId"]
- if myuser.sessionid == sessionid:
- return self.game_overview_form(username)
+
+ 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 "You must be logged in to access this page."
+ return helper.cs_render("templates/not_logged_in.cs")
def game_overview_form(self,username):
"""
@@ -122,48 +122,34 @@ class Overview:
prints a form with the option to select,create and delete games.
"""
myuser = database.Users.byUsername(username)
- data = helper.header()+ """
-
Current Games:
-
- """
+
gamelist = myuser.gamelist()
+
+ settings = {}
+
+ cleanlist = helper.clean_list(gamelist)
#display list of current games
- counter = 10 - len(helper.clean_list(gamelist))
+ counter = 10 - len(cleanlist)
+ settings["Data.Counter"] = counter
+ settings["Data.Gamelist"] = cleanlist
tmp = ""
- if helper.clean_list(gamelist) != []:
- tmp += " | Name of game | White | "
- tmp += "Black | Time of Creation | Time of last move | "
- tmp += " |
"
+ if cleanlist != []:
+ settings["Data.GamelistNotEmpty"] = 1
+ else:
+ settings["Data.GamelistNotEmpty"] = 0
for item in gamelist:
if (item != None) and (item != "None"):
- tmp += '\n
\n'
- if helper.clean_list(gamelist) != []:
- tmp += '
'
- if gamelist == []: #no current games
- data += "You don't have any running games.\n"
- else:
- data += tmp
- #now comes the option for creating new games.
- data += "New Game:
\n"
- if counter > 0:
- data+= "You have %s free game slots.
" % counter
- data += ' Start a new game
'
- else:
- data+= "Sorry, all your game slots are in use."
- data+=helper.footer()
- return data
+ 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)
+
index.exposed = True
\ No newline at end of file
diff --git a/playgame.py b/playgame.py
index ae6b2ac..a66e1cf 100644
--- a/playgame.py
+++ b/playgame.py
@@ -27,6 +27,7 @@ def create_gobandict(req,form,gamename):
gets a gamename
loads sgf, transforms it to dict, writes stuff like player names to dict
returns dict
+ TODO: is this function still in use?
"""
#read goban sgf from database
mygame = database.GobanTable.byName(gamename)
@@ -39,56 +40,6 @@ def create_gobandict(req,form,gamename):
gobandict["sgf"] = sgf
return gobandict
-def main(req,form):
- """
- display selected goban and manage user input.
- """
-
- try:
- gamename = form["game"]
- except:
- gamename = ""
- if gamename != "":
- data = ""
- req.write(helper.header())
- #helper.debug(req,form,str(form.keys()))
- gobandict = create_gobandict(req,form,gamename)
- #check if user has already clicked onto a field:
- click_on_field = False
- for item in form.keys():
- if string.find(item,").x") > 0:
- click_on_field = True
- if click_on_field:
- #if yes: is this the user's turn? then process form.
- if is_my_turn(req,form,gobandict):
- helper.debug(req,form,"its my turn , i am going to process the form: --")
- retstring = goban.process_form(req,form,gobandict)
- if retstring != "":
- helper.debug(req,form,"playgame.main says: "+str(retstring))
- else:
- #reload gobandict, it has been changed.
- gobandict = create_gobandict(req,form,gamename)
-
- else:
- helper.debug(req,form,"it's not my turn.")
- data += """
Turn number: %s. %s plays.\n
- """ % (str(gobandict["turn_number"]), (string.capitalize(gobandict["play"])))
-
- #check whether its our turn
- #if yes: print 'your move' and display goban and process move
- #if not: print '...s move' and display goban.
- if is_my_turn(req,form,gobandict):
- data += "
It's your turn.
\n"
- else:
- data += "
This is not your turn. You have to wait for the move of the other player.
\n"
- #print goban
- data += goban.display_goban(gobandict,req,form)
- data += login.navigation_bar(req,form)
- data += helper.footer(req,form,1)
- req.write(data)
-
- else:
- req.write('Error: You have to select a game to play it!')
class PlayGame:
"""
diff --git a/templates/not_logged_in.cs b/templates/not_logged_in.cs
new file mode 100644
index 0000000..2619a7f
--- /dev/null
+++ b/templates/not_logged_in.cs
@@ -0,0 +1,3 @@
+
+You must be logged in to access this page.
+
\ No newline at end of file
diff --git a/templates/overview.cs b/templates/overview.cs
new file mode 100644
index 0000000..c2f8665
--- /dev/null
+++ b/templates/overview.cs
@@ -0,0 +1,38 @@
+
+
+ Current Games:
+
+ | Name of game | White |
+ Black | Time of Creation | Time of last move |
+ |
+
+
+
+
+
+
+
+
+
+
+
+New Game:
+
+ You have free game slots.
+ Start a new game
+
+ "Sorry, all your game slots are in use."
+
+
+
\ No newline at end of file