def games_players(id): game = model.Model().selectById(gameModel.Game, id) teamPlayers = getTeamPlayersByGameId(game.id) teams = model.Model().select(teamModel.Team).filter_by(gameId = game.id) players = model.Model().select(playerModel.Player).order_by(playerModel.Player.name) return render_template("games/players.html", game = game, teams = teams, players = players, teamPlayers = teamPlayers)
def games_score(gameId, teamId, playerId, game, round, mark): model.Model().update(gameModel.Game, gameId, { "round": round }) newMark = markModel.Mark() newMark.gameId = gameId newMark.teamId = teamId newMark.playerId = playerId newMark.game = game newMark.round = round newMark.createdAt = datetime.now() points = int(mark) if points == 20: newMark.twenty = 1 elif points == 19: newMark.nineteen = 1 elif points == 18: newMark.eighteen = 1 elif points == 17: newMark.seventeen = 1 elif points == 16: newMark.sixteen = 1 elif points == 15: newMark.fifteen = 1 elif points == 25: newMark.bullseye = 1 model.Model().create(newMark) return Response(json.dumps({ "id": int(newMark.id) }), status = 200, mimetype = "application/json")
def games_undo(gameId): marks = model.Model().select(markModel.Mark).filter_by(gameId = gameId).order_by(markModel.Mark.id.desc()) if marks.count() > 0: mark = marks.first() model.Model().update(gameModel.Game, gameId, { "turn": mark.playerId }) model.Model().delete(markModel.Mark, mark.id) return redirect("/games/%d/" % gameId)
def getTeamPlayersByGameId(gameId): teams = model.Model().select(teamModel.Team).filter_by(gameId = gameId) teamIds = [] for team in teams: teamIds.append(team.id) teamPlayers = model.Model().select(teamPlayerModel.TeamPlayer).filter(teamPlayerModel.TeamPlayer.teamId.in_(teamIds)).order_by("id") return teamPlayers
def games_create(): newGame = gameModel.Game(request.form["players"], 1, 1, False, 0, datetime.now()) model.Model().create(newGame) teams = 2 if newGame.players == 3: teams = 3 for i in range(0, teams): newTeam = teamModel.Team(newGame.id) model.Model().create(newTeam) return redirect("/games/%d/players/" % newGame.id)
def games_players_redo(id): teamPlayers = getTeamPlayersByGameId(id) for teamPlayer in teamPlayers: model.Model().delete(teamPlayerModel.TeamPlayer, teamPlayer.id) return redirect("/games/%d/players/" % id)
def games_start(id): game = model.Model().selectById(gameModel.Game, id) team1Player1 = teamPlayerModel.TeamPlayer(newTeam1.id, request.form["team-1-player-1-id"]) model.Model().create(team1Player1) team2Player1 = teamPlayerModel.TeamPlayer(newTeam2.id, request.form["team-2-player-1-id"]) model.Model().create(team2Player1) if game.players == 4: team1Player2 = teamPlayerModel.TeamPlayer(newTeam1.id, request.form["team-1-player-2-id"]) model.Model().create(team1Player2) team2Player2 = teamPlayerModel.TeamPlayer(newTeam2.id, request.form["team-2-player-2-id"]) model.Model().create(team2Player2) return redirect("/games/%d/" % id)
def players_create(): newPlayer = playerModel.Player(request.form["name"]) model.Model().create(newPlayer) gameId = request.form["gameId"] if gameId == "0": return redirect("/players/") else: return redirect("/games/" + str(gameId) + "/players/")
def games_index(): data = [] games = model.Model().select(gameModel.Game).filter_by(ready = True).order_by(desc("createdAt")) for game in games: gameData = { "id": game.id, "date": "{:%b %d, %Y} ".format(game.createdAt), "time": "{:%I:%M %p}".format(game.createdAt).lower(), "teams": [] } teams = model.Model().select(teamModel.Team).filter_by(gameId = game.id) for team in teams: teamData = { "id": team.id, "mark": 0, "players": [], "points": 0 } players = model.Model().select(teamPlayerModel.TeamPlayer).filter_by(teamId = team.id) for player in players: user = model.Model().selectById(playerModel.Player, player.playerId) teamData["players"].append(user.name) gameData["teams"].append(teamData) data.append(gameData) gameData["teams"].sort(key = operator.itemgetter("mark"), reverse = True) return render_template("games/index.html", games = data)
def games_next(id): game = model.Model().selectById(gameModel.Game, id) gameNum = game.game + 1 if game.complete: return redirect("/") teamPlayers = getTeamPlayersByGameId(game.id) if game.players == 4: if gameNum == 2: turn = teamPlayers[2].playerId else: turn = teamPlayers[1].playerId else: if gameNum == 2: turn = teamPlayers[1].playerId else: turn = teamPlayers[0].playerId model.Model().update(gameModel.Game, game.id, { "game": gameNum, "round": 1, "turn": turn }) return redirect("/games/%d/" % game.id)
def players_delete(id): model.Model().delete(playerModel.Player, id) return redirect("/players/")
def players_update(id): model.Model().update(playerModel.Player, id, request.form) return redirect("/players/")
def players_edit(id): players = model.Model().selectById(playerModel.Player, id) return render_template("players/edit.html", player=players)
def players_index(): players = model.Model().select(playerModel.Player).order_by( playerModel.Player.name) return render_template("players/index.html", players=players)
def games_board(id): game = model.Model().selectById(gameModel.Game, id) results = model.Model().select(resultModel.Result).filter_by(gameId = game.id) teams = model.Model().select(teamModel.Team).filter_by(gameId = game.id) data = { "id": int(game.id), "game": game.game, "round": game.round, "players": game.players, "turn": game.turn, "teams": [], "results": results } for team in teams: teamData = { "id": team.id, "players": [], "marks": { 20: 0, 19: 0, 18: 0, 17: 0, 16: 0, 15: 0, 25: 0, "points": 0 }, "results": [] } for i in range(1, 4): results = model.Model().select(resultModel.Result).filter_by(gameId = game.id, teamId = team.id, game = i) resultSet = { "score": 0, "win": 0, "loss": 0 } if results.count() > 0: result = results.first() resultSet["score"] = result.score resultSet["win"] = result.win resultSet["loss"] = result.loss teamData["results"].append(resultSet) players = model.Model().select(teamPlayerModel.TeamPlayer).filter_by(teamId = team.id) for player in players: user = model.Model().selectById(playerModel.Player, player.playerId) teamData["players"].append({ "id": user.id, "name": user.name }) scored = { "twenty": 0, "nineteen": 0, "eighteen": 0, "seventeen": 0, "sixteen": 0, "fifteen": 0, "bullseye": 0 } pointsScored = 0 marks = model.Model().select(markModel.Mark).filter_by(gameId = game.id, teamId = team.id, game = game.game) for mark in marks: if mark.twenty: teamData["marks"][20] += 1 scored["twenty"] += 1 if scored["twenty"] > 3: pointsScored += 20 elif mark.nineteen: teamData["marks"][19] += 1 scored["nineteen"] += 1 if scored["nineteen"] > 3: pointsScored += 19 elif mark.eighteen: teamData["marks"][18] += 1 scored["eighteen"] += 1 if scored["eighteen"] > 3: pointsScored += 18 elif mark.seventeen: teamData["marks"][17] += 1 scored["seventeen"] += 1 if scored["seventeen"] > 3: pointsScored += 17 elif mark.sixteen: teamData["marks"][16] += 1 scored["sixteen"] += 1 if scored["sixteen"] > 3: pointsScored += 16 elif mark.fifteen: teamData["marks"][15] += 1 scored["fifteen"] += 1 if scored["fifteen"] > 3: pointsScored += 15 elif mark.bullseye: teamData["marks"][25] += 1 scored["bullseye"] += 1 if scored["bullseye"] > 3: pointsScored += 25 teamData["marks"]["points"] = pointsScored data["teams"].append(teamData) return render_template("games/board.html", game = data)
def games_play(id): team = model.Model().select(teamModel.Team).filter_by(gameId = id).first() teamPlayer = model.Model().select(teamPlayerModel.TeamPlayer).filter_by(teamId = team.id).first() game = model.Model().selectById(gameModel.Game, id) model.Model().update(gameModel.Game, game.id, { "ready": True, "turn": teamPlayer.playerId }) return redirect("/games/%d/" % id)
def gameResult(gameId, teamId, win, loss): model.Model().update(teamModel.Team, teamId, { "win": win, "loss": loss }) if win == 1: model.Model().update(gameModel.Game, gameId, { "complete": 1 }) return Response(json.dumps({ "id": teamId }), status = 200, mimetype = "application/json")
def result(gameId, teamId, game, score, win, loss): newResult = resultModel.Result(gameId, teamId, game, score, win, loss, datetime.now()) model.Model().create(newResult) return Response(json.dumps({ "id": gameId }), status = 200, mimetype = "application/json")
def games_players_create(id): teamPlayer = teamPlayerModel.TeamPlayer(request.form["teamId"], request.form["playerId"]) model.Model().create(teamPlayer) return Response(json.dumps({ "id": int(teamPlayer.id) }), status = 200, mimetype = "application/json")
def players_details(id): player = model.Model().selectById(playerModel.Player, id) teamPlayers = model.Model().select( teamPlayerModel.TeamPlayer).filter_by(playerId=id) marks = model.Model().select(markModel.Mark).filter_by(playerId=id) session = model.Model().getSession() query = session.query( markModel.Mark.gameId, markModel.Mark.teamId, markModel.Mark.round).distinct(markModel.Mark.gameId).distinct( markModel.Mark.teamId).distinct( markModel.Mark.round).filter_by(playerId=id) rounds = len(query.all()) teamIds = [] for teamPlayer in teamPlayers: teamIds.append(teamPlayer.teamId) teams = model.Model().select(teamModel.Team).filter( teamModel.Team.id.in_(teamIds)) wins = teams.filter_by(win=1).count() losses = teams.filter_by(loss=1).count() points = 0 game = 0 round = 0 for mark in marks: if game != mark.gameId and round != mark.round: scored = { "twenty": 0, "nineteen": 0, "eighteen": 0, "seventeen": 0, "sixteen": 0, "fifteen": 0, "bullseye": 0 } game = mark.gameId round = mark.round if mark.twenty: scored["twenty"] += 1 if scored["twenty"] > 3: points += 20 elif mark.nineteen: scored["nineteen"] += 1 if scored["nineteen"] > 3: points += 19 elif mark.eighteen: scored["eighteen"] += 1 if scored["eighteen"] > 3: points += 18 elif mark.seventeen: scored["seventeen"] += 1 if scored["seventeen"] > 3: points += 17 elif mark.sixteen: scored["sixteen"] += 1 if scored["sixteen"] > 3: points += 16 elif mark.fifteen: scored["fifteen"] += 1 if scored["fifteen"] > 3: points += 15 elif mark.bullseye: scored["bullseye"] += 1 if scored["bullseye"] > 3: points += 25 return render_template("players/details.html", player=player, teamPlayers=teamPlayers, marks=marks, wins=wins, losses=losses, points=points, rounds=rounds)
def games_turn(gameId, playerId): model.Model().update(gameModel.Game, gameId, { "turn": playerId }) return Response(json.dumps({ "id": gameId }), status = 200, mimetype = "application/json")