diff --git a/src/calng/utils.py b/src/calng/utils.py index e3e747af117fa9e32661db77120250e8a1a4ebcb..d4cd132174e339a920762d35091cc179c5ff4040 100644 --- a/src/calng/utils.py +++ b/src/calng/utils.py @@ -47,13 +47,16 @@ class ContextWarningLamp: if (warn_type not in self._active_warnings) or ( not only_print_once and message != self._active_warnings[warn_type] ): - self._device.log_status_warn(message) + self._device.log_status_warn(f"{warn_type.name}: {message}") self._new_warnings.add(warn_type) self._active_warnings[warn_type] = message def update_state(self, on_success="NORMAL", on_error="ERROR"): - for now_okay in self._new_tested - self._new_warnings: - self._active_warnings.pop(now_okay, None) + for warn_type_lifted in self._active_warnings.keys() & ( + self._new_tested - self._new_warnings + ): + del self._active_warnings[warn_type_lifted] + self._device.log_status_info(f"Lifted warning: {warn_type_lifted.name}") current_state = self._device.unsafe_get(self._schema_key) if self._active_warnings and current_state != on_error: self._device.set(self._schema_key, on_error)