Spaces:
Build error
Build error
from typing import TYPE_CHECKING | |
from sqlalchemy import ( | |
Column, | |
Integer, | |
ForeignKey, | |
String, | |
DateTime, | |
Boolean, | |
ARRAY, | |
) | |
import enum | |
from sqlalchemy.orm import relationship | |
from sqlalchemy.ext.hybrid import hybrid_property | |
from sqlalchemy.sql.sqltypes import JSON | |
from .association_tables import ( | |
group_quiz_association_table, | |
instructor_quiz_association_table, | |
) | |
from core.db import Base | |
class Quiz(Base): | |
id = Column(Integer, primary_key=True) | |
end_time = Column(DateTime) | |
start_time = Column(DateTime) | |
title = Column(String, nullable=True) | |
description = Column(String, nullable=True) | |
is_randomized = Column(Boolean, default=False) | |
display_individual = Column(Boolean, default=False) | |
group = relationship( | |
"Group", secondary=group_quiz_association_table, backref="quiz" | |
) | |
instructor = relationship( | |
"User", secondary=instructor_quiz_association_table, backref="quiz" | |
) | |
total_marks = Column(Integer, default=0) | |
course_id = Column(Integer, ForeignKey("course.id", ondelete="cascade")) | |
course = relationship("Course", backref="quiz") | |
__tablename__ = "quiz" # noqa | |
class QuizQuestion(Base): | |
id = Column(Integer, primary_key=True) | |
question_text = Column(String, nullable=True) | |
question_image = Column(ARRAY(String), nullable=True) | |
# if IMAGE_OPTIONS in combination with option_image is present then, we show all the image in option_image, and then show all the options present in options | |
options = Column(JSON, nullable=False) | |
marks = Column(Integer, default=0) | |
# if IMAGE_Options present and answer == 0, then check answer_image | |
answer = Column(ARRAY(Integer), nullable=True) | |
quiz_id = Column(Integer, ForeignKey("quiz.id", ondelete="cascade")) | |
quiz = relationship("Quiz", backref="question") | |
__tablename__ = "quiz_question" # noqa | |
def multiple(self): | |
if len(self.answer) > 1: | |
return True | |
else: | |
return False | |