Skip to content
Snippets Groups Projects
Commit 0c62b355 authored by Antoine Lambert's avatar Antoine Lambert
Browse files

admin/origin_save: Parse optional note from rejection POST request body

Optional rejection note for a save request will be send in POST request
body of the "admin-origin-save-request-reject" django admin view.

Related to T3256
parent 5e937de6
No related tags found
No related merge requests found
......@@ -3,6 +3,8 @@
# License: GNU Affero General Public License version 3, or any later version
# See top-level LICENSE file for more information
import json
from django.conf import settings
from django.contrib.admin.views.decorators import staff_member_required
from django.core.exceptions import ObjectDoesNotExist
......@@ -188,7 +190,9 @@ def _admin_origin_save_request_reject(request, visit_type, origin_url):
sor = SaveOriginRequest.objects.get(
visit_type=visit_type, origin_url=origin_url, status=SAVE_REQUEST_PENDING
)
sor.status = SAVE_REQUEST_REJECTED
sor.note = json.loads(request.body).get("note")
sor.save()
return HttpResponse(status=200)
......
......@@ -171,6 +171,37 @@ def test_reject_pending_save_request(client, swh_scheduler):
response = check_http_get_response(client, save_request_url, status_code=200)
assert response.data[0]["save_request_status"] == SAVE_REQUEST_REJECTED
assert response.data[0]["note"] is None
def test_reject_pending_save_request_with_note(client, swh_scheduler):
visit_type = "git"
origin_url = "https://wikipedia.com"
save_request_url = reverse(
"api-1-save-origin",
url_args={"visit_type": visit_type, "origin_url": origin_url},
)
response = check_http_post_response(client, save_request_url, status_code=200)
assert response.data["save_request_status"] == SAVE_REQUEST_PENDING
reject_request_url = reverse(
"admin-origin-save-request-reject",
url_args={"visit_type": visit_type, "origin_url": origin_url},
)
data = {"note": "The URL does not target a git repository"}
client.login(username=_user_name, password=_user_password)
response = check_http_post_response(
client, reject_request_url, status_code=200, data=data
)
response = check_http_get_response(client, save_request_url, status_code=200)
assert response.data[0]["save_request_status"] == SAVE_REQUEST_REJECTED
assert response.data[0]["note"] == data["note"]
def test_remove_save_request(client):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment