add forbidden exceptions on closed elements

This commit is contained in:
Maxime Réaux 2026-02-13 11:38:59 +01:00
parent 42eb625ef6
commit 88bd28e949
6 changed files with 151 additions and 71 deletions

View file

@ -4,7 +4,7 @@ import json
import shutil
from datetime import datetime
from warchron.model.exception import DeletionForbidden
from warchron.model.exception import ForbiddenOperation
from warchron.model.player import Player
from warchron.model.war import War
from warchron.model.war_participant import WarParticipant
@ -91,7 +91,7 @@ class Model:
wars_using_player.append(war.name)
if wars_using_player:
wars_str = ", ".join(wars_using_player)
raise DeletionForbidden(
raise ForbiddenOperation(
f"This player is participating in war(s): {wars_str}.\n"
"Remove it from participants first."
)
@ -178,6 +178,21 @@ class Model:
return list(self.wars.values())
def remove_war(self, war_id: str) -> None:
war = self.wars[war_id]
if war:
if war.is_over:
raise ForbiddenOperation("Can't remove closed war.")
if war.has_finished_campaign():
raise ForbiddenOperation("Can't remove war with finished campaign(s).")
if war.has_finished_round():
raise ForbiddenOperation(
"Can't remove war with finished round(s) in campaign(s)."
)
if war.has_finished_battle():
raise ForbiddenOperation(
"Can't remove war with finished battle(s) in round(s) "
"in campaign(s)."
)
del self.wars[war_id]
# Objective methods