"""cleanup_objectives_metrics_sets Revision ID: d474e086de55 Revises: 50b5bb27d424 Create Date: 2020-11-18 14:19:24.860998 """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = 'd474e086de55' down_revision = '03391e33ea8b' branch_labels = None depends_on = None metrics_fields_data = [ { "id": 32, "name": "CP Video View", "type_id": 6, "format_id": 4, "objective_id": 16, "title": "Video View", "subtitle": "CP", "total_name": "Avg CP Video View", "description": "Cost per video view, defined by each platform" } ] objective_metrics_data = [ { "id": 110, "objective_id": 17, "metrics_field_id": 32, "index": 2 }, { "id": 94, "objective_id": 15, "metrics_field_id": 32, "index": 4 }, ] def get_table(bind, table_name: str): meta = sa.MetaData(bind=bind) meta.reflect() return meta.tables[table_name] def upgrade(): bind = op.get_bind() metrics_field_table = get_table(bind, "MetricsField") objective_metrics_table = get_table(bind, "ObjectiveMetricsField") op.bulk_insert(metrics_field_table, metrics_fields_data) op.bulk_insert(objective_metrics_table, objective_metrics_data) objective_to_delete = (6, 7, 8) # Listeners, Sales, Streams op.execute(objective_metrics_table.delete().where(objective_metrics_table.c.objective_id.in_(objective_to_delete))) objective_metrics_restore_data = [ { "id": 37, "objective_id": 8, "metrics_field_id": 16, "index": 0 }, { "id": 28, "objective_id": 7, "metrics_field_id": 16, "index": 0 }, { "id": 19, "objective_id": 6, "metrics_field_id": 16, "index": 0 }, { "id": 31, "objective_id": 7, "metrics_field_id": 12, "index": 3 }, { "id": 22, "objective_id": 6, "metrics_field_id": 12, "index": 3 }, { "id": 40, "objective_id": 8, "metrics_field_id": 12, "index": 3 }, { "id": 41, "objective_id": 8, "metrics_field_id": 13, "index": 4 }, { "id": 23, "objective_id": 6, "metrics_field_id": 13, "index": 4 }, { "id": 32, "objective_id": 7, "metrics_field_id": 13, "index": 4 }, { "id": 33, "objective_id": 7, "metrics_field_id": 14, "index": 5 }, { "id": 24, "objective_id": 6, "metrics_field_id": 14, "index": 5 }, { "id": 42, "objective_id": 8, "metrics_field_id": 14, "index": 5 }, { "id": 34, "objective_id": 7, "metrics_field_id": 15, "index": 6 }, { "id": 25, "objective_id": 6, "metrics_field_id": 15, "index": 6 }, { "id": 43, "objective_id": 8, "metrics_field_id": 15, "index": 6 }, { "id": 26, "objective_id": 6, "metrics_field_id": 49, "index": 7 }, { "id": 44, "objective_id": 8, "metrics_field_id": 49, "index": 7 }, { "id": 35, "objective_id": 7, "metrics_field_id": 49, "index": 7 }, { "id": 45, "objective_id": 8, "metrics_field_id": 50, "index": 8 }, { "id": 36, "objective_id": 7, "metrics_field_id": 50, "index": 8 }, { "id": 27, "objective_id": 6, "metrics_field_id": 50, "index": 8 } ] def downgrade(): bind = op.get_bind() objective_metrics_table = get_table(bind, "ObjectiveMetricsField") metrics_field_table = get_table(bind, "MetricsField") op.bulk_insert(objective_metrics_table, objective_metrics_restore_data) for field in metrics_fields_data: op.execute(metrics_field_table.delete().where(metrics_field_table.c.id == field["id"])) for item in objective_metrics_data: op.execute(objective_metrics_table.delete().where(metrics_field_table.c.id == item["id"]))