parent
aab321d11c
commit
d4855b9615
@ -0,0 +1,52 @@ |
||||
from flask import Blueprint |
||||
from flask import Blueprint, request, jsonify, current_app, g |
||||
from db.model import User, Category, Quiz, Course, Enrollment, QuizAttempt |
||||
from db.model import db |
||||
import uuid |
||||
from sqlalchemy import select, and_ |
||||
|
||||
quiz = Blueprint('quiz', __name__) |
||||
|
||||
|
||||
@quiz.route('/create', methods=['POST']) |
||||
def create_quiz(): |
||||
data: dict = request.form |
||||
creator_user: User = g.current_user |
||||
course_id: uuid.UUID = uuid.UUID(data.get('courseID')) |
||||
enrollment_data: Enrollment = db.session.execute(select(Enrollment).where(and_(Enrollment.courseID == course_id, Enrollment.userID == creator_user.id))).scalar() |
||||
if not enrollment_data: |
||||
return jsonify({'message': 'You are not enrolled in this class'}), 401 |
||||
|
||||
get_quiz_data :str = '{"questions":[{"question":"What is the capital of France?","options":["Paris","London","Berlin","Madrid"],"answer":"Paris"},{"question":"What is 2 + 2?","options":["3","4","5","6"],"answer":"4"}]}' |
||||
new_quiz = Quiz( |
||||
creatorUserID = creator_user.id, |
||||
courseID = course_id, |
||||
quizJson = get_quiz_data, |
||||
quiz_attempts = [] |
||||
) |
||||
db.session.add_all(new_quiz) |
||||
db.session.commit() |
||||
return jsonify({'message': 'Course was created successfully.'}), 200 |
||||
|
||||
@quiz.route('/attempt', methods=['POST']) |
||||
def attempt_quiz(): |
||||
data: dict = request.form |
||||
attempt_user: User = g.current_user |
||||
quiz_id: uuid.UUID = uuid.UUID(data.get('quizID')) |
||||
course_data: Enrollment = db.session.execute(select(Enrollment).where(and_(Enrollment.courseID == course_data, Enrollment.userID == attempt_user.id))).scalar() |
||||
if not course_data: |
||||
return jsonify({'message': 'You are not enrolled in this class'}), 401 |
||||
|
||||
answerKey: str = '{"questions":[{"question":"What is the capital of France?","options":["Paris","London","Berlin","Madrid"],"answer":"Paris"},{"question":"What is 2 + 2?","options":["3","4","5","6"],"answer":"4"}]}' |
||||
#function to calculate Score |
||||
score_value = 0 |
||||
|
||||
new_attempt = QuizAttempt( |
||||
userID = attempt_user, |
||||
quizID = quiz_id, |
||||
answerKey = answerKey, |
||||
score = score_value |
||||
) |
||||
db.session.add_all(new_attempt) |
||||
db.session.commit() |
||||
return jsonify({'message': 'Quiz was appended sucessfully'}), 200 |
Loading…
Reference in new issue