# Generated by Django 3.0.6 on 2020-05-24 11:34

from django.apps.registry import Apps
from django.db import migrations
from django.db.backends.base.schema import BaseDatabaseSchemaEditor

from passbook.flows.models import FlowDesignation


def create_default_provider_authz_flow(
    apps: Apps, schema_editor: BaseDatabaseSchemaEditor
):
    Flow = apps.get_model("passbook_flows", "Flow")
    FlowStageBinding = apps.get_model("passbook_flows", "FlowStageBinding")

    ConsentStage = apps.get_model("passbook_stages_consent", "ConsentStage")

    db_alias = schema_editor.connection.alias

    # Empty flow for providers where no consent is needed
    Flow.objects.create(
        name="default-provider-authorization",
        slug="default-provider-authorization",
        designation=FlowDesignation.AUTHORIZATION,
    )

    # Flow with consent form to obtain user consent for authorization
    flow = Flow.objects.create(
        name="default-provider-authorization-consent",
        slug="default-provider-authorization-consent",
        designation=FlowDesignation.AUTHORIZATION,
    )
    stage = ConsentStage.objects.create(name="default-provider-authorization-consent")
    FlowStageBinding.objects.create(flow=flow, stage=stage, order=0)


class Migration(migrations.Migration):

    dependencies = [
        ("passbook_flows", "0004_source_flows"),
        ("passbook_stages_consent", "0001_initial"),
    ]

    operations = [migrations.RunPython(create_default_provider_authz_flow)]