From 364273f1f12b341283fcb426865b8ae16f1c505e Mon Sep 17 00:00:00 2001 From: Kevin Chung Date: Wed, 6 May 2020 12:46:51 -0400 Subject: [PATCH] Add cascading delete constraint to DynamicChallenge --- CTFd/plugins/dynamic_challenges/__init__.py | 4 ++- ...8807ea_add_cascading_delete_to_dynamic_.py | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 migrations/versions/b37fb68807ea_add_cascading_delete_to_dynamic_.py diff --git a/CTFd/plugins/dynamic_challenges/__init__.py b/CTFd/plugins/dynamic_challenges/__init__.py index f5edceb..b02af07 100644 --- a/CTFd/plugins/dynamic_challenges/__init__.py +++ b/CTFd/plugins/dynamic_challenges/__init__.py @@ -239,7 +239,9 @@ class DynamicValueChallenge(BaseChallenge): class DynamicChallenge(Challenges): __mapper_args__ = {"polymorphic_identity": "dynamic"} - id = db.Column(None, db.ForeignKey("challenges.id"), primary_key=True) + id = db.Column( + None, db.ForeignKey("challenges.id", ondelete="CASCADE"), primary_key=True + ) initial = db.Column(db.Integer, default=0) minimum = db.Column(db.Integer, default=0) decay = db.Column(db.Integer, default=0) diff --git a/migrations/versions/b37fb68807ea_add_cascading_delete_to_dynamic_.py b/migrations/versions/b37fb68807ea_add_cascading_delete_to_dynamic_.py new file mode 100644 index 0000000..aaf6514 --- /dev/null +++ b/migrations/versions/b37fb68807ea_add_cascading_delete_to_dynamic_.py @@ -0,0 +1,29 @@ +"""Add cascading delete to dynamic challenges + +Revision ID: b37fb68807ea +Revises: 1093835a1051 +Create Date: 2020-05-06 12:21:39.373983 + +""" +from alembic import op + + +# revision identifiers, used by Alembic. +revision = 'b37fb68807ea' +down_revision = '1093835a1051' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, 'dynamic_challenge', type_='foreignkey') + op.create_foreign_key(None, 'dynamic_challenge', 'challenges', ['id'], ['id'], ondelete='CASCADE') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, 'dynamic_challenge', type_='foreignkey') + op.create_foreign_key(None, 'dynamic_challenge', 'challenges', ['id'], ['id']) + # ### end Alembic commands ###