diff --git a/lms/migrations/versions/2a45f5cb8e25_add_assignment_due_date_and_checkpoint_enabled.py b/lms/migrations/versions/2a45f5cb8e25_add_assignment_due_date_and_checkpoint_enabled.py new file mode 100644 index 0000000000..985aabf3d8 --- /dev/null +++ b/lms/migrations/versions/2a45f5cb8e25_add_assignment_due_date_and_checkpoint_enabled.py @@ -0,0 +1,29 @@ +"""Add assignment due_date and checkpoint_enabled columns. + +Revision ID: 2a45f5cb8e25 +Revises: b91594c0e379 +""" + +import sqlalchemy as sa +from alembic import op + +revision = "2a45f5cb8e25" +down_revision = "b91594c0e379" + + +def upgrade() -> None: + op.add_column("assignment", sa.Column("due_date", sa.DateTime(), nullable=True)) + op.add_column( + "assignment", + sa.Column( + "checkpoint_enabled", + sa.Boolean(), + server_default=sa.false(), + nullable=False, + ), + ) + + +def downgrade() -> None: + op.drop_column("assignment", "checkpoint_enabled") + op.drop_column("assignment", "due_date") diff --git a/lms/models/assignment.py b/lms/models/assignment.py index f4e758ddaa..5ea276950b 100644 --- a/lms/models/assignment.py +++ b/lms/models/assignment.py @@ -1,3 +1,4 @@ +from datetime import datetime from enum import StrEnum import sqlalchemy as sa @@ -146,6 +147,17 @@ class Assignment(CreatedUpdatedMixin, Base): ) auto_grading_config = relationship("AutoGradingConfig") + due_date: Mapped[datetime | None] = mapped_column() + """The due date for this assignment; NULL if not set.""" + + checkpoint_enabled: Mapped[bool] = mapped_column( + sa.Boolean(), + default=False, + server_default=sa.sql.expression.false(), + nullable=False, + ) + """Whether this assignment has at least one checkpoint enabled.""" + __table_args__ = ( sa.UniqueConstraint("resource_link_id", "tool_consumer_instance_guid"), sa.Index( diff --git a/tests/factories/assignment.py b/tests/factories/assignment.py index fde3efdc94..83e242ec4e 100644 --- a/tests/factories/assignment.py +++ b/tests/factories/assignment.py @@ -12,6 +12,7 @@ document_url=Faker("uri"), extra={}, title=Sequence(lambda n: f"Assignment {n}"), + checkpoint_enabled=False, )