Skip to content

Commit

Permalink
Add confirmation before deletion (#289)
Browse files Browse the repository at this point in the history
  • Loading branch information
mcantelon committed Nov 21, 2024
1 parent 911875f commit e7b59a1
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
8 changes: 8 additions & 0 deletions AIPscan/Aggregator/templates/confirm.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{% extends "base.html" %}

{% block content %}
<form method="GET" action="{{ request.url }}">
<input type="hidden" name="confirm" value="1" />
<input type="submit" value="{{ action }}" class='btn btn-danger' /> <a href="{{ url_for(cancel_route) }}" class='btn btn-default'>Cancel</a>
</form>
{% endblock %}
18 changes: 18 additions & 0 deletions AIPscan/Aggregator/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
request,
url_for,
)
from functools import wraps

from AIPscan import db, typesense_helpers
from AIPscan.Aggregator import database_helpers, tasks
Expand Down Expand Up @@ -69,6 +70,21 @@ def _test_storage_service_connection(storage_service):
raise ConnectionError(str(err))


def confirm_required(action, cancel_route):
def decorator(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if request.args.get("confirm"):
return f(*args, **kwargs)

return render_template(
"confirm.html",
action=action,
cancel_route=cancel_route,
)
return decorated_function
return decorator

@aggregator.route("/", methods=["GET"])
def ss_default():
# load the default storage service
Expand Down Expand Up @@ -171,6 +187,7 @@ def new_storage_service():


@aggregator.route("/delete_storage_service/<storage_service_id>", methods=["GET"])
@confirm_required("Delete storage service", "aggregator.ss_default")
def delete_storage_service(storage_service_id):
storage_service = StorageService.query.get(storage_service_id)

Expand Down Expand Up @@ -241,6 +258,7 @@ def new_fetch_job(fetch_job_id):


@aggregator.route("/delete_fetch_job/<fetch_job_id>", methods=["GET"])
@confirm_required("Delete fetch job", "aggregator.ss_default")
def delete_fetch_job(fetch_job_id):
fetch_job = FetchJob.query.get(fetch_job_id)

Expand Down

0 comments on commit e7b59a1

Please sign in to comment.