authentik.stages.authenticator_duo.migrations.0001_initial

 1# Generated by Django 3.2.3 on 2021-05-23 20:28
 2
 3import django.db.models.deletion
 4from django.conf import settings
 5from django.db import migrations, models
 6
 7
 8class Migration(migrations.Migration):
 9    initial = True
10
11    dependencies = [
12        ("authentik_flows", "0018_oob_flows"),
13        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
14    ]
15
16    operations = [
17        migrations.CreateModel(
18            name="AuthenticatorDuoStage",
19            fields=[
20                (
21                    "stage_ptr",
22                    models.OneToOneField(
23                        auto_created=True,
24                        on_delete=django.db.models.deletion.CASCADE,
25                        parent_link=True,
26                        primary_key=True,
27                        serialize=False,
28                        to="authentik_flows.stage",
29                    ),
30                ),
31                ("client_id", models.TextField()),
32                ("client_secret", models.TextField()),
33                ("api_hostname", models.TextField()),
34                (
35                    "configure_flow",
36                    models.ForeignKey(
37                        blank=True,
38                        help_text=(
39                            "Flow used by an authenticated user to configure this Stage. If empty,"
40                            " user will not be able to configure this stage."
41                        ),
42                        null=True,
43                        on_delete=django.db.models.deletion.SET_NULL,
44                        to="authentik_flows.flow",
45                    ),
46                ),
47            ],
48            options={
49                "verbose_name": "Duo Authenticator Setup Stage",
50                "verbose_name_plural": "Duo Authenticator Setup Stages",
51            },
52            bases=("authentik_flows.stage", models.Model),
53        ),
54        migrations.CreateModel(
55            name="DuoDevice",
56            fields=[
57                (
58                    "id",
59                    models.AutoField(
60                        auto_created=True,
61                        primary_key=True,
62                        serialize=False,
63                        verbose_name="ID",
64                    ),
65                ),
66                (
67                    "name",
68                    models.CharField(
69                        help_text="The human-readable name of this device.",
70                        max_length=64,
71                    ),
72                ),
73                (
74                    "confirmed",
75                    models.BooleanField(default=True, help_text="Is this device ready for use?"),
76                ),
77                ("duo_user_id", models.TextField()),
78                (
79                    "stage",
80                    models.ForeignKey(
81                        on_delete=django.db.models.deletion.CASCADE,
82                        to="authentik_stages_authenticator_duo.authenticatorduostage",
83                    ),
84                ),
85                (
86                    "user",
87                    models.ForeignKey(
88                        on_delete=django.db.models.deletion.CASCADE,
89                        to=settings.AUTH_USER_MODEL,
90                    ),
91                ),
92            ],
93            options={
94                "verbose_name": "Duo Device",
95                "verbose_name_plural": "Duo Devices",
96            },
97        ),
98    ]
class Migration(django.db.migrations.migration.Migration):
 9class Migration(migrations.Migration):
10    initial = True
11
12    dependencies = [
13        ("authentik_flows", "0018_oob_flows"),
14        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
15    ]
16
17    operations = [
18        migrations.CreateModel(
19            name="AuthenticatorDuoStage",
20            fields=[
21                (
22                    "stage_ptr",
23                    models.OneToOneField(
24                        auto_created=True,
25                        on_delete=django.db.models.deletion.CASCADE,
26                        parent_link=True,
27                        primary_key=True,
28                        serialize=False,
29                        to="authentik_flows.stage",
30                    ),
31                ),
32                ("client_id", models.TextField()),
33                ("client_secret", models.TextField()),
34                ("api_hostname", models.TextField()),
35                (
36                    "configure_flow",
37                    models.ForeignKey(
38                        blank=True,
39                        help_text=(
40                            "Flow used by an authenticated user to configure this Stage. If empty,"
41                            " user will not be able to configure this stage."
42                        ),
43                        null=True,
44                        on_delete=django.db.models.deletion.SET_NULL,
45                        to="authentik_flows.flow",
46                    ),
47                ),
48            ],
49            options={
50                "verbose_name": "Duo Authenticator Setup Stage",
51                "verbose_name_plural": "Duo Authenticator Setup Stages",
52            },
53            bases=("authentik_flows.stage", models.Model),
54        ),
55        migrations.CreateModel(
56            name="DuoDevice",
57            fields=[
58                (
59                    "id",
60                    models.AutoField(
61                        auto_created=True,
62                        primary_key=True,
63                        serialize=False,
64                        verbose_name="ID",
65                    ),
66                ),
67                (
68                    "name",
69                    models.CharField(
70                        help_text="The human-readable name of this device.",
71                        max_length=64,
72                    ),
73                ),
74                (
75                    "confirmed",
76                    models.BooleanField(default=True, help_text="Is this device ready for use?"),
77                ),
78                ("duo_user_id", models.TextField()),
79                (
80                    "stage",
81                    models.ForeignKey(
82                        on_delete=django.db.models.deletion.CASCADE,
83                        to="authentik_stages_authenticator_duo.authenticatorduostage",
84                    ),
85                ),
86                (
87                    "user",
88                    models.ForeignKey(
89                        on_delete=django.db.models.deletion.CASCADE,
90                        to=settings.AUTH_USER_MODEL,
91                    ),
92                ),
93            ],
94            options={
95                "verbose_name": "Duo Device",
96                "verbose_name_plural": "Duo Devices",
97            },
98        ),
99    ]

The base class for all migrations.

Migration files will import this from django.db.migrations.Migration and subclass it as a class called Migration. It will have one or more of the following attributes:

  • operations: A list of Operation instances, probably from django.db.migrations.operations
  • dependencies: A list of tuples of (app_path, migration_name)
  • run_before: A list of tuples of (app_path, migration_name)
  • replaces: A list of migration_names

Note that all migrations come out of migrations and into the Loader or Graph as instances, having been initialized with their app label and name.

initial = True
dependencies = [('authentik_flows', '0018_oob_flows'), ('authentik_core', '__first__')]
operations = [<CreateModel name='AuthenticatorDuoStage', fields=[('stage_ptr', <django.db.models.fields.related.OneToOneField>), ('client_id', <django.db.models.fields.TextField>), ('client_secret', <django.db.models.fields.TextField>), ('api_hostname', <django.db.models.fields.TextField>), ('configure_flow', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'Duo Authenticator Setup Stage', 'verbose_name_plural': 'Duo Authenticator Setup Stages'}, bases=('authentik_flows.stage', <class 'django.db.models.base.Model'>)>, <CreateModel name='DuoDevice', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('confirmed', <django.db.models.fields.BooleanField>), ('duo_user_id', <django.db.models.fields.TextField>), ('stage', <django.db.models.fields.related.ForeignKey>), ('user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'Duo Device', 'verbose_name_plural': 'Duo Devices'}>]