Add CidUserExam management features: forms, views, and templates for exam records
This commit is contained in:
@@ -110,6 +110,26 @@ from .models import (
|
||||
)
|
||||
|
||||
|
||||
@user_is_cid_user_manager
|
||||
def cid_user_exam_partial(request, app_name: str, exam_id: int, cid: int):
|
||||
"""Return an HTMX partial showing details for a CidUserExam record.
|
||||
|
||||
Matches by content_type app_label and object_id (exam id), and cid value.
|
||||
"""
|
||||
# Find the matching CidUserExam
|
||||
try:
|
||||
cux = CidUserExam.objects.select_related("cid_user", "user_user", "content_type").filter(
|
||||
content_type__app_label=app_name, object_id=exam_id, cid_user__cid=cid
|
||||
).first()
|
||||
except Exception:
|
||||
cux = None
|
||||
|
||||
if not cux:
|
||||
return HttpResponse("No record found", status=404)
|
||||
|
||||
return render(request, "generic/partials/ciduserexam_detail_partial.html", {"cid_user_exam": cux})
|
||||
|
||||
|
||||
from rapids.models import (
|
||||
Rapid as RapidQuestion,
|
||||
ExamQuestionDetail as RapidsExamQuestionDetail,
|
||||
@@ -5295,6 +5315,8 @@ class CidUserUpdate(CidManagerRequiredMixin, UpdateView):
|
||||
|
||||
|
||||
class CidUserExamUpdate(CidManagerRequiredMixin, UpdateView):
|
||||
# This view edits the CidUser (which stores which exams the CID is registered for).
|
||||
# Keep model as `CidUser` so existing URL `update_cid_exams` continues to work.
|
||||
model = CidUser
|
||||
form_class = CidUserExamForm
|
||||
template_name = "generic/ciduserexam_form.html"
|
||||
@@ -5316,6 +5338,22 @@ class CidUserGroupCreate(RevisionMixin, CidManagerRequiredMixin, CreateView):
|
||||
form_class = CidUserGroupForm
|
||||
|
||||
|
||||
class CidUserExamRecordUpdate(CidManagerRequiredMixin, UpdateView):
|
||||
"""Update a CidUserExam record (individual exam record for a CID/user).
|
||||
|
||||
Separate from `CidUserExamUpdate` which edits a `CidUser`'s exam memberships.
|
||||
"""
|
||||
model = CidUserExam
|
||||
form_class = None
|
||||
template_name = "generic/ciduserexam_record_form.html"
|
||||
|
||||
def get_form_class(self):
|
||||
# import locally to avoid circular imports at module import time
|
||||
from .forms import CidUserExamRecordForm
|
||||
|
||||
return CidUserExamRecordForm
|
||||
|
||||
|
||||
class CidUserGroupUpdate(RevisionMixin, CidManagerRequiredMixin, UpdateView):
|
||||
model = CidUserGroup
|
||||
form_class = CidUserGroupForm
|
||||
|
||||
Reference in New Issue
Block a user