diff --git a/containers/backupchecks/src/backend/app/main/routes_settings.py b/containers/backupchecks/src/backend/app/main/routes_settings.py index ba28ee7..0b54f02 100644 --- a/containers/backupchecks/src/backend/app/main/routes_settings.py +++ b/containers/backupchecks/src/backend/app/main/routes_settings.py @@ -1325,6 +1325,45 @@ def settings_cove_test_connection(): return jsonify({"ok": False, "message": f"Unexpected error: {exc}"}) +@main_bp.route("/settings/cove/run-now", methods=["POST"]) +@login_required +@roles_required("admin") +def settings_cove_run_now(): + """Manually trigger a Cove import and show the result as a flash message.""" + from ..cove_importer import CoveImportError, run_cove_import + + settings = _get_or_create_settings() + + if not getattr(settings, "cove_enabled", False): + flash("Cove integration is not enabled.", "warning") + return redirect(url_for("main.settings", section="integrations")) + + username = (getattr(settings, "cove_api_username", None) or "").strip() + password = (getattr(settings, "cove_api_password", None) or "").strip() + if not username or not password: + flash("Cove API credentials not configured.", "warning") + return redirect(url_for("main.settings", section="integrations")) + + try: + total, created, skipped, errors = run_cove_import(settings) + _log_admin_event( + "cove_import_manual", + f"Manual Cove import finished. accounts={total}, created={created}, skipped={skipped}, errors={errors}", + ) + flash( + f"Cove import finished. Accounts: {total}, new runs: {created}, skipped: {skipped}, errors: {errors}.", + "success" if errors == 0 else "warning", + ) + except CoveImportError as exc: + _log_admin_event("cove_import_manual_error", f"Manual Cove import failed: {exc}") + flash(f"Cove import failed: {exc}", "danger") + except Exception as exc: + _log_admin_event("cove_import_manual_error", f"Unexpected error during manual Cove import: {exc}") + flash(f"Unexpected error: {exc}", "danger") + + return redirect(url_for("main.settings", section="integrations")) + + @main_bp.route("/settings/news/create", methods=["POST"]) @login_required @roles_required("admin") diff --git a/containers/backupchecks/src/templates/main/settings.html b/containers/backupchecks/src/templates/main/settings.html index b9cdec2..248a9e1 100644 --- a/containers/backupchecks/src/templates/main/settings.html +++ b/containers/backupchecks/src/templates/main/settings.html @@ -560,11 +560,18 @@ {% if settings.cove_partner_id %} -