refactor campaign participant ID

This commit is contained in:
Maxime Réaux 2026-02-02 14:33:31 +01:00
parent fbb1c913ba
commit ac01568c2f
4 changed files with 221 additions and 129 deletions

View file

@ -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