示例#1
0
 def test_create(self, db):
     """Test game creation."""
     game = Game(PlayerFactory(), PlayerFactory(), Color.white, 0, 7, 1, 1)
     game.save()
     games = Game.query.all()
     players = Player.query.all()
     assert len(games) == 1
     assert len(players) == 2
示例#2
0
    def __init__(self, season, episode):
        """Build a report."""
        self.season = season
        self.episode = episode

        self.games = []
        if self.episode > 0:
            self.games = Game.get_by_season_ep(season, episode)
        elif self.episode == 0:
            self.games = Game.get_by_season(season)

        player_sets = [game.players for game in self.games]
        self.players = frozenset().union(*player_sets)
示例#3
0
 def test_latest_season_episode(self, db):
     """Test calculation of latest (season, episode) tuple."""
     games = [
         GameFactory(season=s, episode=e)
         for (s, e) in [(1, 1), (1, 2), (2, 1), (3, 1)]
     ]
     map(methodcaller('save'), games)
     assert Game.latest_season_episode() == (3, 1)
示例#4
0
 def test_get_max_season_ep(self, db):
     """Test calculation of maximum season and episode."""
     games = [
         GameFactory(season=s, episode=e)
         for (s, e) in [(1, 1), (1, 2), (2, 1)]
     ]
     map(methodcaller('save'), games)
     assert Game.get_max_season_ep() == (2, 2)
示例#5
0
def delete_game(game_id):
    """Delete a game."""
    game = Game.get_by_id(game_id)
    if game is not None:
        game.delete()
        return '', 204
    else:
        return '', 404
示例#6
0
def prizes():
    """Prizes and achievements."""
    site_settings = current_app.config['SITE_SETTINGS']
    players = Player.query.all()
    games = Game.query.all()
    return render_template('dashboard/prizes.html',
                           site_settings=site_settings,
                           players=players,
                           games=games,
                           season_stats=Game.season_stats())
示例#7
0
def _set_game_create_choices(game_create_form):
    """
    Calculate choices for season and episode and update form.

    Should allow up to one more than current maxima.
    """
    max_season, max_episode = Game.get_max_season_ep()
    game_create_form.season.choices = [(s, s)
                                       for s in range(1, max_season + 2)]
    game_create_form.episode.choices = [(e, e)
                                        for e in range(1, max_episode + 2)]

    player_choices = [(player.id, '{} ({})'.format(player.full_name,
                                                   player.aga_id))
                      for player in Player.get_players()]
    game_create_form.white_id.choices = player_choices
    game_create_form.black_id.choices = player_choices
示例#8
0
def dashboard():
    """Dashboard."""
    site_settings = current_app.config['SITE_SETTINGS']
    form = LoginForm(request.form)
    # Handle logging in
    if request.method == 'POST':
        if form.validate_on_submit():
            login_user(form.user)
            flash('You are logged in.', 'success')
            redirect_url = (request.args.get('next')
                            or url_for('dashboard.dashboard'))
            return redirect(redirect_url)
        else:
            flash_errors(form)
    players = Player.query.all()
    games = Game.query.all()
    return render_template('dashboard/dashboard.html',
                           site_settings=site_settings,
                           login_form=form,
                           players=players,
                           games=games,
                           episode_stats=Game.episode_stats())
示例#9
0
 def validate_game_id(form, field):
     """Check that game exists."""
     game_id = form.game_id.data
     if Game.get_by_id(game_id) is None:
         raise ValidationError('Game {} does not exist'.format(game_id))