Fix/graphics and recovery #136

Merged
duan_j merged 9 commits from fix/graphics-and-recovery into main 2026-08-12 10:25:36 +02:00
7 changed files with 3072 additions and 3 deletions
View File
+1 -1
View File
@@ -191,7 +191,7 @@ class MainWindow(QMainWindow):
# default) so the mutable list is per-instance (RUF012).
self._pre_vacancy_open_banners: list[TitleLabel] = []
self._theme_mode = THEME_SUNRISE
self._theme_mode = THEME_BLUEBIRD
self._theme_action_group = None
self._use_legacy_theme_action = None
self._use_portrait_theme_action = None
+4
View File
@@ -1,3 +1,5 @@
import logging
from aarecommon.config.logger import attach_to_logger, find_existing_formatter
from PySide6.QtCore import QTimer, Signal, Slot
from PySide6.QtWidgets import (
@@ -221,6 +223,8 @@ class LogPanel(QWidget):
self.emitter.message.connect(self._append_line)
self.handler = QtLogHandler(self.emitter)
# hide debug message from log panel
self.handler.setLevel(logging.INFO)
self.handler.setFormatter(find_existing_formatter())
def attach_logger(self, logger_name: str = "aareGUI"):
+4 -1
View File
@@ -713,7 +713,10 @@ class DAQWorker(QObject):
try:
response_data = self.handle_response(reply)
payload = json.loads(response_data) if response_data else {}
message = str(payload.get("message") or default_message)
if not isinstance(payload, dict):
message = str(payload)
else:
message = str(payload.get("message") or default_message)
logger.info(message)
self.status_message.emit(message, False)
self.recovery_action_completed.emit(message)
+1 -1
View File
@@ -623,7 +623,7 @@ class StatusBar(QStatusBar):
self.get_all_pgroups.emit()
def _generate_pgroup_dialogue(self, curr: str | None = None, pgroups: list | None = None):
logger.info(pgroups)
# logger.info(pgroups) # too much information for normal operation
dialog = PGroupDialog(curr_pgroup=curr, pgroups=pgroups, parent=self.window())
if dialog.exec() == QDialog.DialogCode.Accepted:
@@ -0,0 +1,45 @@
"""Covers the recovery-response payload handling in DAQWorker.
The server may return a bare JSON string instead of a dict during recovery
(see fix "allow str has no get when in recovery"), so the handler must not
assume ``payload.get`` exists.
"""
import json
from unittest.mock import MagicMock
import pytest
from aare.gui.threads.daq_worker import DAQWorker
@pytest.fixture
def worker(qapp):
w = DAQWorker(base_url=None, token="test-token")
w._timer.stop() # no background polling during tests
w.send_status_request = MagicMock()
return w
def run_recovery(worker, response_data, default="default recovery message"):
worker.handle_response = MagicMock(return_value=response_data)
slot = MagicMock()
worker.recovery_action_completed.connect(slot)
worker._handle_recovery_action_response(MagicMock(), default)
return slot
def test_recovery_response_dict_payload(worker):
slot = run_recovery(worker, json.dumps({"message": "TELL recovered"}))
slot.assert_called_once_with("TELL recovered")
def test_recovery_response_dict_without_message_uses_default(worker):
slot = run_recovery(worker, json.dumps({"status": "ok"}), default="fallback")
slot.assert_called_once_with("fallback")
def test_recovery_response_str_payload(worker):
# A bare JSON string has no .get(); must be passed through as-is.
slot = run_recovery(worker, json.dumps("plain string status"))
slot.assert_called_once_with("plain string status")
Generated
+3017
View File
File diff suppressed because it is too large Load Diff