migarate exam_user_status

This commit is contained in:
Ross
2024-07-22 17:25:12 +01:00
parent ca4c8d31b9
commit aeaf0fcb2e
7 changed files with 93 additions and 46 deletions
+15 -7
View File
@@ -3,7 +3,7 @@ from typing import List
from django.shortcuts import get_object_or_404
from ninja import ModelSchema, Router
from generic.models import CidUser, ExamUserStatus
from generic.models import CidUser, CidUserExam, ExamUserStatus
from .models import AnatomyQuestion as Question, Exam
from django.core.exceptions import PermissionDenied
@@ -29,6 +29,13 @@ class UserUserSchema(ModelSchema):
model = get_user_model()
model_fields = ["id", "email"]
class CidUserExamSchema(ModelSchema):
cid_user : CidUserSchema | None
user_user : UserUserSchema | None
class Config:
model = CidUserExam
model_fields = ["id"]
class ExamStatusSchema(ModelSchema):
class Config:
model = ExamUserStatus
@@ -36,8 +43,9 @@ class ExamStatusSchema(ModelSchema):
class ExamUserStatusSchema(ModelSchema):
cid_user : CidUserSchema | None
user_user : UserUserSchema | None
#cid_user : CidUserSchema | None
#user_user : UserUserSchema | None
cid_user_exam : CidUserExamSchema | None
class Config:
model = ExamUserStatus
model_fields = ["id", "datetime", "status", "extra"]
@@ -90,8 +98,8 @@ def get_exam_user_status_all(request, exam_id: int, latest:bool=True):
results = exam.exam_user_status.all()
if latest:
cid_users = exam.exam_user_status.filter(cid_user__isnull=False).order_by("cid_user", "-datetime").distinct("cid_user")
user_users = exam.exam_user_status.filter(user_user__isnull=False).order_by("user_user", "-datetime").distinct("user_user")
cid_users = exam.exam_user_status.filter(cid_user_exam__cid_user__isnull=False).order_by("cid_user_exam", "-datetime")#.distinct("cid_user")
user_users = exam.exam_user_status.filter(cid_user_exam__user_user__isnull=False).order_by("cid_user_exam", "-datetime")#.distinct("user_user")
results = list(cid_users)
results.extend(list(user_users))
@@ -107,7 +115,7 @@ def get_exam_user_status_cid_user(request, exam_id: int, cid: int):
print(exam_id, cid)
return exam.exam_user_status.filter(cid_user__cid=cid)
return exam.exam_user_status.filter(cid_user_exam__cid_user__cid=cid)
@router.get('/exam/{exam_id}/user_status/{user_id}/user', response=List[ExamStatusSchema])
def get_exam_user_status_user_user(request, exam_id: int, user_id: int):
@@ -115,4 +123,4 @@ def get_exam_user_status_user_user(request, exam_id: int, user_id: int):
if not exam.check_user_can_edit(request.user):
raise HttpError(HTTPStatus.UNAUTHORIZED,"Exam author required")
return exam.exam_user_status.filter(user_user=user_id)
return exam.exam_user_status.filter(cid_user_exam__user_user=user_id)