Beispiel #1
0
def get_exam_performance(user_role: Role, exam_id: str):
    is_authorized(user_role, "get_exam_performance")

    exam = Exam.get(id=exam_id)
    if not exam:
        raise HTTPException(status_code=status.HTTP_404_NOT_FOUND,
                            detail="Exam not found : id: {}".format(exam_id))

    results = select(p for p in Performance if p.exam == exam)[:]

    performance = []
    for result in results:
        performance.append(result.to_dict())

    return performance
Beispiel #2
0
def add_participant(user_id: UUID, user_role: Role,
                    participant: schemas.Participant):
    is_authorized(user_role, "add_participant")

    exam_id = participant.exam_id
    learner_id = participant.user_id

    exam = Exam.get(id=exam_id, user=User[user_id])
    if not exam:
        raise HTTPException(status_code=status.HTTP_404_NOT_FOUND,
                            detail="Exam not found : id: {}".format(exam_id))

    learner = User.get(id=learner_id, role=Role.learner)
    if not learner:
        raise HTTPException(
            status_code=status.HTTP_404_NOT_FOUND,
            detail="Learner not found : id: {}".format(learner_id))

    participant = Participant(exam=exam, user=learner)

    return participant.to_dict()
Beispiel #3
0
def create_question(user_id: UUID, user_role: Role,
                    question_in: schemas.Question):
    is_authorized(user_role, "create_question")

    exam = Exam.get(id=question_in.exam_id)
    if not exam:
        raise HTTPException(status_code=status.HTTP_404_NOT_FOUND,
                            detail="Exam not found : id: {}".format(
                                question_in.exam_id))

    question = dict(text=question_in.text, marks=question_in.marks, exam=exam)

    if question_in.multi_choice:
        question["multi_choice"] = question_in.multi_choice

    if question_in.answer:
        question["answer"] = question_in.answer

    counter = select(max(q.number) for q in Question if q.exam == exam)[:][0]
    if not counter:
        counter = 0
    question["number"] = counter + 1

    return Question(**question).to_dict()
 def increase_mistake(self, exam_id):
     exam = Exam.get(id=exam_id)
     exam.mistake += 1
     commit()
     return exam