diff --git a/containers/backupchecks/src/backend/app/main/routes_settings.py b/containers/backupchecks/src/backend/app/main/routes_settings.py index 3d07f03..65aaeb6 100644 --- a/containers/backupchecks/src/backend/app/main/routes_settings.py +++ b/containers/backupchecks/src/backend/app/main/routes_settings.py @@ -715,6 +715,34 @@ def settings(): autotask_ticket_statuses = [] autotask_last_sync_at = getattr(settings, "autotask_reference_last_sync_at", None) + # Auto-load reference data on page load if Autotask is enabled but cache is empty + try: + if ( + bool(getattr(settings, "autotask_enabled", False)) + and bool(getattr(settings, "autotask_api_username", None)) + and bool(getattr(settings, "autotask_api_password", None)) + and bool(getattr(settings, "autotask_tracking_identifier", None)) + ): + missing_cache = ( + not getattr(settings, "autotask_cached_queues_json", None) + or not getattr(settings, "autotask_cached_ticket_sources_json", None) + or not getattr(settings, "autotask_cached_ticket_statuses_json", None) + or not getattr(settings, "autotask_cached_priorities_json", None) + ) + if missing_cache: + queues_loaded, sources_loaded, statuses_loaded, priorities_loaded = _refresh_autotask_reference_data(settings) + db.session.commit() + flash( + f"Autotask reference data auto-loaded. Queues: {len(queues_loaded)}. Ticket Sources: {len(sources_loaded)}. Ticket Statuses: {len(statuses_loaded)}. Priorities: {len(priorities_loaded)}.", + "info", + ) + except Exception as exc: + try: + db.session.rollback() + except Exception: + pass + flash(f"Failed to auto-load Autotask reference data: {exc}", "warning") + try: if getattr(settings, "autotask_cached_queues_json", None): autotask_queues = json.loads(settings.autotask_cached_queues_json) or []