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', '', ]))
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
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()))
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'))
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', '', '', ]))
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)
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]