def get(self, *args, **kwargs): user = self.get_current_user() try: page = int(self.get_argument("page", 1)) display = int(self.get_argument("count", 25)) except ValueError: page = 1 display = 25 ranks = Team.ranks() teamcount = len(ranks) pcount = ceil(teamcount / display) if pcount < page: page = pcount end_count = display * page start_count = end_count - display teams = [] for i, team in enumerate(ranks): if i >= start_count and i < end_count: teams.append(team) if scoreboard_visible(user): self.render( "scoreboard/teams.html", timer=self.timer(), hide_scoreboard=self.application.settings["hide_scoreboard"], teams=teams, page=page, display=display, teamcount=teamcount, ) elif not user: self.redirect("/login") else: self.render("public/404.html")
def summary_table(self): ''' Render the "leaderboard" snippit ''' self.render('scoreboard/summary_table.html', teams=Team.ranks())
def update_gamestate(self, app): game_state = { "teams": {}, "levels": {}, "boxes": {}, "hint_count": len(Hint.all()), "flag_count": len(Flag.all()), "box_count": len(Box.all()), "level_count": len(GameLevel.all()), } teams = Team.ranks() for team in teams: if len(team.members) > 0: millis = int(round(time.time() * 1000)) game_state["teams"][team.name] = { "uuid": team.uuid, "flags": [str(flag) for flag in team.flags], "game_levels": [str(lvl) for lvl in team.game_levels], "members_count": len(team.members), "hints_count": len(team.hints), "bot_count": BotManager.instance().count_by_team(team.name), "money": team.money, } highlights = {"money": 0, "flag": 0, "bot": 0, "hint": 0} for item in highlights: value = team.get_score(item) game_state["teams"][team.name][item] = value game_history = app.settings["scoreboard_history"] if team.name in game_history: prev = game_history[team.name][item] if prev < value: highlights[item] = millis else: highlights[item] = game_history[ team.name]["highlights"][item] highlights["now"] = millis game_state["teams"][team.name]["highlights"] = highlights app.settings["scoreboard_history"][ team.name] = game_state["teams"].get(team.name) for level in GameLevel.all(): game_state["levels"][level.name] = { "type": level.type, "number": level.number, "teams": {}, "boxes": {}, "box_count": len(level.boxes), "flag_count": len(level.flags), } for team in teams: game_state["levels"][level.name]["teams"][team.name] = { "lvl_count": len(team.level_flags(level.number)), "lvl_unlock": level in team.game_levels, } for box in level.boxes: game_state["levels"][level.name]["boxes"][box.uuid] = { "name": box.name, "teams": {}, "flag_count": len(box.flags), } for team in teams: game_state["levels"][level.name]["boxes"][ box.uuid]["teams"][team.name] = { "box_count": len(team.box_flags(box)) } app.settings["scoreboard_state"] = game_state
def summary_table(self): """ Render the "leaderboard" snippit """ self.render("scoreboard/summary_table.html", teams=Team.ranks())