exceptions adding in closed elements

This commit is contained in:
Maxime Réaux 2026-02-13 15:44:28 +01:00
parent 88bd28e949
commit a2b6c7c684
10 changed files with 179 additions and 82 deletions

View file

@ -2,7 +2,7 @@ from typing import List, TYPE_CHECKING
from PyQt6.QtWidgets import QMessageBox, QDialog
from warchron.constants import ItemType, RefreshScope
from warchron.constants import RefreshScope
if TYPE_CHECKING:
from warchron.controller.app_controller import AppController
@ -11,6 +11,9 @@ from warchron.controller.dtos import (
WarParticipantDTO,
ObjectiveDTO,
)
from warchron.model.war import War
from warchron.model.war_participant import WarParticipant
from warchron.model.objective import Objective
from warchron.model.closure_service import ClosureService
from warchron.view.war_dialog import WarDialog
from warchron.view.objective_dialog import ObjectiveDialog
@ -60,21 +63,18 @@ class WarController:
return False
return True
def add_war(self) -> None:
def create_war(self) -> War | None:
dialog = WarDialog(
self.app.view, default_year=self.app.model.get_default_war_values()["year"]
)
result = dialog.exec() # modal blocking dialog
if result == QDialog.DialogCode.Accepted:
name = dialog.get_war_name()
year = dialog.get_war_year()
if not self._validate_war_inputs(name, year):
return
war = self.app.model.add_war(name, year)
self.app.is_dirty = True
self.app.navigation.refresh_and_select(
RefreshScope.WARS_TREE, item_type=ItemType.WAR, item_id=war.id
)
result = dialog.exec()
if result != QDialog.DialogCode.Accepted:
return None
name = dialog.get_war_name()
year = dialog.get_war_year()
if not self._validate_war_inputs(name, year):
return None
return self.app.model.add_war(name, year)
def edit_war(self, war_id: str) -> None:
war = self.app.model.get_war(war_id)
@ -142,21 +142,19 @@ class WarController:
return False
return True
def add_objective(self) -> None:
def create_objective(self) -> Objective | None:
if not self.app.navigation.selected_war_id:
return
return None
dialog = ObjectiveDialog(self.app.view)
if dialog.exec() != QDialog.DialogCode.Accepted:
return
return None
name = dialog.get_objective_name()
description = dialog.get_objective_description()
if not self._validate_objective_inputs(name, description):
return
self.app.model.add_objective(
return None
return self.app.model.add_objective(
self.app.navigation.selected_war_id, name, description
)
self.app.is_dirty = True
self.app.navigation.refresh(RefreshScope.CURRENT_SELECTION_DETAILS)
def edit_objective(self, objective_id: str) -> None:
obj = self.app.model.get_objective(objective_id)
@ -174,9 +172,9 @@ class WarController:
# War participant methods
def add_war_participant(self) -> None:
def create_war_participant(self) -> WarParticipant | None:
if not self.app.navigation.selected_war_id:
return
return None
players = self.app.model.get_available_players(
self.app.navigation.selected_war_id
)
@ -185,16 +183,14 @@ class WarController:
]
dialog = WarParticipantDialog(self.app.view, players=play_opts)
if dialog.exec() != QDialog.DialogCode.Accepted:
return
return None
player_id = dialog.get_player_id()
faction = dialog.get_participant_faction()
if not player_id:
return
self.app.model.add_war_participant(
return None
return self.app.model.add_war_participant(
self.app.navigation.selected_war_id, player_id, faction
)
self.app.is_dirty = True
self.app.navigation.refresh(RefreshScope.CURRENT_SELECTION_DETAILS)
def edit_war_participant(self, participant_id: str) -> None:
war_part = self.app.model.get_war_participant(participant_id)