示例#1
0
def create_game(user, content):
    """Creates a pending game."""
    name        = content['name']
    max_points  = max(content['max_points'], 5)
    max_players = content['max_players']
    random      = content['random']
    emails      = content['emails']

    if len(emails) < 3:
        return jsonify(message='You need to invite more people!'), 418

    game = Game.create(
        user, name, max_points, min(max_players, len(emails) + 1), random
    )
    users   = User.get_all(emails) + [user]
    players = Player.create_all(users, game)

    player = next(
        (player for player in players if player.user == user),
        None
    )
    player.set_status_joined()

    notify(
        [u.device for u in users if u != user],
        'Politically Incorrect',
        'You\'ve been invited to a game: "{}"!'.format(name)
    )

    try:
        db.session.commit()
    except:
        db.session.rollback()
        raise

    return jsonify(**{
        'id'         : game.id,
        'name'       : game.name,
        'max_points' : game.max_points,
        'max_players': game.max_players,
        'status'     : game.status,
        'players'    : [
            {
                'name'  : p.user.name,
                'email' : p.user.email,
                'status': p.status
            }
            for p in game.players
        ]
    })
def create_game(user, content):
    """Creates a pending game."""
    name = content['name']
    max_points = max(content['max_points'], 5)
    max_players = content['max_players']
    random = content['random']
    emails = content['emails']

    if len(emails) < 3:
        return jsonify(message='You need to invite more people!'), 418

    game = Game.create(user, name, max_points, min(max_players,
                                                   len(emails) + 1), random)
    users = User.get_all(emails) + [user]
    players = Player.create_all(users, game)

    player = next((player for player in players if player.user == user), None)
    player.set_status_joined()

    notify([u.device for u in users if u != user], 'Politically Incorrect',
           'You\'ve been invited to a game: "{}"!'.format(name))

    try:
        db.session.commit()
    except:
        db.session.rollback()
        raise

    return jsonify(
        **{
            'id':
            game.id,
            'name':
            game.name,
            'max_points':
            game.max_points,
            'max_players':
            game.max_players,
            'status':
            game.status,
            'players': [{
                'name': p.user.name,
                'email': p.user.email,
                'status': p.status
            } for p in game.players]
        })
示例#3
0
def invite(id, user, content):
    """Invites a list of users."""
    game = Game.get(id)

    if not (user == game.host and game.status == Game.PENDING):
        return jsonify(message='I can\'t let you do that, Dave.'), 418

    emails  = content['emails']
    users   = User.get_all(emails)
    players = Player.create_all(users, game)
    game.invite_all(players)

    try:
        db.session.commit()
    except:
        db.session.rollback()
        raise

    return jsonify()
def invite(id, user, content):
    """Invites a list of users."""
    game = Game.get(id)

    if not (user == game.host and game.status == Game.PENDING):
        return jsonify(message='I can\'t let you do that, Dave.'), 418

    emails = content['emails']
    users = User.get_all(emails)
    players = Player.create_all(users, game)
    game.invite_all(players)

    try:
        db.session.commit()
    except:
        db.session.rollback()
        raise

    return jsonify()