Skip to content

Commit 49ec62d

Browse files
Fix blockers propagation
Blockers were overwritting each other instead of being accumulated. Here we ensure that steps trigger a blockers update when any of their sub-models introduce a blocker, in which they accumulate said blockers. The same is done for the advanced configuration settings panel, which also has sub-models.
1 parent d7e109e commit 49ec62d

2 files changed

Lines changed: 15 additions & 7 deletions

File tree

src/aiidalab_qe/app/configuration/advanced/advanced.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ def __init__(self, model: AdvancedConfigurationSettingsModel, **kwargs):
8585
self._on_spin_type_change,
8686
"spin_type",
8787
)
88+
self._model.observe(
89+
self._on_blockers_change,
90+
"blockers",
91+
)
8892

8993
self.sub_settings: dict[str, ConfigurationSettingsPanel] = {
9094
"general": self.general,
@@ -129,6 +133,16 @@ def _on_input_structure_change(self, _):
129133
def _on_spin_type_change(self, _):
130134
self._update_tabs()
131135

136+
def _on_advanced_tab_change(self, change):
137+
tab: ConfigurationSettingsPanel = self.advanced_tabs.children[change["new"]] # type: ignore
138+
tab.render()
139+
140+
def _on_reset_to_defaults_button_click(self, _):
141+
self._reset()
142+
143+
def _on_blockers_change(self, _):
144+
self._model.update_blockers()
145+
132146
def _update_tabs(self):
133147
if not self.rendered:
134148
return
@@ -149,13 +163,6 @@ def _update_tabs(self):
149163
# possible redirection to an un-rendered tab
150164
self.advanced_tabs.selected_index = 0
151165

152-
def _on_advanced_tab_change(self, change):
153-
tab: ConfigurationSettingsPanel = self.advanced_tabs.children[change["new"]] # type: ignore
154-
tab.render()
155-
156-
def _on_reset_to_defaults_button_click(self, _):
157-
self._reset()
158-
159166
def _reset(self):
160167
self._model.reset()
161168
for _, model in self._model.get_models():

src/aiidalab_qe/common/wizard.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ def _on_confirmation_change(self, _):
195195

196196
def _on_blockers_change(self, _):
197197
if self._model.state is not State.INIT:
198+
self._model.update_blockers()
198199
self._model.update_blocker_messages()
199200
self._model.update_state()
200201

0 commit comments

Comments
 (0)