authentik.endpoints.connectors.agent.migrations.0002_deviceauthenticationtoken_alter_devicetoken_options_and_more

 1# Generated by Django 5.2.8 on 2025-11-27 00:16
 2
 3import django.db.models.deletion
 4import uuid
 5from django.db import migrations, models
 6
 7
 8class Migration(migrations.Migration):
 9
10    dependencies = [
11        ("authentik_endpoints", "0002_rename_devicegroup_deviceaccessgroup_and_more"),
12        ("authentik_endpoints_connectors_agent", "0001_initial"),
13        (
14            "authentik_providers_oauth2",
15            "0031_remove_oauth2provider_backchannel_logout_uri_and_more",
16        ),
17    ]
18
19    operations = [
20        migrations.CreateModel(
21            name="DeviceAuthenticationToken",
22            fields=[
23                ("expires", models.DateTimeField(default=None, null=True)),
24                ("expiring", models.BooleanField(default=True)),
25                (
26                    "identifier",
27                    models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False),
28                ),
29                ("token", models.TextField()),
30            ],
31            options={
32                "verbose_name": "Device authentication token",
33                "verbose_name_plural": "Device authentication tokens",
34                "abstract": False,
35            },
36        ),
37        migrations.AlterModelOptions(
38            name="devicetoken",
39            options={"verbose_name": "Device Token", "verbose_name_plural": "Device Tokens"},
40        ),
41        migrations.RenameField(
42            model_name="agentconnector",
43            old_name="authentication_flow",
44            new_name="authorization_flow",
45        ),
46        migrations.AddField(
47            model_name="agentconnector",
48            name="jwt_federation_providers",
49            field=models.ManyToManyField(
50                blank=True, default=None, to="authentik_providers_oauth2.oauth2provider"
51            ),
52        ),
53        migrations.AddIndex(
54            model_name="devicetoken",
55            index=models.Index(fields=["key"], name="authentik_e_key_504bbc_idx"),
56        ),
57        migrations.AddField(
58            model_name="deviceauthenticationtoken",
59            name="connector",
60            field=models.ForeignKey(
61                on_delete=django.db.models.deletion.CASCADE,
62                to="authentik_endpoints_connectors_agent.agentconnector",
63            ),
64        ),
65        migrations.AddField(
66            model_name="deviceauthenticationtoken",
67            name="device",
68            field=models.ForeignKey(
69                on_delete=django.db.models.deletion.CASCADE, to="authentik_endpoints.device"
70            ),
71        ),
72        migrations.AddField(
73            model_name="deviceauthenticationtoken",
74            name="device_token",
75            field=models.ForeignKey(
76                on_delete=django.db.models.deletion.CASCADE,
77                to="authentik_endpoints_connectors_agent.devicetoken",
78            ),
79        ),
80        migrations.AddIndex(
81            model_name="deviceauthenticationtoken",
82            index=models.Index(fields=["expires"], name="authentik_e_expires_d52fb2_idx"),
83        ),
84        migrations.AddIndex(
85            model_name="deviceauthenticationtoken",
86            index=models.Index(fields=["expiring"], name="authentik_e_expirin_e9b873_idx"),
87        ),
88        migrations.AddIndex(
89            model_name="deviceauthenticationtoken",
90            index=models.Index(
91                fields=["expiring", "expires"], name="authentik_e_expirin_8c95fe_idx"
92            ),
93        ),
94    ]
class Migration(django.db.migrations.migration.Migration):
 9class Migration(migrations.Migration):
10
11    dependencies = [
12        ("authentik_endpoints", "0002_rename_devicegroup_deviceaccessgroup_and_more"),
13        ("authentik_endpoints_connectors_agent", "0001_initial"),
14        (
15            "authentik_providers_oauth2",
16            "0031_remove_oauth2provider_backchannel_logout_uri_and_more",
17        ),
18    ]
19
20    operations = [
21        migrations.CreateModel(
22            name="DeviceAuthenticationToken",
23            fields=[
24                ("expires", models.DateTimeField(default=None, null=True)),
25                ("expiring", models.BooleanField(default=True)),
26                (
27                    "identifier",
28                    models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False),
29                ),
30                ("token", models.TextField()),
31            ],
32            options={
33                "verbose_name": "Device authentication token",
34                "verbose_name_plural": "Device authentication tokens",
35                "abstract": False,
36            },
37        ),
38        migrations.AlterModelOptions(
39            name="devicetoken",
40            options={"verbose_name": "Device Token", "verbose_name_plural": "Device Tokens"},
41        ),
42        migrations.RenameField(
43            model_name="agentconnector",
44            old_name="authentication_flow",
45            new_name="authorization_flow",
46        ),
47        migrations.AddField(
48            model_name="agentconnector",
49            name="jwt_federation_providers",
50            field=models.ManyToManyField(
51                blank=True, default=None, to="authentik_providers_oauth2.oauth2provider"
52            ),
53        ),
54        migrations.AddIndex(
55            model_name="devicetoken",
56            index=models.Index(fields=["key"], name="authentik_e_key_504bbc_idx"),
57        ),
58        migrations.AddField(
59            model_name="deviceauthenticationtoken",
60            name="connector",
61            field=models.ForeignKey(
62                on_delete=django.db.models.deletion.CASCADE,
63                to="authentik_endpoints_connectors_agent.agentconnector",
64            ),
65        ),
66        migrations.AddField(
67            model_name="deviceauthenticationtoken",
68            name="device",
69            field=models.ForeignKey(
70                on_delete=django.db.models.deletion.CASCADE, to="authentik_endpoints.device"
71            ),
72        ),
73        migrations.AddField(
74            model_name="deviceauthenticationtoken",
75            name="device_token",
76            field=models.ForeignKey(
77                on_delete=django.db.models.deletion.CASCADE,
78                to="authentik_endpoints_connectors_agent.devicetoken",
79            ),
80        ),
81        migrations.AddIndex(
82            model_name="deviceauthenticationtoken",
83            index=models.Index(fields=["expires"], name="authentik_e_expires_d52fb2_idx"),
84        ),
85        migrations.AddIndex(
86            model_name="deviceauthenticationtoken",
87            index=models.Index(fields=["expiring"], name="authentik_e_expirin_e9b873_idx"),
88        ),
89        migrations.AddIndex(
90            model_name="deviceauthenticationtoken",
91            index=models.Index(
92                fields=["expiring", "expires"], name="authentik_e_expirin_8c95fe_idx"
93            ),
94        ),
95    ]

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.

dependencies = [('authentik_endpoints', '0002_rename_devicegroup_deviceaccessgroup_and_more'), ('authentik_endpoints_connectors_agent', '0001_initial'), ('authentik_providers_oauth2', '0031_remove_oauth2provider_backchannel_logout_uri_and_more')]
operations = [<CreateModel name='DeviceAuthenticationToken', fields=[('expires', <django.db.models.fields.DateTimeField>), ('expiring', <django.db.models.fields.BooleanField>), ('identifier', <django.db.models.fields.UUIDField>), ('token', <django.db.models.fields.TextField>)], options={'verbose_name': 'Device authentication token', 'verbose_name_plural': 'Device authentication tokens', 'abstract': False}>, <AlterModelOptions name='devicetoken', options={'verbose_name': 'Device Token', 'verbose_name_plural': 'Device Tokens'}>, <RenameField model_name='agentconnector', old_name='authentication_flow', new_name='authorization_flow'>, <AddField model_name='agentconnector', name='jwt_federation_providers', field=<django.db.models.fields.related.ManyToManyField>>, <AddIndex model_name='devicetoken', index=<Index: fields=['key'] name='authentik_e_key_504bbc_idx'>>, <AddField model_name='deviceauthenticationtoken', name='connector', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='deviceauthenticationtoken', name='device', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='deviceauthenticationtoken', name='device_token', field=<django.db.models.fields.related.ForeignKey>>, <AddIndex model_name='deviceauthenticationtoken', index=<Index: fields=['expires'] name='authentik_e_expires_d52fb2_idx'>>, <AddIndex model_name='deviceauthenticationtoken', index=<Index: fields=['expiring'] name='authentik_e_expirin_e9b873_idx'>>, <AddIndex model_name='deviceauthenticationtoken', index=<Index: fields=['expiring', 'expires'] name='authentik_e_expirin_8c95fe_idx'>>]