refactor campaign participant ID
This commit is contained in:
parent
fbb1c913ba
commit
ac01568c2f
4 changed files with 221 additions and 129 deletions
|
|
@ -126,11 +126,17 @@ class Model:
|
|||
# TODO don't use this method as participant with same ID (player) can be in several wars!
|
||||
def get_war_by_war_participant(self, participant_id: str) -> War:
|
||||
for war in self.wars.values():
|
||||
for part in war.participants.values():
|
||||
if part.id == participant_id:
|
||||
return war
|
||||
if war.has_participant(participant_id):
|
||||
return war
|
||||
raise KeyError(f"Participant {participant_id} not found in any War")
|
||||
|
||||
def get_war_by_campaign_participant(self, participant_id: str) -> Campaign:
|
||||
for war in self.wars.values():
|
||||
camp = war.get_campaign_by_campaign_participant(participant_id)
|
||||
if camp is not None:
|
||||
return war
|
||||
raise KeyError(f"Participant {participant_id} not found")
|
||||
|
||||
def update_war(self, war_id: str, *, name: str, year: int):
|
||||
war = self.get_war(war_id)
|
||||
war.set_name(name)
|
||||
|
|
@ -218,7 +224,6 @@ class Model:
|
|||
return camp
|
||||
raise KeyError(f"Round {round_id} not found")
|
||||
|
||||
# TODO don't use this method as participant with same ID (player) can be in several campaigns!
|
||||
def get_campaign_by_campaign_participant(self, participant_id: str) -> Campaign:
|
||||
for war in self.wars.values():
|
||||
camp = war.get_campaign_by_campaign_participant(participant_id)
|
||||
|
|
@ -308,14 +313,18 @@ class Model:
|
|||
raise KeyError("Participant not found")
|
||||
|
||||
def update_campaign_participant(
|
||||
self, participant_id: str, *, leader: str, theme: str
|
||||
self,
|
||||
participant_id: str,
|
||||
*,
|
||||
leader: str,
|
||||
theme: str,
|
||||
):
|
||||
camp = self.get_campaign_by_campaign_participant(participant_id)
|
||||
camp.update_campaign_participant(participant_id, leader=leader, theme=theme)
|
||||
war = self.get_war_by_campaign_participant(participant_id)
|
||||
war.update_campaign_participant(participant_id, leader=leader, theme=theme)
|
||||
|
||||
def remove_campaign_participant(self, participant_id: str):
|
||||
camp = self.get_campaign_by_campaign_participant(participant_id)
|
||||
camp.remove_campaign_participant(participant_id)
|
||||
war = self.get_war_by_campaign_participant(participant_id)
|
||||
war.remove_campaign_participant(participant_id)
|
||||
|
||||
# Round methods
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue