def bulk_team_action(): if request.method == "POST": responses = [] for team_id in request.form.getlist("team_ids"): if request.form.has_key("gold"): responses.append(cube.create_event_async(app, { "eventType": "GrantGold", "teamId": team_id, "gold": request.form["gold"], })) elif request.form.has_key("solvePuzzle"): responses.append(cube.update_puzzle_visibility_async( app, team_id, request.form["solvePuzzle"], "SOLVED")) else: abort(400) for response in responses: response.result() teams = cube.get_teams(app) team_ids = [team["teamId"] for team in teams] team_ids.sort() team_names = {team["teamId"]: team.get("teamName","") for team in teams} team_gold = { team["teamId"]: team.get("teamProperties",{}).get("GoldProperty",{}).get("gold",0) for team in teams } team_visibility_futures = {} for team_id in team_ids: team_visibility_futures[team_id] = cube.get_puzzle_visibilities_for_list_async( app, ["eventa", "eventb", "eventc", "eventd"], team_id) team_visibilities = {} for team_id, future in team_visibility_futures.iteritems(): visibilities = future.result().json()["visibilities"] team_visibilities[team_id] = { v["puzzleId"]: v for v in visibilities } return render_template( "bulk_team_action.html", team_ids=team_ids, team_names=team_names, team_gold=team_gold, team_visibilities=team_visibilities)
def bigboard(): sortBy = request.args.get("sortBy", "metas") teams = cube.get_teams(app) team_visibility_futures = {} for team in teams: team_visibility_futures[ team["teamId"]] = cube.get_puzzle_visibilities_async( app, team["teamId"]) team_visibilities = {} for team_id, future in team_visibility_futures.iteritems(): visibilities = future.result().json()["visibilities"] team_visibilities[team_id] = {v["puzzleId"]: v for v in visibilities} team_scores = { team['teamId']: team.get('teamProperties',{}).get('ScoresProperty',{}).get('scores',{}) \ for team in teams } team_metas_solved = get_puzzles_solved_by_team(teams, team_visibilities, round_puzzle_map.ALL_METAS) team_supermetas_solved = get_puzzles_solved_by_team( teams, team_visibilities, round_puzzle_map.ISLAND_SUPERMETAS) if sortBy == "metas": teams.sort(key=lambda team: (team_metas_solved[team[ "teamId"]], team_scores[team["teamId"]].get('BRAINPOWER', 0)), reverse=True) elif sortBy == "brainpower": teams.sort(key=lambda team: (team_scores[team["teamId"]].get( 'BRAINPOWER', 0), team_metas_solved[team["teamId"]]), reverse=True) elif sortBy == "supermetas": teams.sort( key=lambda team: (team_supermetas_solved[team["teamId"]], team_metas_solved[team[ "teamId"]], team_scores[team["teamId"]].get('BRAINPOWER', 0)), reverse=True) return render_template("bigboard.html", sortBy=sortBy, teams=teams, team_scores=team_scores, team_visibilities=team_visibilities, puzzles=get_puzzle_id_to_puzzle(), round_puzzle_map=round_puzzle_map)
def teams(): if request.method == "POST": cube.create_team( app, { "teamId": request.form["teamId"], "teamName": request.form["teamName"], "password": request.form["password"], "email": request.form["email"], "headquarters": request.form["headquarters"], "primaryPhone": request.form["primaryPhone"], "secondaryPhone": request.form["secondaryPhone"], }) teams = cube.get_teams(app) teams.sort(key=lambda t: t.get('teamId', '')) return render_template("teams.html", teams=teams)
def bigboard(): sortBy = request.args.get("sortBy", "metas") teams = cube.get_teams(app) team_visibility_futures = {} for team in teams: team_visibility_futures[team["teamId"]] = cube.get_puzzle_visibilities_async(app, team["teamId"]) team_visibilities = {} for team_id, future in team_visibility_futures.iteritems(): visibilities = future.result().json()["visibilities"] team_visibilities[team_id] = { v["puzzleId"]: v for v in visibilities } team_level_sum = { team["teamId"]: \ sum([team.get("teamProperties",{}).get("CharacterLevelsProperty",{}).get("levels",{}).get(c.upper(),0) \ for c in [ch for ch in CHARACTER_IDS if team_visibilities.get(team["teamId"],{}).get(ch,{}).get("status","INVISIBLE") in ["UNLOCKED","SOLVED"] ]]) \ for team in teams } team_metas_solved = { team["teamId"]: sum(v["status"] == "SOLVED" for v in team_visibilities[team["teamId"]].values() if v["puzzleId"] in CHARACTER_IDS + QUEST_IDS + ["battle", "fortress"]) for team in teams } if sortBy == "metas": teams.sort(key=lambda team: (team_metas_solved[team["teamId"]], team_level_sum[team["teamId"]]), reverse=True) elif sortBy == "levels": teams.sort(key=lambda team: (team_level_sum[team["teamId"]], team_metas_solved[team["teamId"]]), reverse=True) return render_template( "bigboard.html", sortBy=sortBy, teams=teams, team_level_sum=team_level_sum, team_visibilities=team_visibilities, puzzles=get_puzzle_id_to_puzzle(), character_ids=CHARACTER_IDS, quest_ids=QUEST_IDS, round_puzzle_map=ROUND_PUZZLE_MAP)
def bulk_team_action(): if request.method == "POST": responses = [] for team_id in request.form.getlist("team_ids"): if request.form.has_key("brainpower"): responses.append( cube.create_event_async( app, { "eventType": "GrantScore", "teamId": team_id, "scoreType": "BRAINPOWER", "scoreAmount": request.form["brainpower"], })) elif request.form.has_key("buzzyBucks"): responses.append( cube.create_event_async( app, { "eventType": "GrantScore", "teamId": team_id, "scoreType": "BUZZY_BUCKS", "scoreAmount": request.form["buzzyBucks"], })) elif request.form.has_key("solvePuzzle"): responses.append( cube.update_puzzle_visibility_async( app, team_id, request.form["solvePuzzle"], "SOLVED")) else: abort(400) for response in responses: response.result() teams = cube.get_teams(app) team_ids = [team["teamId"] for team in teams] team_ids.sort() team_names = {team["teamId"]: team.get("teamName", "") for team in teams} team_scores = { team["teamId"]: team.get("teamProperties", {}).get("ScoresProperty", {}).get("scores", {}) for team in teams } team_visibility_futures = {} for team_id in team_ids: team_visibility_futures[ team_id] = cube.get_puzzle_visibilities_for_list_async( app, round_puzzle_map.EVENTS, team_id) team_visibilities = {} for team_id, future in team_visibility_futures.iteritems(): visibilities = future.result().json()["visibilities"] team_visibilities[team_id] = {v["puzzleId"]: v for v in visibilities} return render_template("bulk_team_action.html", team_ids=team_ids, team_names=team_names, team_scores=team_scores, team_visibilities=team_visibilities, round_puzzle_map=round_puzzle_map)