diff --git a/full_updater/app.py b/full_updater/app.py index 0df0f6d..3d8e895 100644 --- a/full_updater/app.py +++ b/full_updater/app.py @@ -6,7 +6,7 @@ from textual.containers import Horizontal, Vertical from textual.reactive import reactive from textual import work -from full_updater.backend.cache import ensure_cache_dir, read_cache, get_cache_timestamp +from full_updater.backend.cache import clear_cache, ensure_cache_dir, read_cache, get_cache_timestamp from full_updater.backend.scanner import ( Target, ScanResult, get_lxc_list, lxc_is_running, ensure_debsecan_installed, scan_apt, scan_cve, write_cache, scan_target @@ -46,6 +46,7 @@ class FullUpdaterApp(App): yield SummaryPanel() def on_mount(self): + clear_cache() ensure_cache_dir() self.targets = [Target(target_id="host", name="hote", is_host=True)] + get_lxc_list() sidebar = self.query_one(Sidebar) @@ -93,6 +94,7 @@ class FullUpdaterApp(App): result.error, result.status == "skipped" ) + sidebar.refresh() def _finish_scan(self): self.pop_screen() @@ -109,7 +111,7 @@ class FullUpdaterApp(App): ) sidebar.refresh() if self.targets: - self.set_timer(0.1, lambda: self._select_target(self.targets[0].target_id)) + self.set_timer(0.2, lambda: self._select_target(self.targets[0].target_id)) def _select_target(self, target_id: str): self.selected_target = target_id @@ -130,6 +132,7 @@ class FullUpdaterApp(App): skipped=not data and any(t.target_id == target_id and not t.is_host and not lxc_is_running(t.target_id) for t in self.targets), cache_time=get_cache_timestamp(cache_id) ) + summary.refresh() def on_sidebar_target_selected(self, event: Sidebar.TargetSelected): self._select_target(event.target_id) diff --git a/full_updater/backend/cache.py b/full_updater/backend/cache.py index 1edb94d..5172ca9 100644 --- a/full_updater/backend/cache.py +++ b/full_updater/backend/cache.py @@ -7,9 +7,12 @@ from typing import Any CACHE_DIR = "/tmp/full-updater-cache" -def ensure_cache_dir() -> None: +def clear_cache() -> None: if os.path.exists(CACHE_DIR): shutil.rmtree(CACHE_DIR) + + +def ensure_cache_dir() -> None: os.makedirs(CACHE_DIR, exist_ok=True) diff --git a/full_updater/ui/summary.py b/full_updater/ui/summary.py index fb93ca0..46dc560 100644 --- a/full_updater/ui/summary.py +++ b/full_updater/ui/summary.py @@ -104,6 +104,13 @@ class SummaryPanel(Vertical): apt_btn.disabled = apt_count == 0 cve_btn.disabled = cve_count == 0 + # Forcer le refresh de tous les widgets modifiés + apt_btn.refresh() + cve_btn.refresh() + err_label.refresh() + btn.refresh() + cache_label.refresh() + def on_button_pressed(self, event: Button.Pressed): if event.button.id == "btn-reload": self.post_message(self.ReloadPressed())