def tree_page(): groupid = request.args.get('id', None) if groupid is None: flash("Invalid group ID.") return redirect(url_for('error_page')) try: groupid = int(groupid) except ValueError: flash("Invalid group ID.") return redirect(url_for('error_page')) api = API() result = api.get_group_tree(groupid) if result == API.ERR_NO_SUCH_GAME: flash("No such group.") return redirect(url_for('error_page')) group_tree = result treeview_data = make_treeview_data(group_tree) _groupid, games = api.get_group_games(gameid=groupid) # TODO: 0.2: https://github.com/jonmiles/bootstrap-treeview navbar_items = default_navbar_items() return render_template('web/tree.html', description=games[0].situation.description, groupid=group_tree.groupid, treeview_data=treeview_data, navbar_items=navbar_items, is_logged_in=is_logged_in(), url=request.url, my_screenname=get_my_screenname())
def group_page(): gameid = request.args.get('id', None) if gameid is None: flash("Invalid game ID.") return redirect(url_for('error_page')) try: gameid = int(gameid) except ValueError: flash("Invalid game ID.") return redirect(url_for('error_page')) if is_logged_in(): userid = session['userid'] else: userid = None api = API() result = api.get_group_games(gameid=gameid, userid=userid) if result == API.ERR_NO_SUCH_GAME: flash("No such game.") return redirect(url_for('error_page')) del gameid groupid, games = result # pylint:disable=unpacking-non-sequence # We rely on all games having the same players here - and there being at # least one of them! screennames = [rgp.user.screenname for rgp in games[0].rgp_details] results_by_player = {screenname: 0.0 for screenname in screennames} for i, screenname in enumerate(screennames): for game in games: if not game.rgp_details[i].results: continue results_by_player[screenname] += game.spawn_factor * \ game.rgp_details[i].results['ev'] total_results = [{'screenname': screenname, 'result': results_by_player[screenname]} for screenname in screennames] total_weight = sum(game.spawn_factor for game in games if game.is_analysed) # TODO: 2: (big work! awesome!) betting line "roll-up" and/or EV tree view games = sorted(games, key=game_line_key) navbar_items = default_navbar_items() return render_template('web/group.html', description=games[0].situation.description, games=games, screennames=[user.screenname for user in games[0].users], total_weight=total_weight, total_results=total_results, userid=userid, groupid=groupid, navbar_items=navbar_items, is_logged_in=is_logged_in(), is_first_action=is_what_now(), url=request.url, my_screenname=get_my_screenname())