Scenario: Remove posibility to remove non leaf scenario.

disable_edition_parent_scenario
Pierre-Antoine 2026-05-22 09:21:55 +02:00
parent d922436ada
commit 5d8ec51417
2 changed files with 16 additions and 1 deletions

View File

@ -16,6 +16,8 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from functools import reduce
from tools import logger_exception from tools import logger_exception
from Model.Tools.PamhyrDict import PamhyrModelDict from Model.Tools.PamhyrDict import PamhyrModelDict
@ -78,3 +80,12 @@ class Scenarios(PamhyrModelDict):
self._dict[key].set_as_deleted() self._dict[key].set_as_deleted()
self._status.modified() self._status.modified()
def is_leaf(self, scenario):
return not reduce(
lambda acc, s: (
acc or s.parent is scenario
),
self._dict.values(),
False
)

View File

@ -57,6 +57,8 @@ class DefaultMenu(AbstractMenu):
class ScenarioMenu(AbstractMenu): class ScenarioMenu(AbstractMenu):
def run(self): def run(self):
item = self._items[0] item = self._items[0]
scenarios = item.graph._study.scenarios
current_scenario = item.graph._study.status.scenario.id current_scenario = item.graph._study.status.scenario.id
select = self._menu.addAction(self._trad["menu_select_scenario"]) select = self._menu.addAction(self._trad["menu_select_scenario"])
@ -64,7 +66,9 @@ class ScenarioMenu(AbstractMenu):
delete = None delete = None
if item.scenario.id != 0: if item.scenario.id != 0:
if scenarios.is_leaf(item.scenario):
delete = self._menu.addAction(self._trad["menu_del_scenario"]) delete = self._menu.addAction(self._trad["menu_del_scenario"])
if item.scenario.id == current_scenario: if item.scenario.id == current_scenario:
duplicate = self._menu.addAction( duplicate = self._menu.addAction(
self._trad["menu_dup_scenario"] self._trad["menu_dup_scenario"]