From 4476d0b55fe0f8bfe3502457737ed6b9aeacc0a6 Mon Sep 17 00:00:00 2001 From: Ross Date: Mon, 16 Dec 2024 11:13:57 +0000 Subject: [PATCH] allow bulk adding cid candidates by group --- .../generic/cid_group_view_detail.html | 20 ++++++++++++++-- generic/urls.py | 5 ++++ generic/views.py | 23 ++++++++++++++++++- 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/generic/templates/generic/cid_group_view_detail.html b/generic/templates/generic/cid_group_view_detail.html index 7fb2e25b..2a470090 100755 --- a/generic/templates/generic/cid_group_view_detail.html +++ b/generic/templates/generic/cid_group_view_detail.html @@ -73,8 +73,24 @@ {{exam}} {% if group_type == "cid" %} Edit candidates - {% comment %} - {% endcomment %} +
+ + + + +
{% else %} Edit candidates
diff --git a/generic/urls.py b/generic/urls.py index 6e0047d0..6446b630 100755 --- a/generic/urls.py +++ b/generic/urls.py @@ -105,6 +105,11 @@ urlpatterns = [ views.CidUserGroupDelete.as_view(), name="cid_group_delete", ), + path( + "cid/group//add", + views.cid_group_add_candidates_to_exams, + name="cid_group_add_candidates_to_exams", + ), path( "cids/group/create", views.CidUserGroupCreate.as_view(), name="cid_group_create" ), diff --git a/generic/views.py b/generic/views.py index 83af330e..281e6c71 100644 --- a/generic/views.py +++ b/generic/views.py @@ -2890,7 +2890,7 @@ def user_group_add_by_email_user(request, group_id): # Ignore invalid emails pass - res = f"
Users added to {group.name} [{','.join(added)}]
" + res = f"
Users added to {group.name} [{','.join(added)} ({len(added)})]
" if invalid_emails: res += f"
Invalid emails [{','.join(invalid_emails)}]
" @@ -2928,6 +2928,27 @@ def cid_group_view_all(request): {"groups": groups, "view_all": True}, ) +@user_is_cid_user_manager +def cid_group_add_candidates_to_exams(request, group_id): + if request.htmx: + group = get_object_or_404(CidUserGroup, pk=group_id) + + exam_id = request.POST.get("exam_id") + exam_type = request.POST.get("exam_type") + + ExamModel = get_exam_model_from_app_name(exam_type) + + exam = get_object_or_404(ExamModel, pk=exam_id) + + if request.POST.get("action") == "remove": + exam.valid_cid_users.remove(*group.ciduser_set.all()) + return HttpResponse(f"Candidates removed") + else: + exam.valid_cid_users.add(*group.ciduser_set.all()) + return HttpResponse(f"Candidates added") + # exam.save() + + raise PermissionDenied() # or Http404 @user_is_cid_user_manager def user_group_add_candidates_to_exams(request, group_id):