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] })
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()