diff --git a/biosimdb_interface/form/webform.py b/biosimdb_interface/form/webform.py index 3f81d03..e38c841 100644 --- a/biosimdb_interface/form/webform.py +++ b/biosimdb_interface/form/webform.py @@ -177,8 +177,11 @@ def do_submit(): # keep pending_form_data and pending_files_dir for retry return redirect(url_for("form.webform")) - # success: now clear pending state + # success: now clear pending state etc. session.pop("pending_files_dir", None) + session.pop("access_token", None) + session.pop("user_email", None) + session.pop("post_login_redirect", None) BASE_URL = current_app.config["BASE_URL"] record_url = f"{BASE_URL}/uploads/{draft_id}" diff --git a/biosimdb_interface/templates/form/submit_success.html b/biosimdb_interface/templates/form/submit_success.html index f1a8771..1a4a7c6 100644 --- a/biosimdb_interface/templates/form/submit_success.html +++ b/biosimdb_interface/templates/form/submit_success.html @@ -6,22 +6,31 @@ record_url (str): URL of the newly created BioSimDB record. Behaviour: + - Clears client-side form cache so a new submission starts clean. - Counts down 10 seconds then redirects to record_url in the same tab. - "View Record" button opens record_url immediately and cancels the countdown. + - "Return to Webform" button returns to an empty form. #} {% extends "main/base.html" %} {% block content %}

BioSimDB record created successfully! Please complete your submission there.

Redirecting to your record in 10 seconds...

- View Record - +
+ View Record + Return to Webform +
{% endblock %} {% block scripts %} {{ super() }} diff --git a/tests/test_form/test_upload.py b/tests/test_form/test_upload.py index e88e0ea..e62a4d6 100644 --- a/tests/test_form/test_upload.py +++ b/tests/test_form/test_upload.py @@ -88,6 +88,15 @@ def test_do_submit_calls_invenio(client): patch("biosimdb_interface.form.webform.prepare_for_invenio") as mock_prepare, ): mock_prepare.return_value = "draft-123" - _response = client.post("/do_submit") + response = client.post("/do_submit") + assert response.status_code == 200 + assert b"View Record" in response.data + assert b"Return to Webform" in response.data assert mock_invite.called assert mock_prepare.called + + with client.session_transaction() as sess: + assert "pending_files_dir" not in sess + assert "access_token" not in sess + assert "user_email" not in sess + assert "post_login_redirect" not in sess