From 0d68b914bfcd348e15ea7c0a67cd754d3ac1300b Mon Sep 17 00:00:00 2001 From: Leonidas Spyropoulos <artafinde@gmail.com> Date: Tue, 18 May 2021 13:04:20 +0100 Subject: [PATCH] Conditionally apply SSOAccountId migration to support misaligned databases Closes: #34 Signed-off-by: Leonidas Spyropoulos <artafinde@gmail.com> --- ...6e1cd_add_sso_account_id_in_table_users.py | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/migrations/versions/ef39fcd6e1cd_add_sso_account_id_in_table_users.py b/migrations/versions/ef39fcd6e1cd_add_sso_account_id_in_table_users.py index d3b3693d4..2b257e9d8 100644 --- a/migrations/versions/ef39fcd6e1cd_add_sso_account_id_in_table_users.py +++ b/migrations/versions/ef39fcd6e1cd_add_sso_account_id_in_table_users.py @@ -5,9 +5,9 @@ Revises: f47cad5d6d03 Create Date: 2020-06-08 10:04:13.898617 """ -from alembic import op import sqlalchemy as sa - +from alembic import op +from sqlalchemy.engine.reflection import Inspector # revision identifiers, used by Alembic. revision = 'ef39fcd6e1cd' @@ -16,15 +16,20 @@ branch_labels = None depends_on = None +def table_has_column(table, column_name): + for element in Inspector.from_engine(op.get_bind()).get_columns(table): + if element.get('name') == column_name: + return True + return False + + def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('Users', sa.Column('SSOAccountID', sa.String(length=255), nullable=True)) - op.create_unique_constraint(None, 'Users', ['SSOAccountID']) - # ### end Alembic commands ### + if not table_has_column('Users', 'SSOAccountID'): + op.add_column('Users', sa.Column('SSOAccountID', sa.String(length=255), nullable=True)) + op.create_unique_constraint(None, 'Users', ['SSOAccountID']) def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_constraint('SSOAccountID', 'Users', type_='unique') - op.drop_column('Users', 'SSOAccountID') - # ### end Alembic commands ### + if table_has_column('Users', 'SSOAccountID'): + op.drop_constraint('SSOAccountID', 'Users', type_='unique') + op.drop_column('Users', 'SSOAccountID') -- GitLab