authentik.providers.rac.migrations.0007_migrate_session

 1# Generated by Django 5.0.11 on 2025-01-27 12:59
 2
 3from django.db import migrations
 4import django.db.models.deletion
 5from django.db import migrations, models
 6
 7
 8def migrate_sessions(apps, schema_editor):
 9    ConnectionToken = apps.get_model("authentik_providers_rac", "ConnectionToken")
10    AuthenticatedSession = apps.get_model("authentik_core", "AuthenticatedSession")
11    db_alias = schema_editor.connection.alias
12
13    for token in ConnectionToken.objects.using(db_alias).all():
14        token.session = (
15            AuthenticatedSession.objects.using(db_alias)
16            .filter(session__session_key=token.old_session.session_key)
17            .first()
18        )
19        if token.session:
20            token.save()
21        else:
22            token.delete()
23
24
25class Migration(migrations.Migration):
26
27    dependencies = [
28        ("authentik_providers_rac", "0006_connectiontoken_authentik_p_expires_91f148_idx_and_more"),
29        ("authentik_core", "0046_session_and_more"),
30    ]
31
32    operations = [
33        migrations.RenameField(
34            model_name="connectiontoken",
35            old_name="session",
36            new_name="old_session",
37        ),
38        migrations.AddField(
39            model_name="connectiontoken",
40            name="session",
41            field=models.ForeignKey(
42                null=True,
43                on_delete=django.db.models.deletion.CASCADE,
44                to="authentik_core.authenticatedsession",
45            ),
46        ),
47        migrations.RunPython(code=migrate_sessions),
48        migrations.AlterField(
49            model_name="connectiontoken",
50            name="session",
51            field=models.ForeignKey(
52                on_delete=django.db.models.deletion.CASCADE,
53                to="authentik_core.authenticatedsession",
54            ),
55        ),
56        migrations.RemoveField(
57            model_name="connectiontoken",
58            name="old_session",
59        ),
60    ]
def migrate_sessions(apps, schema_editor):
 9def migrate_sessions(apps, schema_editor):
10    ConnectionToken = apps.get_model("authentik_providers_rac", "ConnectionToken")
11    AuthenticatedSession = apps.get_model("authentik_core", "AuthenticatedSession")
12    db_alias = schema_editor.connection.alias
13
14    for token in ConnectionToken.objects.using(db_alias).all():
15        token.session = (
16            AuthenticatedSession.objects.using(db_alias)
17            .filter(session__session_key=token.old_session.session_key)
18            .first()
19        )
20        if token.session:
21            token.save()
22        else:
23            token.delete()
class Migration(django.db.migrations.migration.Migration):
26class Migration(migrations.Migration):
27
28    dependencies = [
29        ("authentik_providers_rac", "0006_connectiontoken_authentik_p_expires_91f148_idx_and_more"),
30        ("authentik_core", "0046_session_and_more"),
31    ]
32
33    operations = [
34        migrations.RenameField(
35            model_name="connectiontoken",
36            old_name="session",
37            new_name="old_session",
38        ),
39        migrations.AddField(
40            model_name="connectiontoken",
41            name="session",
42            field=models.ForeignKey(
43                null=True,
44                on_delete=django.db.models.deletion.CASCADE,
45                to="authentik_core.authenticatedsession",
46            ),
47        ),
48        migrations.RunPython(code=migrate_sessions),
49        migrations.AlterField(
50            model_name="connectiontoken",
51            name="session",
52            field=models.ForeignKey(
53                on_delete=django.db.models.deletion.CASCADE,
54                to="authentik_core.authenticatedsession",
55            ),
56        ),
57        migrations.RemoveField(
58            model_name="connectiontoken",
59            name="old_session",
60        ),
61    ]

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_providers_rac', '0006_connectiontoken_authentik_p_expires_91f148_idx_and_more'), ('authentik_core', '0046_session_and_more')]
operations = [<RenameField model_name='connectiontoken', old_name='session', new_name='old_session'>, <AddField model_name='connectiontoken', name='session', field=<django.db.models.fields.related.ForeignKey>>, <RunPython code=<function migrate_sessions>>, <AlterField model_name='connectiontoken', name='session', field=<django.db.models.fields.related.ForeignKey>>, <RemoveField model_name='connectiontoken', name='old_session'>]