split edit methods in controller
This commit is contained in:
parent
4593400fd4
commit
7afbb5ea1d
1 changed files with 135 additions and 114 deletions
|
|
@ -361,129 +361,31 @@ class Controller:
|
||||||
self.refresh(scope)
|
self.refresh(scope)
|
||||||
self.view.select_tree_item(item_type=item_type, item_id=item_id)
|
self.view.select_tree_item(item_type=item_type, item_id=item_id)
|
||||||
|
|
||||||
# TODO separate routing and dedicated edit methods
|
|
||||||
def edit_item(self, item_type: str, item_id: str) -> None:
|
def edit_item(self, item_type: str, item_id: str) -> None:
|
||||||
if item_type == ItemType.PLAYER:
|
if item_type == ItemType.PLAYER:
|
||||||
play = self.model.get_player(item_id)
|
self.edit_player(item_id)
|
||||||
player_dialog = PlayerDialog(self.view, default_name=play.name)
|
|
||||||
if player_dialog.exec() == QDialog.DialogCode.Accepted:
|
|
||||||
name = player_dialog.get_player_name()
|
|
||||||
if not self._validate_player_inputs(name):
|
|
||||||
return
|
|
||||||
self.model.update_player(item_id, name=name)
|
|
||||||
self.refresh(RefreshScope.PLAYERS_LIST)
|
self.refresh(RefreshScope.PLAYERS_LIST)
|
||||||
elif item_type == ItemType.WAR:
|
elif item_type == ItemType.WAR:
|
||||||
war = self.model.get_war(item_id)
|
self.edit_war(item_id)
|
||||||
war_dialog = WarDialog(
|
|
||||||
self.view, default_name=war.name, default_year=war.year
|
|
||||||
)
|
|
||||||
if war_dialog.exec() == QDialog.DialogCode.Accepted:
|
|
||||||
name = war_dialog.get_war_name()
|
|
||||||
year = war_dialog.get_war_year()
|
|
||||||
if not self._validate_war_inputs(name, year):
|
|
||||||
return
|
|
||||||
self.model.update_war(item_id, name=name, year=year)
|
|
||||||
self.refresh_and_select(
|
self.refresh_and_select(
|
||||||
RefreshScope.WARS_TREE, item_type=ItemType.WAR, item_id=war.id
|
RefreshScope.WARS_TREE, item_type=ItemType.WAR, item_id=item_id
|
||||||
)
|
)
|
||||||
elif item_type == ItemType.CAMPAIGN:
|
elif item_type == ItemType.CAMPAIGN:
|
||||||
camp = self.model.get_campaign(item_id)
|
self.edit_campaign(item_id)
|
||||||
camp_dialog = CampaignDialog(
|
|
||||||
self.view, default_name=camp.name, default_month=camp.month
|
|
||||||
)
|
|
||||||
if camp_dialog.exec() == QDialog.DialogCode.Accepted:
|
|
||||||
name = camp_dialog.get_campaign_name()
|
|
||||||
month = camp_dialog.get_campaign_month()
|
|
||||||
if not self._validate_campaign_inputs(name, month):
|
|
||||||
return
|
|
||||||
self.model.update_campaign(item_id, name=name, month=month)
|
|
||||||
self.refresh_and_select(
|
self.refresh_and_select(
|
||||||
RefreshScope.WARS_TREE, item_type=ItemType.CAMPAIGN, item_id=camp.id
|
RefreshScope.WARS_TREE, item_type=ItemType.CAMPAIGN, item_id=item_id
|
||||||
)
|
)
|
||||||
elif item_type == ItemType.OBJECTIVE:
|
elif item_type == ItemType.OBJECTIVE:
|
||||||
obj = self.model.get_objective(item_id)
|
self.edit_objective(item_id)
|
||||||
obj_dialog = ObjectiveDialog(
|
|
||||||
self.view, default_name=obj.name, default_description=obj.description
|
|
||||||
)
|
|
||||||
if obj_dialog.exec() == QDialog.DialogCode.Accepted:
|
|
||||||
name = obj_dialog.get_objective_name()
|
|
||||||
description = obj_dialog.get_objective_description()
|
|
||||||
if not self._validate_objective_inputs(name, description):
|
|
||||||
return
|
|
||||||
self.model.update_objective(item_id, name=name, description=description)
|
|
||||||
self.refresh(RefreshScope.WAR_DETAILS)
|
self.refresh(RefreshScope.WAR_DETAILS)
|
||||||
elif item_type == ItemType.WAR_PARTICIPANT:
|
elif item_type == ItemType.WAR_PARTICIPANT:
|
||||||
war_part = self.model.get_war_participant(item_id)
|
self.edit_war_participant(item_id)
|
||||||
player = self.model.get_player(war_part.player_id)
|
|
||||||
play_opt = ParticipantOption(id=player.id, name=player.name)
|
|
||||||
war_part_dialog = WarParticipantDialog(
|
|
||||||
self.view,
|
|
||||||
players=[play_opt],
|
|
||||||
default_player_id=war_part.id,
|
|
||||||
default_faction=war_part.faction,
|
|
||||||
editable_player=False,
|
|
||||||
)
|
|
||||||
if war_part_dialog.exec() == QDialog.DialogCode.Accepted:
|
|
||||||
faction = war_part_dialog.get_participant_faction()
|
|
||||||
self.model.update_war_participant(item_id, faction=faction)
|
|
||||||
self.refresh(RefreshScope.WAR_DETAILS)
|
self.refresh(RefreshScope.WAR_DETAILS)
|
||||||
elif item_type == ItemType.SECTOR:
|
elif item_type == ItemType.SECTOR:
|
||||||
sect = self.model.get_sector(item_id)
|
self.edit_sector(item_id)
|
||||||
camp = self.model.get_campaign_by_sector(item_id)
|
|
||||||
war = self.model.get_war_by_campaign(camp.id)
|
|
||||||
rounds = camp.get_all_rounds()
|
|
||||||
rnd_dto: List[RoundDTO] = [
|
|
||||||
RoundDTO(id=rnd.id, index=i) for i, rnd in enumerate(rounds, start=1)
|
|
||||||
]
|
|
||||||
objectives = war.get_all_objectives()
|
|
||||||
obj_dto: List[ObjectiveDTO] = [
|
|
||||||
ObjectiveDTO(id=obj.id, name=obj.name, description=obj.description)
|
|
||||||
for obj in objectives
|
|
||||||
]
|
|
||||||
sect_dialog = SectorDialog(
|
|
||||||
self.view,
|
|
||||||
default_name=sect.name,
|
|
||||||
rounds=rnd_dto,
|
|
||||||
default_round_id=sect.round_id,
|
|
||||||
objectives=obj_dto,
|
|
||||||
default_major_id=sect.major_objective_id,
|
|
||||||
default_minor_id=sect.minor_objective_id,
|
|
||||||
default_influence_id=sect.influence_objective_id,
|
|
||||||
)
|
|
||||||
if sect_dialog.exec() == QDialog.DialogCode.Accepted:
|
|
||||||
name = sect_dialog.get_sector_name()
|
|
||||||
round_id = sect_dialog.get_round_id()
|
|
||||||
major_id = sect_dialog.get_major_id()
|
|
||||||
minor_id = sect_dialog.get_minor_id()
|
|
||||||
influence_id = sect_dialog.get_influence_id()
|
|
||||||
self.model.update_sector(
|
|
||||||
item_id,
|
|
||||||
name=name,
|
|
||||||
round_id=round_id,
|
|
||||||
major_id=major_id,
|
|
||||||
minor_id=minor_id,
|
|
||||||
influence_id=influence_id,
|
|
||||||
)
|
|
||||||
self.refresh(RefreshScope.CAMPAIGN_DETAILS)
|
self.refresh(RefreshScope.CAMPAIGN_DETAILS)
|
||||||
elif item_type == ItemType.CAMPAIGN_PARTICIPANT:
|
elif item_type == ItemType.CAMPAIGN_PARTICIPANT:
|
||||||
camp_part = self.model.get_campaign_participant(item_id)
|
self.edit_campaign_participant(item_id)
|
||||||
war_part = self.model.get_war_participant(camp_part.war_participant_id)
|
|
||||||
player = self.model.get_player(war_part.player_id)
|
|
||||||
part_opt = [ParticipantOption(id=player.id, name=player.name)]
|
|
||||||
camp_part_dialog = CampaignParticipantDialog(
|
|
||||||
self.view,
|
|
||||||
participants=part_opt,
|
|
||||||
default_participant_id=camp_part.id,
|
|
||||||
default_leader=camp_part.leader,
|
|
||||||
default_theme=camp_part.theme,
|
|
||||||
editable_player=False,
|
|
||||||
)
|
|
||||||
if camp_part_dialog.exec() == QDialog.DialogCode.Accepted:
|
|
||||||
leader = camp_part_dialog.get_participant_leader()
|
|
||||||
theme = camp_part_dialog.get_participant_theme()
|
|
||||||
self.model.update_campaign_participant(
|
|
||||||
item_id, leader=leader, theme=theme
|
|
||||||
)
|
|
||||||
self.refresh(RefreshScope.CAMPAIGN_DETAILS)
|
self.refresh(RefreshScope.CAMPAIGN_DETAILS)
|
||||||
elif item_type == ItemType.CHOICE:
|
elif item_type == ItemType.CHOICE:
|
||||||
self.edit_round_choice(item_id)
|
self.edit_round_choice(item_id)
|
||||||
|
|
@ -491,6 +393,7 @@ class Controller:
|
||||||
elif item_type == ItemType.BATTLE:
|
elif item_type == ItemType.BATTLE:
|
||||||
self.edit_round_battle(item_id)
|
self.edit_round_battle(item_id)
|
||||||
self.refresh(RefreshScope.ROUND_DETAILS)
|
self.refresh(RefreshScope.ROUND_DETAILS)
|
||||||
|
self.is_dirty = True
|
||||||
|
|
||||||
def delete_item(self, item_type: str, item_id: str) -> None:
|
def delete_item(self, item_type: str, item_id: str) -> None:
|
||||||
reply = QMessageBox.question(
|
reply = QMessageBox.question(
|
||||||
|
|
@ -556,6 +459,15 @@ class Controller:
|
||||||
self.is_dirty = True
|
self.is_dirty = True
|
||||||
self.refresh(RefreshScope.PLAYERS_LIST)
|
self.refresh(RefreshScope.PLAYERS_LIST)
|
||||||
|
|
||||||
|
def edit_player(self, player_id: str) -> None:
|
||||||
|
play = self.model.get_player(player_id)
|
||||||
|
player_dialog = PlayerDialog(self.view, default_name=play.name)
|
||||||
|
if player_dialog.exec() == QDialog.DialogCode.Accepted:
|
||||||
|
name = player_dialog.get_player_name()
|
||||||
|
if not self._validate_player_inputs(name):
|
||||||
|
return
|
||||||
|
self.model.update_player(player_id, name=name)
|
||||||
|
|
||||||
# War methods
|
# War methods
|
||||||
|
|
||||||
def _validate_war_inputs(self, name: str, year: int) -> bool:
|
def _validate_war_inputs(self, name: str, year: int) -> bool:
|
||||||
|
|
@ -585,6 +497,16 @@ class Controller:
|
||||||
RefreshScope.WARS_TREE, item_type=ItemType.WAR, item_id=war.id
|
RefreshScope.WARS_TREE, item_type=ItemType.WAR, item_id=war.id
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def edit_war(self, war_id: str) -> None:
|
||||||
|
war = self.model.get_war(war_id)
|
||||||
|
war_dialog = WarDialog(self.view, default_name=war.name, default_year=war.year)
|
||||||
|
if war_dialog.exec() == QDialog.DialogCode.Accepted:
|
||||||
|
name = war_dialog.get_war_name()
|
||||||
|
year = war_dialog.get_war_year()
|
||||||
|
if not self._validate_war_inputs(name, year):
|
||||||
|
return
|
||||||
|
self.model.update_war(war_id, name=name, year=year)
|
||||||
|
|
||||||
# Objective methods
|
# Objective methods
|
||||||
|
|
||||||
def _validate_objective_inputs(self, name: str, description: str) -> bool:
|
def _validate_objective_inputs(self, name: str, description: str) -> bool:
|
||||||
|
|
@ -609,6 +531,20 @@ class Controller:
|
||||||
self.is_dirty = True
|
self.is_dirty = True
|
||||||
self.refresh(RefreshScope.WAR_DETAILS)
|
self.refresh(RefreshScope.WAR_DETAILS)
|
||||||
|
|
||||||
|
def edit_objective(self, objective_id: str) -> None:
|
||||||
|
obj = self.model.get_objective(objective_id)
|
||||||
|
obj_dialog = ObjectiveDialog(
|
||||||
|
self.view, default_name=obj.name, default_description=obj.description
|
||||||
|
)
|
||||||
|
if obj_dialog.exec() == QDialog.DialogCode.Accepted:
|
||||||
|
name = obj_dialog.get_objective_name()
|
||||||
|
description = obj_dialog.get_objective_description()
|
||||||
|
if not self._validate_objective_inputs(name, description):
|
||||||
|
return
|
||||||
|
self.model.update_objective(
|
||||||
|
objective_id, name=name, description=description
|
||||||
|
)
|
||||||
|
|
||||||
# War participant methods
|
# War participant methods
|
||||||
|
|
||||||
def add_war_participant(self) -> None:
|
def add_war_participant(self) -> None:
|
||||||
|
|
@ -629,6 +565,21 @@ class Controller:
|
||||||
self.is_dirty = True
|
self.is_dirty = True
|
||||||
self.refresh(RefreshScope.WAR_DETAILS)
|
self.refresh(RefreshScope.WAR_DETAILS)
|
||||||
|
|
||||||
|
def edit_war_participant(self, participant_id: str) -> None:
|
||||||
|
war_part = self.model.get_war_participant(participant_id)
|
||||||
|
player = self.model.get_player(war_part.player_id)
|
||||||
|
play_opt = ParticipantOption(id=player.id, name=player.name)
|
||||||
|
war_part_dialog = WarParticipantDialog(
|
||||||
|
self.view,
|
||||||
|
players=[play_opt],
|
||||||
|
default_player_id=war_part.id,
|
||||||
|
default_faction=war_part.faction,
|
||||||
|
editable_player=False,
|
||||||
|
)
|
||||||
|
if war_part_dialog.exec() == QDialog.DialogCode.Accepted:
|
||||||
|
faction = war_part_dialog.get_participant_faction()
|
||||||
|
self.model.update_war_participant(participant_id, faction=faction)
|
||||||
|
|
||||||
# Campaign methods
|
# Campaign methods
|
||||||
|
|
||||||
def _validate_campaign_inputs(self, name: str, month: int) -> bool:
|
def _validate_campaign_inputs(self, name: str, month: int) -> bool:
|
||||||
|
|
@ -665,6 +616,18 @@ class Controller:
|
||||||
RefreshScope.WARS_TREE, item_type=ItemType.CAMPAIGN, item_id=camp.id
|
RefreshScope.WARS_TREE, item_type=ItemType.CAMPAIGN, item_id=camp.id
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def edit_campaign(self, campaign_id: str) -> None:
|
||||||
|
camp = self.model.get_campaign(campaign_id)
|
||||||
|
camp_dialog = CampaignDialog(
|
||||||
|
self.view, default_name=camp.name, default_month=camp.month
|
||||||
|
)
|
||||||
|
if camp_dialog.exec() == QDialog.DialogCode.Accepted:
|
||||||
|
name = camp_dialog.get_campaign_name()
|
||||||
|
month = camp_dialog.get_campaign_month()
|
||||||
|
if not self._validate_campaign_inputs(name, month):
|
||||||
|
return
|
||||||
|
self.model.update_campaign(campaign_id, name=name, month=month)
|
||||||
|
|
||||||
# Campaign participant methods
|
# Campaign participant methods
|
||||||
|
|
||||||
def add_campaign_participant(self) -> None:
|
def add_campaign_participant(self) -> None:
|
||||||
|
|
@ -691,6 +654,26 @@ class Controller:
|
||||||
self.is_dirty = True
|
self.is_dirty = True
|
||||||
self.refresh(RefreshScope.CAMPAIGN_DETAILS)
|
self.refresh(RefreshScope.CAMPAIGN_DETAILS)
|
||||||
|
|
||||||
|
def edit_campaign_participant(self, participant_id: str) -> None:
|
||||||
|
camp_part = self.model.get_campaign_participant(participant_id)
|
||||||
|
war_part = self.model.get_war_participant(camp_part.war_participant_id)
|
||||||
|
player = self.model.get_player(war_part.player_id)
|
||||||
|
part_opt = [ParticipantOption(id=player.id, name=player.name)]
|
||||||
|
camp_part_dialog = CampaignParticipantDialog(
|
||||||
|
self.view,
|
||||||
|
participants=part_opt,
|
||||||
|
default_participant_id=camp_part.id,
|
||||||
|
default_leader=camp_part.leader,
|
||||||
|
default_theme=camp_part.theme,
|
||||||
|
editable_player=False,
|
||||||
|
)
|
||||||
|
if camp_part_dialog.exec() == QDialog.DialogCode.Accepted:
|
||||||
|
leader = camp_part_dialog.get_participant_leader()
|
||||||
|
theme = camp_part_dialog.get_participant_theme()
|
||||||
|
self.model.update_campaign_participant(
|
||||||
|
participant_id, leader=leader, theme=theme
|
||||||
|
)
|
||||||
|
|
||||||
# Sector methods
|
# Sector methods
|
||||||
|
|
||||||
def _validate_sector_inputs(
|
def _validate_sector_inputs(
|
||||||
|
|
@ -739,6 +722,44 @@ class Controller:
|
||||||
self.is_dirty = True
|
self.is_dirty = True
|
||||||
self.refresh(RefreshScope.CAMPAIGN_DETAILS)
|
self.refresh(RefreshScope.CAMPAIGN_DETAILS)
|
||||||
|
|
||||||
|
def edit_sector(self, sector_id: str) -> None:
|
||||||
|
sect = self.model.get_sector(sector_id)
|
||||||
|
camp = self.model.get_campaign_by_sector(sector_id)
|
||||||
|
war = self.model.get_war_by_campaign(camp.id)
|
||||||
|
rounds = camp.get_all_rounds()
|
||||||
|
rnd_dto: List[RoundDTO] = [
|
||||||
|
RoundDTO(id=rnd.id, index=i) for i, rnd in enumerate(rounds, start=1)
|
||||||
|
]
|
||||||
|
objectives = war.get_all_objectives()
|
||||||
|
obj_dto: List[ObjectiveDTO] = [
|
||||||
|
ObjectiveDTO(id=obj.id, name=obj.name, description=obj.description)
|
||||||
|
for obj in objectives
|
||||||
|
]
|
||||||
|
sect_dialog = SectorDialog(
|
||||||
|
self.view,
|
||||||
|
default_name=sect.name,
|
||||||
|
rounds=rnd_dto,
|
||||||
|
default_round_id=sect.round_id,
|
||||||
|
objectives=obj_dto,
|
||||||
|
default_major_id=sect.major_objective_id,
|
||||||
|
default_minor_id=sect.minor_objective_id,
|
||||||
|
default_influence_id=sect.influence_objective_id,
|
||||||
|
)
|
||||||
|
if sect_dialog.exec() == QDialog.DialogCode.Accepted:
|
||||||
|
name = sect_dialog.get_sector_name()
|
||||||
|
round_id = sect_dialog.get_round_id()
|
||||||
|
major_id = sect_dialog.get_major_id()
|
||||||
|
minor_id = sect_dialog.get_minor_id()
|
||||||
|
influence_id = sect_dialog.get_influence_id()
|
||||||
|
self.model.update_sector(
|
||||||
|
sector_id,
|
||||||
|
name=name,
|
||||||
|
round_id=round_id,
|
||||||
|
major_id=major_id,
|
||||||
|
minor_id=minor_id,
|
||||||
|
influence_id=influence_id,
|
||||||
|
)
|
||||||
|
|
||||||
# Round methods
|
# Round methods
|
||||||
|
|
||||||
def add_round(self) -> None:
|
def add_round(self) -> None:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue