Skip to content
Snippets Groups Projects
Commit b845604c authored by Ruben Young On's avatar Ruben Young On
Browse files

MultipleChoiceOption is now a widget

parent 2458238e
No related branches found
No related tags found
1 merge request!11MultipleChoiceOption is a widget, /exams API call now returns checkbox data
Pipeline #17496 passed
""" empty message """ empty message
Revision ID: f97aa3c73453 Revision ID: e526e7b52673
Revises: 4204f4a83863 Revises: 4204f4a83863
""" """
...@@ -9,7 +9,7 @@ import sqlalchemy as sa ...@@ -9,7 +9,7 @@ import sqlalchemy as sa
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = 'f97aa3c73453' revision = 'e526e7b52673'
down_revision = '4204f4a83863' down_revision = '4204f4a83863'
branch_labels = None branch_labels = None
depends_on = None depends_on = None
...@@ -18,13 +18,13 @@ depends_on = None ...@@ -18,13 +18,13 @@ depends_on = None
def upgrade(): def upgrade():
op.create_table('mc_option', op.create_table('mc_option',
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
sa.Column('x', sa.Integer(), nullable=False),
sa.Column('y', sa.Integer(), nullable=False),
sa.Column('page', sa.Integer(), nullable=False), sa.Column('page', sa.Integer(), nullable=False),
sa.Column('label', sa.String(), nullable=True), sa.Column('label', sa.String(), nullable=True),
sa.Column('type', sa.String(length=20), nullable=True),
sa.Column('problem_id', sa.Integer(), nullable=False), sa.Column('problem_id', sa.Integer(), nullable=False),
sa.Column('feedback_id', sa.Integer(), nullable=True), sa.Column('feedback_id', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['feedback_id'], ['feedback_option.id'], ), sa.ForeignKeyConstraint(['feedback_id'], ['feedback_option.id'], ),
sa.ForeignKeyConstraint(['id'], ['widget.id'], ),
sa.ForeignKeyConstraint(['problem_id'], ['solution.id'], ), sa.ForeignKeyConstraint(['problem_id'], ['solution.id'], ),
sa.PrimaryKeyConstraint('id') sa.PrimaryKeyConstraint('id')
) )
......
...@@ -160,19 +160,23 @@ class Widget(db.Model): ...@@ -160,19 +160,23 @@ class Widget(db.Model):
} }
class MultipleChoiceOption(db.Model): class MultipleChoiceOption(Widget):
__tablename__ = 'mc_option' __tablename__ = 'mc_option'
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, ForeignKey('widget.id'), primary_key=True, autoincrement=True)
x = Column(Integer, nullable=False)
y = Column(Integer, nullable=False)
page = Column(Integer, nullable=False) page = Column(Integer, nullable=False)
label = Column(String, nullable=True) label = Column(String, nullable=True)
type = Column(String(20))
problem_id = Column(Integer, ForeignKey('solution.id'), nullable=False) problem_id = Column(Integer, ForeignKey('solution.id'), nullable=False)
feedback_id = Column(Integer, ForeignKey('feedback_option.id'), nullable=True) feedback_id = Column(Integer, ForeignKey('feedback_option.id'), nullable=True)
__mapper_args__ = {
'polymorphic_identity': 'widget',
'polymorphic_on': type
}
class ExamWidget(Widget): class ExamWidget(Widget):
__tablename__ = 'exam_widget' __tablename__ = 'exam_widget'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment