示例#1
0
    def test_to_csv(self):
        games = make_games(['1A', '1B'])
        players = make_players([
            (1, 'GM1A', None, {'1A': 'G'}),
            (1, 'GM1B', None, {'1B': 'G'}),
            (5, 'P1A', None, {'1A': 'P'}),
            (5, 'P1B', None, {'1B': 'P'}),
        ])

        game_tables = GameTables(games, players, {
            '1A': [GameTable(
                games['1A'], players.get_player('GM1A 0'),
                [players.get_player('P1A %s' % (i,)) for i in xrange(5)])],
            '1B': [GameTable(
                games['1B'], players.get_player('GM1B 0'),
                [players.get_player('P1B %s' % (i,)) for i in xrange(5)])],
        })

        game_tables_csv = StringIO()
        game_tables.to_csv(game_tables_csv)
        self.assertEqual(game_tables_csv.getvalue(), '\r\n'.join([
            'slot,gm,players',
            '1A,GM1A 0,P1A 0,P1A 1,P1A 2,P1A 3,P1A 4',
            '1B,GM1B 0,P1B 0,P1B 1,P1B 2,P1B 3,P1B 4',
            '',
        ]))
示例#2
0
def game_table_list_csv(slot):
    try:
        game = db.get_game(slot)
    except db.NotFound:
        abort(404)
    players = db.get_players_for_game(slot)
    game_tables = GameTables([game], players, {slot: db.get_game_tables(slot)})
    table_list_csv = StringIO()
    game_tables.to_list_csv(table_list_csv)
    resp = make_response(table_list_csv.getvalue())
    resp.headers['Content-Type'] = 'text/csv'
    return resp
示例#3
0
    def test_from_csv(self):
        games = make_games(['1A', '1B'])
        players = make_players([
            (1, 'GM1A', None, {'1A': 'G'}),
            (1, 'GM1B', None, {'1B': 'G'}),
            (5, 'P1A', None, {'1A': 'P'}),
            (5, 'P1B', None, {'1B': 'P'}),
        ])

        game_tables = GameTables.from_csv(
            games, players, StringIO('\n'.join([
                'slot,gm,players',
                '1A,GM1A 0,P1A 0,P1A 1,P1A 2,P1A 3,P1A 4',
                '1B,GM1B 0,P1B 0,P1B 1,P1B 2,P1B 3,P1B 4',
            ])))

        self.assertEqual(
            list(game_tables.all_tables()),
            list(GameTables(games, players, {
                '1A': [GameTable(
                    games['1A'], players.get_player('GM1A 0'),
                    [players.get_player('P1A %s' % (i,)) for i in xrange(5)])],
                '1B': [GameTable(
                    games['1B'], players.get_player('GM1B 0'),
                    [players.get_player('P1B %s' % (i,)) for i in xrange(5)])],
            }).all_tables()))
示例#4
0
def tables_upload():
    games = db.get_games()
    players = db.get_players()
    game_tables = GameTables.from_csv(
        games, players, request.files['tables.csv'])
    db.set_all_game_tables(game_tables)
    flash("Tables imported.")
    return redirect(url_for('tables'))
示例#5
0
    def test_to_list(self):
        games = make_games(['1A', '1B'])
        players = make_players([
            (1, 'GM1A', None, {'1A': 'G'}),
            (1, 'GM1B', None, {'1B': 'G'}),
            (5, 'P1A', None, {'1A': 'P'}),
            (5, 'P1B', None, {'1B': 'P'}),
        ])

        game_tables = GameTables(games, players, {
            '1A': [GameTable(
                games['1A'], players.get_player('GM1A 0'),
                [players.get_player('P1A %s' % (i,)) for i in xrange(5)])],
            '1B': [GameTable(
                games['1B'], players.get_player('GM1B 0'),
                [players.get_player('P1B %s' % (i,)) for i in xrange(5)])],
        })

        table_list_csv = StringIO()
        game_tables.to_list_csv(table_list_csv)
        self.assertEqual(table_list_csv.getvalue(), '\r\n'.join([
            'Table 1 (1A: Game 1A)',
            'GM: GM1A 0',
            'P1A 0',
            'P1A 1',
            'P1A 2',
            'P1A 3',
            'P1A 4',
            '',
            'Table 1 (1B: Game 1B)',
            'GM: GM1B 0',
            'P1B 0',
            'P1B 1',
            'P1B 2',
            'P1B 3',
            'P1B 4',
            '',
            '',
        ]))
示例#6
0
文件: db.py 项目: jerith/table-minion
def get_all_game_tables(games=None, players=None):
    if games is None:
        games = get_games()
    if players is None:
        players = get_players()

    rows = query_db('SELECT slot, data FROM game_tables;')
    game_table_dicts = []
    for row in rows:
        data = json.loads(row['data'])
        game_table_dicts.append({
            'slot': row['slot'],
            'gm': data['gm'],
            'players': data['players'],
        })
    return GameTables.from_dicts(games, players, game_table_dicts)
示例#7
0
文件: db.py 项目: jerith/table-minion
def get_game_tables(slot, game=None, players=None):
    if game is None:
        game = get_game(slot)
    games = {slot: game}
    if players is None:
        players = get_players()

    rows = query_db('SELECT data FROM game_tables WHERE slot=?;', (slot,))
    game_table_dicts = []
    for row in rows:
        data = json.loads(row['data'])
        game_table_dicts.append({
            'slot': slot,
            'gm': data['gm'],
            'players': data['players'],
        })
    return GameTables.from_dicts(games, players, game_table_dicts)[slot]