if (self.other_contacts):
chars.extend(map(strip,self.other_contacts.split(',')))
return chars
+
+ @property
+ def related_players(self):
+ """ Returns all players to this Influence (ie, the players of the
+ initiator or involved characters). Returns a dict where the
+ players (User objects) are keys and a list of Character objects
+ for which this player is related is the value.
+ """
+ players = {self.initiator.player : [self.initiator]}
+ for char in self.other_characters.all():
+ # Add this character to the player's list of characters for
+ # this Influence, creating a new list if this is the first
+ # character.
+ chars = players.get(char.player, [])
+ chars.append(char)
+ players[char.player] = chars
+ return players
class Meta:
verbose_name = _("Influence")