fix remove round used in sector

This commit is contained in:
Maxime Réaux 2026-02-06 11:13:29 +01:00
parent 6cd3a060c7
commit 701f6b3292
7 changed files with 15 additions and 9 deletions

View file

@ -62,7 +62,7 @@ class CampaignParticipantDTO:
class SectorDTO: class SectorDTO:
id: str id: str
name: str name: str
round_index: int round_index: int | None
major: str major: str
minor: str minor: str
influence: str influence: str
@ -71,7 +71,7 @@ class SectorDTO:
@dataclass @dataclass
class RoundDTO: class RoundDTO:
id: str id: str
index: int index: int | None
@dataclass(frozen=True, slots=True) @dataclass(frozen=True, slots=True)

View file

@ -269,10 +269,13 @@ class Campaign:
def remove_round(self, round_id: str) -> None: def remove_round(self, round_id: str) -> None:
rnd = next((r for r in self.rounds if r.id == round_id), None) rnd = next((r for r in self.rounds if r.id == round_id), None)
for sect in self.sectors.values():
if sect.round_id == round_id:
sect.round_id = None
if rnd: if rnd:
self.rounds.remove(rnd) self.rounds.remove(rnd)
def get_round_index(self, round_id: str) -> int: def get_round_index(self, round_id: str | None) -> int | None:
if round_id is None: if round_id is None:
return None return None
for index, rnd in enumerate(self.rounds, start=1): for index, rnd in enumerate(self.rounds, start=1):

View file

@ -380,7 +380,9 @@ class Model:
return rnd return rnd
raise KeyError("Round not found") raise KeyError("Round not found")
def get_round_index(self, round_id: str) -> int: def get_round_index(self, round_id: str | None) -> int | None:
if round_id is None:
return None
camp = self.get_campaign_by_round(round_id) camp = self.get_campaign_by_round(round_id)
return camp.get_round_index(round_id) return camp.get_round_index(round_id)

View file

@ -7,14 +7,14 @@ class Sector:
def __init__( def __init__(
self, self,
name: str, name: str,
round_id: str, round_id: str | None,
major_id: str | None, major_id: str | None,
minor_id: str | None, minor_id: str | None,
influence_id: str | None, influence_id: str | None,
): ):
self.id: str = str(uuid4()) self.id: str = str(uuid4())
self.name: str = name self.name: str = name
self.round_id: str = round_id self.round_id: str | None = round_id
self.major_objective_id: str | None = major_id # ref to War.objectives self.major_objective_id: str | None = major_id # ref to War.objectives
self.minor_objective_id: str | None = minor_id # ref to War.objectives self.minor_objective_id: str | None = minor_id # ref to War.objectives
self.influence_objective_id: str | None = influence_id # ref to War.objectives self.influence_objective_id: str | None = influence_id # ref to War.objectives

View file

@ -21,7 +21,7 @@ def format_campaign_label(camp: CampaignDTO) -> str:
return f"{camp.name} ({calendar.month_name[camp.month]})" return f"{camp.name} ({calendar.month_name[camp.month]})"
def format_round_label(index: int) -> str: def format_round_label(index: int | None) -> str:
if index is None: if index is None:
return "" return ""
return f"Round {index}" return f"Round {index}"

View file

@ -23,10 +23,11 @@ class SectorDialog(QDialog):
super().__init__(parent) super().__init__(parent)
self.ui: Ui_sectorDialog = Ui_sectorDialog() self.ui: Ui_sectorDialog = Ui_sectorDialog()
self.ui.setupUi(self) # type: ignore self.ui.setupUi(self) # type: ignore
self.ui.sectorName.setText(default_name)
self.ui.majorComboBox.addItem("(none)", None) self.ui.majorComboBox.addItem("(none)", None)
self.ui.minorComboBox.addItem("(none)", None) self.ui.minorComboBox.addItem("(none)", None)
self.ui.influenceComboBox.addItem("(none)", None) self.ui.influenceComboBox.addItem("(none)", None)
self.ui.sectorName.setText(default_name) self.ui.roundComboBox.addItem("(none)", None)
for index, rnd in enumerate(rounds, start=1): for index, rnd in enumerate(rounds, start=1):
self.ui.roundComboBox.addItem(format_round_label(index), rnd.id) self.ui.roundComboBox.addItem(format_round_label(index), rnd.id)
select_if_exists(self.ui.roundComboBox, default_round_id) select_if_exists(self.ui.roundComboBox, default_round_id)

View file

@ -448,7 +448,7 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
if action == edit_action and self.on_edit_item: if action == edit_action and self.on_edit_item:
self.on_edit_item(ItemType.BATTLE, battle_id) self.on_edit_item(ItemType.BATTLE, battle_id)
def show_round_details(self, *, index: int) -> None: def show_round_details(self, *, index: int | None) -> None:
self.roundNb.setText(f"Round {index}") self.roundNb.setText(f"Round {index}")
def display_round_choices(self, participants: List[ChoiceDTO]) -> None: def display_round_choices(self, participants: List[ChoiceDTO]) -> None: