def index(postVars): global votesToFinish global couchdbServer templateVars = dict() try: db = couchdbServer["currentgame"] except ResourceNotFound as exception: print "There's no active game" return output_template("error.html", templateVars) except: print "Unexpected error on get current game" return output_template("error.html", templateVars) currentGameId = "" for gameid in db: currentGameId = gameid game = Game.load(db,currentGameId) templateVars["opponent"] = game.opponent try: db = couchdbServer["players"] except ResourceNotFound as exception: print "Unable to access players database" return output_template("error.html", templateVars) except: print "Unexpected error accessing players database" return output_template("error.html", templateVars) # select randomly two different players faultSelectingPlayer = True; while faultSelectingPlayer: randomPlayersIds = game.getRandomPlayers() player0 = Player.load(db,randomPlayersIds[0]) player1 = Player.load(db,randomPlayersIds[1]) # are the two players valid? if player0 != None and player1 != None: faultSelectingPlayer = False # save photo files to static content directory player0.updatePhotoFileOnDisk(db) player1.updatePhotoFileOnDisk(db) templateVars["votesToFinish"] = votesToFinish templateVars["player0"] = player0 templateVars["player1"] = player1 return output_template("index.html", templateVars)
def vote(postVars): global couchdbServer templateVars = dict() winnerId = postVars["winner"].value.decode("utf-8") loserId = postVars["loser"].value.decode("utf-8") try: db = couchdbServer.create("players") except: db = couchdbServer["players"] winner = Player.load(db,winnerId) loser = Player.load(db,loserId) match = Match() if postVars["draw"].value == "0": match.matchWithWinner(winner,loser) else: match.matchWithoutWinner(winner,loser) try: winner.store(db) except ResourceConflict: print "Unable to store winner" try: loser.store(db) except ResourceConflict: print "Unable to store loser" votesCount = classes.rankingsession.getSession("votesToFinish") votesCount -= 1 votesCount = classes.rankingsession.setSession("votesToFinish", votesCount) templateVars = dict(json = json.dumps(dict())) return output_template("json.html", templateVars )
def newGame(postVars): global couchdbServer players = [] try: db = couchdbServer.create("players") except: db = couchdbServer["players"] for playerId in db: players.append(Player.load(db,playerId)) return output_template("newGame.html", dict(players = players))
def updatePlayer(postVars): global couchdbServer playerId = postVars["playerId"].value.decode("utf-8") operation = postVars["operation"].value.decode("utf-8") jsonReturn = dict() jsonReturn["error"] = False try: db = couchdbServer.create("players") except: db = couchdbServer["players"] if operation == "delete": jsonReturn["htmlId"] = "row_%s" % playerId try: player = db[playerId] db.delete(player) except: jsonReturn["error"] = True elif operation == "resetKarma": jsonReturn["htmlId"] = "karma_col_%s" % playerId try: player = Player.load(db,playerId) player.resetKarma() jsonReturn["newKarma"] = "%.1f" % player.karma; player.store(db) except: jsonReturn["error"] = True templateVars = dict(json = json.dumps(jsonReturn)) return output_template("json.html", templateVars )
def viewRanking(postVars): global couchdbServer players = [] try: db = couchdbServer.create("players") except: db = couchdbServer["players"] for playerId in db: players.append(Player.load(db,playerId)) sortedPlayers = sorted(players, reverse=True, key=lambda player: player.karma) playersNames = [] playersKarmas = [] for player in sortedPlayers: playersKarmas.append(str(player.karma)) playersNames.append("\"%s\"" % player.name) try: db = couchdbServer.create("snapshots") except: db = couchdbServer["snapshots"] snapshots = [] lastOpponent = None for snapshotId in db: snapshot = Snapshot.load(db,snapshotId) snapData = {} snapData["decription"] = snapshot.description snapData["opponent"] = snapshot.game.opponent snapData["idx"] = "%d%d%d%d%d%d" % (snapshot.date.year, snapshot.date.month, snapshot.date.day, snapshot.date.hour, snapshot.date.minute, snapshot.date.second ) snapshotLabel = "%d/%d/%d" % (snapshot.date.day, snapshot.date.month, snapshot.date.year ) if snapshot.game.opponent != lastOpponent: lastOpponent = snapshot.game.opponent snapshotLabel = "%s %s" % (snapshot.game.opponent, snapshotLabel) snapData["label"] = snapshotLabel snapData["players"] = {} for player in snapshot.players: snapData["players"][player.name]= player.karma snapshots.append(snapData) sortedSnapshots = sorted(snapshots, key=lambda snapshot: snapshot["idx"]) templateVars = {} templateVars["playersKarmas"] = ",".join(playersKarmas) templateVars["playersNames"] = ",".join(playersNames) templateVars["jsonSnapshots"] = json.dumps(sortedSnapshots) return output_template("viewRanking.html", templateVars)