Browse Source

rename game_players to players, add bunnies method

testing
Burathar 5 years ago
parent
commit
f387cd5b9b
  1. 17
      app/models/game.py

17
app/models/game.py

@ -11,12 +11,10 @@ class Game(db.Model):
state = db.Column(db.Enum(GameState), server_default=GameState(1).name, nullable=False) state = db.Column(db.Enum(GameState), server_default=GameState(1).name, nullable=False)
start_time = db.Column(db.DateTime) start_time = db.Column(db.DateTime)
end_time = db.Column(db.DateTime) end_time = db.Column(db.DateTime)
game_players = db.relationship( players = db.relationship(
'GamePlayer', 'GamePlayer',
back_populates='game', back_populates='game',
cascade="save-update, merge, delete, delete-orphan") cascade="save-update, merge, delete, delete-orphan")
players = association_proxy('game_players', 'user',
creator=lambda user: GamePlayer(user=user))
users = association_proxy('game_players', 'user', users = association_proxy('game_players', 'user',
creator=lambda user: GamePlayer(user=user)) creator=lambda user: GamePlayer(user=user))
objectives = db.relationship( objectives = db.relationship(
@ -31,19 +29,22 @@ class Game(db.Model):
cascade="save-update, merge, delete, delete-orphan") cascade="save-update, merge, delete, delete-orphan")
def last_player_locations(self): def last_player_locations(self):
return [user.last_location(self) for user in self.players if user.locations]
def bunnies(self):
# pylint: disable=not-an-iterable # pylint: disable=not-an-iterable
return [gameplayer.user for gameplayer in self.game_players if gameplayer.role == Role.bunny] return [player.last_location() for player in self.players if player.user.locations]
def last_locations(self, players): def last_locations(self, players):
locations = [] locations = []
for player in players: for player in players:
if isinstance(player, GamePlayer):
player = player.user
locations.append(player.last_location(self)) locations.append(player.last_location(self))
return locations return locations
def bunnies(self):
# pylint: disable=not-an-iterable
return [gameplayer for gameplayer in self.players if gameplayer.role == Role.bunny]
def owned_by(self, user): def owned_by(self, user):
# pylint: disable=not-an-iterable # pylint: disable=not-an-iterable
'''given user is an owner of this game''' '''given user is an owner of this game'''
return user in [gameplayer.user for gameplayer in self.game_players if gameplayer.role == Role.owner] return user in [gameplayer.user for gameplayer in self.players if gameplayer.role == Role.owner]

Loading…
Cancel
Save