49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
# 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_authorization_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 consent is implicitly given
|
|
Flow.objects.using(db_alias).update_or_create(
|
|
slug="default-provider-authorization-implicit-consent",
|
|
designation=FlowDesignation.AUTHORIZATION,
|
|
defaults={"name": "Authorize Application"},
|
|
)
|
|
|
|
# Flow with consent form to obtain explicit user consent
|
|
flow, _ = Flow.objects.using(db_alias).update_or_create(
|
|
slug="default-provider-authorization-explicit-consent",
|
|
designation=FlowDesignation.AUTHORIZATION,
|
|
defaults={"name": "Authorize Application"},
|
|
)
|
|
stage, _ = ConsentStage.objects.using(db_alias).update_or_create(
|
|
name="default-provider-authorization-consent"
|
|
)
|
|
FlowStageBinding.objects.using(db_alias).update_or_create(
|
|
target=flow, stage=stage, defaults={"order": 0}
|
|
)
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
("passbook_flows", "0009_source_flows"),
|
|
("passbook_stages_consent", "0001_initial"),
|
|
]
|
|
|
|
operations = [migrations.RunPython(create_default_provider_authorization_flow)]
|