コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
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)
コード例 #4
0
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)
コード例 #5
0
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)