changes in quiz

manzilcheck
PANDACUSHION 6 months ago
parent aab321d11c
commit d4855b9615
  1. 1
      backend/blueprints/profile/__init__.py
  2. 52
      backend/blueprints/quiz/__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

@ -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…
Cancel
Save