diff --git a/swh/web/common/origin_save.py b/swh/web/common/origin_save.py --- a/swh/web/common/origin_save.py +++ b/swh/web/common/origin_save.py @@ -246,7 +246,12 @@ else: save_task_status = save_request.loading_task_status - if save_request.loading_task_status != save_task_status: + if ( + # avoid to override final loading task status when already found + # as visit status is no longer checked once a visit date has been found + save_request.loading_task_status not in (SAVE_TASK_FAILED, SAVE_TASK_SUCCEEDED) + and save_request.loading_task_status != save_task_status + ): save_request.loading_task_status = save_task_status must_save = True @@ -259,7 +264,7 @@ "origin_url": save_request.origin_url, "save_request_date": save_request.request_date.isoformat(), "save_request_status": save_request.status, - "save_task_status": save_task_status, + "save_task_status": save_request.loading_task_status, "visit_date": visit_date.isoformat() if visit_date else None, } diff --git a/swh/web/tests/common/test_origin_save.py b/swh/web/tests/common/test_origin_save.py --- a/swh/web/tests/common/test_origin_save.py +++ b/swh/web/tests/common/test_origin_save.py @@ -289,3 +289,16 @@ assert len(sors) == 1 assert sors[0]["save_task_status"] == SAVE_TASK_FAILED assert sors[0]["visit_date"] is not None + + +@pytest.mark.django_db +def test_get_save_origin_requests_no_failed_status_override(mocker): + sors = _get_save_origin_requests( + mocker, load_status="uneventful", visit_status="not_found" + ) + assert len(sors) == 1 + assert sors[0]["save_task_status"] == SAVE_TASK_FAILED + assert sors[0]["visit_date"] is not None + + sors = get_save_origin_requests(_visit_type, _origin_url) + assert sors[0]["save_task_status"] == SAVE_TASK_FAILED