2026-02-04 16:50:33 +02:00

29 lines
766 B
Python

from typing import Dict, Tuple
from sqlalchemy.orm import Session
from app.models import Module, QuizQuestion, QuizChoice
def grade_quiz(db: Session, module: Module, answers: Dict[int, int]) -> Tuple[float, int, int]:
questions = (
db.query(QuizQuestion)
.filter(QuizQuestion.module_id == module.id)
.all()
)
if not questions:
return 0.0, 0, 0
correct = 0
total = len(questions)
for q in questions:
choice_id = answers.get(q.id)
if choice_id is None:
continue
choice = db.get(QuizChoice, choice_id)
if choice and choice.question_id == q.id and choice.is_correct:
correct += 1
score = (correct / total) * 100
return score, correct, total