Update source status using a fresh connection (safe after DB failures).
(
source_id,
status,
last_message=None,
*,
notify_error=False,
ws_action="refresh",
ws_error=None,
)
| 85 | |
| 86 | |
| 87 | def _set_epg_source_status( |
| 88 | source_id, |
| 89 | status, |
| 90 | last_message=None, |
| 91 | *, |
| 92 | notify_error=False, |
| 93 | ws_action="refresh", |
| 94 | ws_error=None, |
| 95 | ): |
| 96 | """Update source status using a fresh connection (safe after DB failures).""" |
| 97 | _release_task_db_connection() |
| 98 | update = {"status": status} |
| 99 | if last_message is not None: |
| 100 | update["last_message"] = last_message |
| 101 | try: |
| 102 | EPGSource.objects.filter(id=source_id).update(**update) |
| 103 | if notify_error: |
| 104 | send_epg_update( |
| 105 | source_id, |
| 106 | ws_action, |
| 107 | 100, |
| 108 | status="error", |
| 109 | error=ws_error or last_message, |
| 110 | ) |
| 111 | except Exception as e: |
| 112 | logger.error( |
| 113 | f"Failed to set EPG source {source_id} status to {status}: {e}" |
| 114 | ) |
| 115 | |
| 116 | |
| 117 | def _ensure_epg_refresh_terminal_status(source_id): |
no test coverage detected