def project_init_flow()

in src/dispatch/project/flows.py [0:0]


def project_init_flow(*, project_id: int, organization_slug: str, db_session=None):
    """Initializes a new project with default settings."""
    project = get(db_session=db_session, project_id=project_id)

    # Add all plugins in disabled mode
    plugins = plugin_service.get_all(db_session=db_session)
    for plugin in plugins:
        plugin_instance_in = PluginInstanceCreate(
            project=project, plugin=plugin, configuration={}, enabled=False
        )
        plugin_service.create_instance(db_session=db_session, plugin_instance_in=plugin_instance_in)

    # Create default incident type
    incident_type_in = IncidentTypeCreate(
        name=default_incident_type["name"],
        description=default_incident_type["description"],
        visibility=default_incident_type["visibility"],
        exclude_from_metrics=default_incident_type["exclude_from_metrics"],
        default=default_incident_type["default"],
        enabled=default_incident_type["enabled"],
        project=project,
    )
    incident_type = incident_type_service.create(
        db_session=db_session, incident_type_in=incident_type_in
    )

    # Create default incident priorities
    for priority in default_incident_priorities:
        incident_priority_in = IncidentPriorityCreate(
            name=priority["name"],
            description=priority["description"],
            page_commander=priority["page_commander"],
            tactical_report_reminder=priority["tactical_report_reminder"],
            executive_report_reminder=priority["executive_report_reminder"],
            project=project,
            default=priority["default"],
            enabled=priority["enabled"],
            view_order=priority["view_order"],
            color=priority["color"],
        )
        incident_priority_service.create(
            db_session=db_session, incident_priority_in=incident_priority_in
        )

    # Create default incident severities
    for severity in default_incident_severities:
        incident_severity_in = IncidentSeverityCreate(
            name=severity["name"],
            description=severity["description"],
            project=project,
            default=severity["default"],
            enabled=severity["enabled"],
            view_order=severity["view_order"],
            color=severity["color"],
        )
        incident_severity_service.create(
            db_session=db_session, incident_severity_in=incident_severity_in
        )

    # Create default incident response cost
    incident_cost_type_in = IncidentCostTypeCreate(
        name=default_incident_cost_type["name"],
        description=default_incident_cost_type["description"],
        category=default_incident_cost_type["category"],
        details=default_incident_cost_type["details"],
        default=default_incident_cost_type["default"],
        editable=default_incident_cost_type["editable"],
        project=project,
    )
    incident_cost_type_service.create(
        db_session=db_session, incident_cost_type_in=incident_cost_type_in
    )

    # Create default case response cost
    case_cost_type_service.get_or_create_response_cost_type(
        db_session=db_session, project_id=project.id, model_type=CostModelType.classic
    )
    case_cost_type_service.get_or_create_response_cost_type(
        db_session=db_session, project_id=project.id, model_type=CostModelType.new
    )

    # Create default case type
    case_type_in = CaseTypeCreate(
        name=default_case_type["name"],
        description=default_case_type["description"],
        visibility=default_case_type["visibility"],
        exclude_from_metrics=default_case_type["exclude_from_metrics"],
        default=default_case_type["default"],
        enabled=default_case_type["enabled"],
        project=project,
    )
    case_type = case_type_service.create(db_session=db_session, case_type_in=case_type_in)

    # Map case type with incident type
    case_type.incident_type = incident_type
    db_session.add(case_type)
    db_session.commit()

    # Create default case priorities
    for priority in default_case_priorities:
        case_priority_in = CasePriorityCreate(
            name=priority["name"],
            description=priority["description"],
            page_assignee=priority["page_assignee"],
            project=project,
            default=priority["default"],
            enabled=priority["enabled"],
            view_order=priority["view_order"],
            color=priority["color"],
        )
        case_priority_service.create(db_session=db_session, case_priority_in=case_priority_in)

    # Create default case severities
    for severity in default_case_severities:
        case_severity_in = CaseSeverityCreate(
            name=severity["name"],
            description=severity["description"],
            project=project,
            default=severity["default"],
            enabled=severity["enabled"],
            view_order=severity["view_order"],
            color=severity["color"],
        )
        case_severity_service.create(db_session=db_session, case_severity_in=case_severity_in)