Skip to content

Commit dc7beda

Browse files
frjowes-otf
authored andcommitted
Proper confirm dialogs for batch anonymise of submissions.
1 parent 92bb9ca commit dc7beda

4 files changed

Lines changed: 57 additions & 14 deletions

File tree

hypha/apply/funds/templates/submissions/all.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -504,9 +504,10 @@
504504
</button>
505505
{% if SUBMISSION_ANONYMIZATION_ENABLED %}
506506
<button
507-
hx-post="{% url 'apply:submissions:bulk-anonymize' %}"
507+
hx-get="{% url 'apply:submissions:bulk-anonymize-confirm' %}"
508508
hx-include="[name='selectedSubmissionIds']"
509-
hx-confirm="{% trans 'Are you sure you want to anonymize the selected submissions? All draft submission will be deleted. This action cannot be undone.' %}"
509+
hx-target="#htmx-modal"
510+
hx-swap="innerHTML"
510511
class="btn btn-sm"
511512
>
512513
{% heroicon_outline "user-minus" aria_hidden="true" size=14 class="stroke-base-content/80" %}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{% load i18n %}
2+
3+
<c-modal.confirm
4+
title="{% trans 'Anonymize applications' %}"
5+
action="{% url 'apply:submissions:bulk-anonymize' %}"
6+
initial_mode="anonymize"
7+
>
8+
<p class="text-sm text-fg-muted">
9+
{% blocktranslate trimmed with count=submission_ids|length %}
10+
Are you sure you want to anonymize {{ count }} submission(s)?
11+
Personal data will be removed and applications will only be accessible
12+
via statistics in the Results view. All draft submissions will be deleted.
13+
This action cannot be undone.
14+
{% endblocktranslate %}
15+
</p>
16+
{% for id in submission_ids %}
17+
<input type="hidden" name="selectedSubmissionIds" value="{{ id }}">
18+
{% endfor %}
19+
</c-modal.confirm>

hypha/apply/funds/urls.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
)
1212
from .views.all import (
1313
bulk_anonymize_submissions,
14+
bulk_anonymize_submissions_confirm,
1415
bulk_archive_submissions,
1516
bulk_archive_submissions_confirm,
1617
bulk_delete_submissions,
@@ -112,6 +113,11 @@
112113
name="bulk-delete-confirm",
113114
),
114115
path("all/bulk_delete/", bulk_delete_submissions, name="bulk-delete"),
116+
path(
117+
"all/bulk_anonymize_confirm/",
118+
bulk_anonymize_submissions_confirm,
119+
name="bulk-anonymize-confirm",
120+
),
115121
path("all/bulk_anonymize/", bulk_anonymize_submissions, name="bulk-anonymize"),
116122
path(
117123
"all/bulk_update_status/",

hypha/apply/funds/views/all.py

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -407,25 +407,42 @@ def bulk_delete_submissions(request):
407407
return redirect(reverse("apply:submissions:list"))
408408

409409

410+
@login_required
411+
@require_http_methods(["GET"])
412+
def bulk_anonymize_submissions_confirm(request):
413+
if not settings.SUBMISSION_ANONYMIZATION_ENABLED:
414+
return HttpResponseForbidden()
415+
if not permissions.can_bulk_delete_submissions(request.user):
416+
return HttpResponseForbidden()
417+
418+
submission_ids = request.GET.getlist("selectedSubmissionIds")
419+
return render(
420+
request,
421+
"submissions/bulk_anonymize_confirm.html",
422+
{"submission_ids": submission_ids},
423+
)
424+
425+
410426
@login_required
411427
@require_http_methods(["POST"])
412428
def bulk_anonymize_submissions(request):
413-
if settings.SUBMISSION_ANONYMIZATION_ENABLED:
414-
if not permissions.can_bulk_delete_submissions(request.user):
415-
return HttpResponseForbidden()
429+
if not settings.SUBMISSION_ANONYMIZATION_ENABLED:
430+
return HttpResponseForbidden()
431+
if not permissions.can_bulk_delete_submissions(request.user):
432+
return HttpResponseForbidden()
416433

417-
submission_ids = request.POST.getlist("selectedSubmissionIds")
418-
submissions = ApplicationSubmission.objects.filter(id__in=submission_ids)
434+
submission_ids = request.POST.getlist("selectedSubmissionIds")
435+
submissions = ApplicationSubmission.objects.filter(id__in=submission_ids)
419436

420-
services.bulk_anonymize_submissions(
421-
submissions=submissions,
422-
user=request.user,
423-
request=request,
424-
)
437+
services.bulk_anonymize_submissions(
438+
submissions=submissions,
439+
user=request.user,
440+
request=request,
441+
)
425442

443+
if request.htmx:
426444
return HttpResponseClientRefresh()
427-
428-
return HttpResponseForbidden()
445+
return redirect(reverse("apply:submissions:list"))
429446

430447

431448
@login_required

0 commit comments

Comments
 (0)