fix(cache): purge cache only once at startup, not on every write
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- Add clear_cache() called once in on_mount - ensure_cache_dir() no longer deletes existing files - This fixes the issue where only the last target's cache survived - Add widget.refresh() calls to force UI updates
This commit is contained in:
parent
8f623e1df6
commit
f4db16327f
3 changed files with 16 additions and 3 deletions
|
|
@ -6,7 +6,7 @@ from textual.containers import Horizontal, Vertical
|
||||||
from textual.reactive import reactive
|
from textual.reactive import reactive
|
||||||
from textual import work
|
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 (
|
from full_updater.backend.scanner import (
|
||||||
Target, ScanResult, get_lxc_list, lxc_is_running,
|
Target, ScanResult, get_lxc_list, lxc_is_running,
|
||||||
ensure_debsecan_installed, scan_apt, scan_cve, write_cache, scan_target
|
ensure_debsecan_installed, scan_apt, scan_cve, write_cache, scan_target
|
||||||
|
|
@ -46,6 +46,7 @@ class FullUpdaterApp(App):
|
||||||
yield SummaryPanel()
|
yield SummaryPanel()
|
||||||
|
|
||||||
def on_mount(self):
|
def on_mount(self):
|
||||||
|
clear_cache()
|
||||||
ensure_cache_dir()
|
ensure_cache_dir()
|
||||||
self.targets = [Target(target_id="host", name="hote", is_host=True)] + get_lxc_list()
|
self.targets = [Target(target_id="host", name="hote", is_host=True)] + get_lxc_list()
|
||||||
sidebar = self.query_one(Sidebar)
|
sidebar = self.query_one(Sidebar)
|
||||||
|
|
@ -93,6 +94,7 @@ class FullUpdaterApp(App):
|
||||||
result.error,
|
result.error,
|
||||||
result.status == "skipped"
|
result.status == "skipped"
|
||||||
)
|
)
|
||||||
|
sidebar.refresh()
|
||||||
|
|
||||||
def _finish_scan(self):
|
def _finish_scan(self):
|
||||||
self.pop_screen()
|
self.pop_screen()
|
||||||
|
|
@ -109,7 +111,7 @@ class FullUpdaterApp(App):
|
||||||
)
|
)
|
||||||
sidebar.refresh()
|
sidebar.refresh()
|
||||||
if self.targets:
|
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):
|
def _select_target(self, target_id: str):
|
||||||
self.selected_target = target_id
|
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),
|
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)
|
cache_time=get_cache_timestamp(cache_id)
|
||||||
)
|
)
|
||||||
|
summary.refresh()
|
||||||
|
|
||||||
def on_sidebar_target_selected(self, event: Sidebar.TargetSelected):
|
def on_sidebar_target_selected(self, event: Sidebar.TargetSelected):
|
||||||
self._select_target(event.target_id)
|
self._select_target(event.target_id)
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,12 @@ from typing import Any
|
||||||
CACHE_DIR = "/tmp/full-updater-cache"
|
CACHE_DIR = "/tmp/full-updater-cache"
|
||||||
|
|
||||||
|
|
||||||
def ensure_cache_dir() -> None:
|
def clear_cache() -> None:
|
||||||
if os.path.exists(CACHE_DIR):
|
if os.path.exists(CACHE_DIR):
|
||||||
shutil.rmtree(CACHE_DIR)
|
shutil.rmtree(CACHE_DIR)
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_cache_dir() -> None:
|
||||||
os.makedirs(CACHE_DIR, exist_ok=True)
|
os.makedirs(CACHE_DIR, exist_ok=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,13 @@ class SummaryPanel(Vertical):
|
||||||
apt_btn.disabled = apt_count == 0
|
apt_btn.disabled = apt_count == 0
|
||||||
cve_btn.disabled = cve_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):
|
def on_button_pressed(self, event: Button.Pressed):
|
||||||
if event.button.id == "btn-reload":
|
if event.button.id == "btn-reload":
|
||||||
self.post_message(self.ReloadPressed())
|
self.post_message(self.ReloadPressed())
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue