Skip to content

Commit

Permalink
Handle aiidalab#847
Browse files Browse the repository at this point in the history
  • Loading branch information
edan-bainglass committed Oct 23, 2024
1 parent ef02ca4 commit 4c35f98
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/aiidalab_qe/app/result/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ def render(self):
)
ipw.dlink(
(self._model, "process_remote_folder_is_clean"),
(self.kill_button, "disabled"),
(self.clean_scratch_button, "disabled"),
)
self.clean_scratch_button.on_click(self._on_clean_scratch_button_click)

Expand Down Expand Up @@ -132,6 +132,7 @@ def _on_state_change(self, _):
self._update_kill_button_layout()

def _on_process_change(self, _):
self._model.update()
self._update_state()
self._update_kill_button_layout()
self._update_clean_scratch_button_layout()
Expand Down
15 changes: 14 additions & 1 deletion src/aiidalab_qe/app/result/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ def process_node(self):
self._process_node = self._get_process_node()
return self._process_node

def update(self):
self._update_process_remote_folder_state()

def kill_process(self):
if process := self._get_process_node():
control.kill_processes(process)
Expand All @@ -31,7 +34,7 @@ def clean_remote_data(self):
return
for called_descendant in self.process_node.called_descendants:
if isinstance(called_descendant, orm.CalcJobNode):
with contextlib.suppress(OSError, KeyError):
with contextlib.suppress(Exception):
called_descendant.outputs.remote_folder._clean()
self.process_remote_folder_is_clean = True

Expand All @@ -41,3 +44,13 @@ def reset(self):

def _get_process_node(self):
return orm.load_node(self.process) if self.process else None

def _update_process_remote_folder_state(self):
if self.process_node is None:
return
cleaned = []
for called_descendant in self.process_node.called_descendants:
if isinstance(called_descendant, orm.CalcJobNode):
with contextlib.suppress(Exception):
cleaned.append(called_descendant.outputs.remote_folder.is_empty)
self.process_remote_folder_is_clean = all(cleaned)

0 comments on commit 4c35f98

Please sign in to comment.