From 452143f1ef43af4b85318b7393443fad38b938ae Mon Sep 17 00:00:00 2001 From: Ross Date: Mon, 20 Oct 2025 12:41:33 +0100 Subject: [PATCH] Enhance bulk delete functionality by adding user confirmation before submission and removing debug information from the response when no items are deleted. --- .../generic/partials/bulk_delete_result.html | 9 --------- generic/views.py | 8 +------- templates/question_table_view.html | 13 +++++++++++++ 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/generic/templates/generic/partials/bulk_delete_result.html b/generic/templates/generic/partials/bulk_delete_result.html index 20d82742..9ff82ee7 100644 --- a/generic/templates/generic/partials/bulk_delete_result.html +++ b/generic/templates/generic/partials/bulk_delete_result.html @@ -2,12 +2,3 @@ {% if errors %}
Errors: {{ errors }}
{% endif %} - -{% if deleted == 0 and debug_post %} -
- Debug: POST data received -
{{ debug_post|pprint }}
-

Computed ids: {{ debug_ids }}

-

App: {{ debug_app }}

-
-{% endif %} diff --git a/generic/views.py b/generic/views.py index e504e835..db59e603 100644 --- a/generic/views.py +++ b/generic/views.py @@ -211,8 +211,6 @@ def bulk_delete_questions(request): deleted = 0 errors = [] - # For debugging: capture what was received - received_post = {k: request.POST.getlist(k) for k in request.POST.keys()} try: qs = Model.objects.filter(pk__in=list(ids)) deleted = qs.count() @@ -221,12 +219,8 @@ def bulk_delete_questions(request): logger.exception("bulk_delete failed for app=%s ids=%s", app, ids) return JsonResponse({"ok": False, "error": str(e)}, status=500) - # Render a small fragment. Include debug info when nothing was deleted to aid diagnosis. + # Render a small fragment summarising deletions context = {"deleted": deleted, "errors": errors} - if deleted == 0: - context["debug_post"] = received_post - context["debug_ids"] = sorted(list(ids)) - context["debug_app"] = app return render(request, "generic/partials/bulk_delete_result.html", context) diff --git a/templates/question_table_view.html b/templates/question_table_view.html index 7f69d021..912a1e29 100644 --- a/templates/question_table_view.html +++ b/templates/question_table_view.html @@ -81,6 +81,19 @@ const uniq = Array.from(new Set(selected.map(String))); console.log('Bulk delete selected ids:', uniq); document.getElementById('bulk-selected-input').value = uniq.join(','); + // Confirm with the user before submitting + const count = uniq.length; + if(count === 0){ + // nothing selected: prevent submit and show alert + e.preventDefault(); + alert('No items selected for deletion.'); + return; + } + const ok = confirm(`Delete ${count} selected question${count === 1 ? '' : 's'}? This cannot be undone.`); + if(!ok){ + e.preventDefault(); + return; + } // allow HTMX to submit });