in src/dispatch/database/revisions/tenant/versions/2021-08-09_b73416df5744.py [0:0]
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table(
"incident_role",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("role", sa.String(), nullable=True),
sa.Column("enabled", sa.Boolean(), nullable=True),
sa.Column("order", sa.Integer(), nullable=True),
sa.Column("service_id", sa.Integer(), nullable=True),
sa.Column("individual_id", sa.Integer(), nullable=True),
sa.Column("project_id", sa.Integer(), nullable=True),
sa.Column("updated_at", sa.DateTime(), nullable=True),
sa.Column("created_at", sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(
["individual_id"],
["individual_contact.id"],
),
sa.ForeignKeyConstraint(["project_id"], ["project.id"], ondelete="CASCADE"),
sa.ForeignKeyConstraint(
["service_id"],
["service.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"incident_role_incident_priority",
sa.Column("incident_role_id", sa.Integer(), nullable=False),
sa.Column("incident_priority_id", sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(
["incident_priority_id"],
["incident_priority.id"],
),
sa.ForeignKeyConstraint(
["incident_role_id"],
["incident_role.id"],
),
sa.PrimaryKeyConstraint("incident_role_id", "incident_priority_id"),
)
op.create_table(
"incident_role_tag",
sa.Column("incident_role_id", sa.Integer(), nullable=False),
sa.Column("tag_id", sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(
["incident_role_id"],
["incident_role.id"],
),
sa.ForeignKeyConstraint(
["tag_id"],
["tag.id"],
),
sa.PrimaryKeyConstraint("incident_role_id", "tag_id"),
)
op.create_table(
"incident_role_incident_type",
sa.Column("incident_role_id", sa.Integer(), nullable=False),
sa.Column("incident_type_id", sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(
["incident_role_id"],
["incident_role.id"],
),
sa.ForeignKeyConstraint(
["incident_type_id"],
["incident_type.id"],
),
sa.PrimaryKeyConstraint("incident_role_id", "incident_type_id"),
)
# migrate old incident type mappings to incident roles
bind = op.get_bind()
session = Session(bind=bind)
roles = defaultdict(list)
for i_type in session.query(IncidentType).all():
# group by types
if i_type.commander_service_id:
roles[(i_type.project_id, i_type.commander_service_id, "Incident Commander")].append(
i_type
)
if i_type.liaison_service_id:
roles[(i_type.project_id, i_type.liaison_service_id, "Liaison")].append(i_type)
incident_priorities = session.query(IncidentPriority).all()
for k, v in roles.items():
project_id, service_id, role = k
session.add(
IncidentRole(
project_id=project_id,
incident_types=v,
incident_priorities=incident_priorities,
role=role,
service_id=service_id,
)
)
session.commit()