refactor: improve score distribution display and enhance HTMX handling in exam views

This commit is contained in:
Ross
2026-07-13 10:15:42 +01:00
parent 3a3ec75b1d
commit 66cca1a512
3 changed files with 22 additions and 10 deletions
@@ -63,9 +63,8 @@
{% if plot %}
<div class="card bg-dark text-light border-secondary mb-4 shadow-sm">
<div class="card-header border-secondary d-flex justify-content-between align-items-center">
<div class="card-header border-secondary">
<h6 class="mb-0">Distribution of Scores</h6>
<span class="badge bg-secondary">low scores (&lt;20% max) excluded from statistics</span>
</div>
<div class="card-body p-0">
<div id="stats-plot-wrapper">
+6 -8
View File
@@ -4066,10 +4066,6 @@ class ExamViews(View, LoginRequiredMixin):
pass_rate = 0.0
if len(user_scores_list) >= 1:
lower_score_bound = max_score / 5
bounded_scores = [i for i in user_scores_list if i > lower_score_bound]
if bounded_scores:
user_scores_list = bounded_scores
mean = round(statistics.mean(user_scores_list), 2)
median = round(statistics.median(user_scores_list), 2)
@@ -4248,12 +4244,14 @@ class ExamViews(View, LoginRequiredMixin):
exam.save()
from django.urls import reverse
from django.http import HttpResponseRedirect
url = reverse(f"{self.app_name}:exam_scores_all", kwargs={"pk": pk})
response = HttpResponseRedirect(url)
if request.htmx:
response["HX-Redirect"] = url
return response
# Return 200 OK with HX-Redirect header to trigger client-side redirect in HTMX
return HttpResponse("", headers={"HX-Redirect": url})
# Standard non-HTMX redirect
from django.http import HttpResponseRedirect
return HttpResponseRedirect(url)
def toggle_candidate_stats_exclusion(self, request, pk):
exam = get_object_or_404(self.Exam, pk=pk)
+15
View File
@@ -417,6 +417,21 @@ CHANNEL_LAYERS = {
},
}
def show_toolbar(request):
if request.headers.get("HX-Request") or getattr(request, "htmx", False):
return False
if request.headers.get("x-requested-with") == "XMLHttpRequest":
return False
try:
from debug_toolbar.middleware import show_toolbar as default_show_toolbar
return default_show_toolbar(request)
except ImportError:
return False
DEBUG_TOOLBAR_CONFIG = {
"SHOW_TOOLBAR_CALLBACK": "rad.settings.show_toolbar",
}
try:
from .settings_local import *
except ImportError as e: