diff --git a/migrations/versions/e9e9e6a47618_.py b/migrations/versions/e9e9e6a47618_.py new file mode 100644 index 0000000000000000000000000000000000000000..1fee0bf3ade5414d7d41286b15e1aa34d2d57d1b --- /dev/null +++ b/migrations/versions/e9e9e6a47618_.py @@ -0,0 +1,58 @@ +"""empty message + +Revision ID: e9e9e6a47618 +Revises: efdf2488a176 +Create Date: 2018-08-19 22:42:00.221743 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'e9e9e6a47618' +down_revision = 'efdf2488a176' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint('projects_groups_project_id_fkey', 'projects_groups', type_='foreignkey') + op.drop_constraint('projects_groups_group_id_fkey', 'projects_groups', type_='foreignkey') + op.create_foreign_key(None, 'projects_groups', 'project', ['project_id'], ['id'], ondelete='cascade') + op.create_foreign_key(None, 'projects_groups', 'group', ['group_id'], ['id'], ondelete='cascade') + op.drop_constraint('reviewItem_user_id_fkey', 'reviewItem', type_='foreignkey') + op.create_foreign_key(None, 'reviewItem', 'user', ['user_id'], ['id'], ondelete='cascade') + op.drop_constraint('submission_user_id_fkey', 'submission', type_='foreignkey') + op.create_foreign_key(None, 'submission', 'user', ['user_id'], ['id'], ondelete='cascade') + op.drop_constraint('users_groups_user_id_fkey', 'users_groups', type_='foreignkey') + op.drop_constraint('users_groups_group_id_fkey', 'users_groups', type_='foreignkey') + op.create_foreign_key(None, 'users_groups', 'user', ['user_id'], ['id'], ondelete='cascade') + op.create_foreign_key(None, 'users_groups', 'group', ['group_id'], ['id'], ondelete='cascade') + op.drop_constraint('users_roles_user_id_fkey', 'users_roles', type_='foreignkey') + op.drop_constraint('users_roles_role_id_fkey', 'users_roles', type_='foreignkey') + op.create_foreign_key(None, 'users_roles', 'user', ['user_id'], ['id'], ondelete='cascade') + op.create_foreign_key(None, 'users_roles', 'role', ['role_id'], ['id'], ondelete='cascade') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, 'users_roles', type_='foreignkey') + op.drop_constraint(None, 'users_roles', type_='foreignkey') + op.create_foreign_key('users_roles_role_id_fkey', 'users_roles', 'role', ['role_id'], ['id']) + op.create_foreign_key('users_roles_user_id_fkey', 'users_roles', 'user', ['user_id'], ['id']) + op.drop_constraint(None, 'users_groups', type_='foreignkey') + op.drop_constraint(None, 'users_groups', type_='foreignkey') + op.create_foreign_key('users_groups_group_id_fkey', 'users_groups', 'group', ['group_id'], ['id']) + op.create_foreign_key('users_groups_user_id_fkey', 'users_groups', 'user', ['user_id'], ['id']) + op.drop_constraint(None, 'submission', type_='foreignkey') + op.create_foreign_key('submission_user_id_fkey', 'submission', 'user', ['user_id'], ['id']) + op.drop_constraint(None, 'reviewItem', type_='foreignkey') + op.create_foreign_key('reviewItem_user_id_fkey', 'reviewItem', 'user', ['user_id'], ['id']) + op.drop_constraint(None, 'projects_groups', type_='foreignkey') + op.drop_constraint(None, 'projects_groups', type_='foreignkey') + op.create_foreign_key('projects_groups_group_id_fkey', 'projects_groups', 'group', ['group_id'], ['id']) + op.create_foreign_key('projects_groups_project_id_fkey', 'projects_groups', 'project', ['project_id'], ['id']) + # ### end Alembic commands ### diff --git a/portal/database/models.py b/portal/database/models.py index f494fa8efc14e94138a3961dfa23159d2d112fcf..2c8a5f02a3e4c3f6aaba57d182e0bfb7fc59e7e8 100644 --- a/portal/database/models.py +++ b/portal/database/models.py @@ -803,7 +803,7 @@ class Submission(db.Model, EntityBase): note = db.Column(db.Text) user_id = db.Column(db.String(36), db.ForeignKey( - 'user.id'), nullable=False) + 'user.id', ondelete='cascade'), nullable=False) user = db.relationship("User", back_populates="submissions", uselist=False) project_id = db.Column(db.String(36), db.ForeignKey( 'project.id', ondelete='cascade'), nullable=False) @@ -890,7 +890,7 @@ class ReviewItem(db.Model, EntityBase): 'review.id', ondelete='cascade'), nullable=False) review = db.relationship("Review", uselist=False, back_populates="review_items") - user_id = db.Column(db.String(36), db.ForeignKey('user.id')) + user_id = db.Column(db.String(36), db.ForeignKey('user.id', ondelete='cascade')) user = db.relationship("User", uselist=False, back_populates="review_items") # the review item's author content = db.Column(db.Text) @@ -976,18 +976,18 @@ def receive_set(**kw): # Associations - must come after definitions of the affected classes users_groups = db.Table("users_groups", db.Model.metadata, db.Column("user_id", db.String(36), - db.ForeignKey('user.id')), - db.Column("group_id", db.String(36), db.ForeignKey('group.id'))) + db.ForeignKey('user.id', ondelete='cascade')), + db.Column("group_id", db.String(36), db.ForeignKey('group.id', ondelete='cascade'))) users_roles = db.Table("users_roles", db.Model.metadata, db.Column("user_id", db.String(36), - db.ForeignKey('user.id')), - db.Column("role_id", db.String(36), db.ForeignKey('role.id'))) + db.ForeignKey('user.id', ondelete='cascade')), + db.Column("role_id", db.String(36), db.ForeignKey('role.id', ondelete='cascade'))) projects_groups = db.Table("projects_groups", db.Model.metadata, db.Column("project_id", db.String(36), - db.ForeignKey('project.id')), - db.Column("group_id", db.String(36), db.ForeignKey('group.id'))) + db.ForeignKey('project.id', ondelete='cascade')), + db.Column("group_id", db.String(36), db.ForeignKey('group.id', ondelete='cascade'))) User.roles = db.relationship("Role", secondary="users_roles") User.groups = db.relationship("Group", secondary="users_groups")