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.
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'}>]