From d4855b96159d40c23a36832aaa1712a794a9847d Mon Sep 17 00:00:00 2001 From: PANDACUSHION Date: Sat, 11 Jan 2025 23:52:34 +0545 Subject: [PATCH] changes in quiz --- backend/blueprints/profile/__init__.py | 1 - backend/blueprints/quiz/__init__.py | 52 ++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 backend/blueprints/quiz/__init__.py diff --git a/backend/blueprints/profile/__init__.py b/backend/blueprints/profile/__init__.py index 47717ee..5969246 100644 --- a/backend/blueprints/profile/__init__.py +++ b/backend/blueprints/profile/__init__.py @@ -132,7 +132,6 @@ def get_profile(): "pfp_filename": current_user.pfpFilename, "profile_url":profile_url } - return jsonify({"profile": profile_data}), 200 except Exception as e: return jsonify({"error": f"Failed to fetch profile. Error: {str(e)}"}), 500 diff --git a/backend/blueprints/quiz/__init__.py b/backend/blueprints/quiz/__init__.py new file mode 100644 index 0000000..569e0f4 --- /dev/null +++ b/backend/blueprints/quiz/__init__.py @@ -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