From 6f89604d14f7e735f315a827cbba649a54ee9f57 Mon Sep 17 00:00:00 2001 From: Ross Date: Mon, 9 Jan 2023 14:04:17 +0000 Subject: [PATCH] High candidates that have submitted results --- generic/templates/generic/exam_cids.html | 63 +++++++++++++++++------- generic/urls.py | 10 ++++ generic/views.py | 16 +++++- rad/views.py | 3 +- 4 files changed, 72 insertions(+), 20 deletions(-) diff --git a/generic/templates/generic/exam_cids.html b/generic/templates/generic/exam_cids.html index aa4650ca..e16df4a2 100644 --- a/generic/templates/generic/exam_cids.html +++ b/generic/templates/generic/exam_cids.html @@ -7,12 +7,8 @@
    {% for cid in cid_users %} -
  1. {{cid.cid}} [{{cid.passcode}}] {{cid.name}} / +
  2. {{cid.cid}} [{{cid.passcode}}] {{cid.name}} / Email: {{cid.email}} - {% if cid.supervisor %} / Supervisor email: {{cid.supervisor.email}}{% endif %}
    - Internal candidate: {{cid.internal_candidate}} - {% if cid.login_email_sent %} / Login email sent{% endif %} - {% if cid.results_email_sent %} / Results email sent{% endif %}
  3. {% endfor %} @@ -34,7 +30,7 @@
      {% for user in user_users %} -
    1. {{user.username}} +
    2. {{user.username}} Email: {{user.email}}
    3. @@ -51,21 +47,54 @@ {% if user_exam_data %}
      -

      Submitted candidates

      -
        - {% for user_data in user_exam_data %} -
      • - CID: {{user_data.cid_user}} / - User: {{user_data.user_user}} / - Start time: {{user_data.start_time}} / - End time: {{user_data.end_time}} / +
        + +

        Submitted candidates

        +
        +
          + {% for user_data in user_exam_data %} +
        • + CID: {{user_data.cid_user}} / + User: {{user_data.user_user}} / + Start time: {{user_data.start_time}} / + End time: {{user_data.end_time}} / -
        • - {% endfor %} -
        +
      • + {% endfor %} +
      +
      {% endif %} +{% block js %} + +{% endblock js %} + + +{% block css %} + +{% endblock css %} + + + diff --git a/generic/urls.py b/generic/urls.py index 9c8ce04f..1d424a2a 100755 --- a/generic/urls.py +++ b/generic/urls.py @@ -266,5 +266,15 @@ def generic_exam_urls(generic_exam_view: GenericExamViews): generic_exam_view.exam_user_status, name="exam_user_status", ), + path( + "exam//user_status//cid", + generic_exam_view.exam_user_status_cid, + name="exam_user_status_cid", + ), + path( + "exam//user_status//user", + generic_exam_view.exam_user_status_user, + name="exam_user_status_user", + ), ] return urlpatterns diff --git a/generic/views.py b/generic/views.py index bde45181..d13e812f 100644 --- a/generic/views.py +++ b/generic/views.py @@ -999,14 +999,26 @@ class ExamViews(View, LoginRequiredMixin): return notes - def exam_user_status(self, request, pk): + def exam_user_status_cid(self, request, pk, cid): + return self.exam_user_status(request, pk, cid=cid) + + def exam_user_status_user(self, request, pk, user_id): + return self.exam_user_status(request, pk, user_id=user_id) + + def exam_user_status(self, request, pk, cid=None, user_id=None): + # TODO: add filtering by user / cid exam = get_object_or_404(self.Exam, pk=pk) # Restrict just to exam authors if request.user not in exam.author.all(): raise PermissionDenied - statuses = exam.exam_user_status.all() + if cid is not None: + statuses = exam.exam_user_status.filter(cid_user__cid=cid) + elif user_id is not None: + statuses = exam.exam_user_status.filter(user_user__id=user_id) + else: + statuses = exam.exam_user_status.all() return render(request, "exam_user_status.html", {"exam": exam, "statuses": statuses}) diff --git a/rad/views.py b/rad/views.py index d87ac5f7..1c139610 100644 --- a/rad/views.py +++ b/rad/views.py @@ -1,4 +1,5 @@ import secrets +from django.conf import settings from django_tables2 import SingleTableMixin from atlas.models import CaseCollection, CidReportAnswer @@ -743,4 +744,4 @@ def request_cid_details(request): cid_user.email_details() - return HttpResponse("Candidate details will be sent to the requested email (if it is found in the system).") + return HttpResponse(f"Candidate details will be sent to the requested email (if it is found in the system). If you have not received an email after a few minutes you may need to contact {settings.CONTACT_EMAIL}")