authentik.sources.scim.migrations.0003_alter_scimsourcegroup_unique_together_and_more
1# Generated by Django 5.1.11 on 2025-07-13 01:07 2 3import uuid 4from django.db import migrations, models 5from django.apps.registry import Apps 6 7from django.db.backends.base.schema import BaseDatabaseSchemaEditor 8 9 10def migrate_ext_id(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): 11 SCIMSourceUser = apps.get_model("authentik_sources_scim", "SCIMSourceUser") 12 SCIMSourceGroup = apps.get_model("authentik_sources_scim", "SCIMSourceGroup") 13 db_alias = schema_editor.connection.alias 14 for user in SCIMSourceUser.objects.using(db_alias).all(): 15 user.external_id = user.id 16 user.save(update_fields=["external_id"]) 17 for group in SCIMSourceGroup.objects.using(db_alias).all(): 18 group.external_id = group.id 19 group.save(update_fields=["external_id"]) 20 21 22class Migration(migrations.Migration): 23 24 dependencies = [ 25 ("authentik_sources_scim", "0002_scimsourcepropertymapping"), 26 ] 27 28 operations = [ 29 migrations.AlterUniqueTogether( 30 name="scimsourcegroup", 31 unique_together=set(), 32 ), 33 migrations.AlterUniqueTogether( 34 name="scimsourceuser", 35 unique_together=set(), 36 ), 37 migrations.AddField( 38 model_name="scimsourcegroup", 39 name="external_id", 40 field=models.TextField(default=None, null=True), 41 preserve_default=False, 42 ), 43 migrations.AddField( 44 model_name="scimsourceuser", 45 name="external_id", 46 field=models.TextField(default=None, null=True), 47 preserve_default=False, 48 ), 49 migrations.AlterUniqueTogether( 50 name="scimsourcegroup", 51 unique_together={("external_id", "source")}, 52 ), 53 migrations.AlterUniqueTogether( 54 name="scimsourceuser", 55 unique_together={("external_id", "source")}, 56 ), 57 migrations.RunPython(migrate_ext_id, migrations.RunPython.noop), 58 migrations.AlterField( 59 model_name="scimsourcegroup", 60 name="external_id", 61 field=models.TextField(), 62 preserve_default=False, 63 ), 64 migrations.AlterField( 65 model_name="scimsourceuser", 66 name="external_id", 67 field=models.TextField(), 68 preserve_default=False, 69 ), 70 migrations.AddIndex( 71 model_name="scimsourcegroup", 72 index=models.Index(fields=["external_id"], name="authentik_s_externa_05e346_idx"), 73 ), 74 migrations.AddIndex( 75 model_name="scimsourceuser", 76 index=models.Index(fields=["external_id"], name="authentik_s_externa_4bd760_idx"), 77 ), 78 migrations.AlterField( 79 model_name="scimsourcegroup", 80 name="id", 81 field=models.TextField(default=uuid.uuid4, primary_key=True, serialize=False), 82 ), 83 migrations.AlterField( 84 model_name="scimsourceuser", 85 name="id", 86 field=models.TextField(default=uuid.uuid4, primary_key=True, serialize=False), 87 ), 88 migrations.AddField( 89 model_name="scimsourcegroup", 90 name="last_update", 91 field=models.DateTimeField(auto_now=True), 92 ), 93 migrations.AddField( 94 model_name="scimsourceuser", 95 name="last_update", 96 field=models.DateTimeField(auto_now=True), 97 ), 98 ]
def
migrate_ext_id( apps: django.apps.registry.Apps, schema_editor: django.db.backends.base.schema.BaseDatabaseSchemaEditor):
11def migrate_ext_id(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): 12 SCIMSourceUser = apps.get_model("authentik_sources_scim", "SCIMSourceUser") 13 SCIMSourceGroup = apps.get_model("authentik_sources_scim", "SCIMSourceGroup") 14 db_alias = schema_editor.connection.alias 15 for user in SCIMSourceUser.objects.using(db_alias).all(): 16 user.external_id = user.id 17 user.save(update_fields=["external_id"]) 18 for group in SCIMSourceGroup.objects.using(db_alias).all(): 19 group.external_id = group.id 20 group.save(update_fields=["external_id"])
class
Migration(django.db.migrations.migration.Migration):
23class Migration(migrations.Migration): 24 25 dependencies = [ 26 ("authentik_sources_scim", "0002_scimsourcepropertymapping"), 27 ] 28 29 operations = [ 30 migrations.AlterUniqueTogether( 31 name="scimsourcegroup", 32 unique_together=set(), 33 ), 34 migrations.AlterUniqueTogether( 35 name="scimsourceuser", 36 unique_together=set(), 37 ), 38 migrations.AddField( 39 model_name="scimsourcegroup", 40 name="external_id", 41 field=models.TextField(default=None, null=True), 42 preserve_default=False, 43 ), 44 migrations.AddField( 45 model_name="scimsourceuser", 46 name="external_id", 47 field=models.TextField(default=None, null=True), 48 preserve_default=False, 49 ), 50 migrations.AlterUniqueTogether( 51 name="scimsourcegroup", 52 unique_together={("external_id", "source")}, 53 ), 54 migrations.AlterUniqueTogether( 55 name="scimsourceuser", 56 unique_together={("external_id", "source")}, 57 ), 58 migrations.RunPython(migrate_ext_id, migrations.RunPython.noop), 59 migrations.AlterField( 60 model_name="scimsourcegroup", 61 name="external_id", 62 field=models.TextField(), 63 preserve_default=False, 64 ), 65 migrations.AlterField( 66 model_name="scimsourceuser", 67 name="external_id", 68 field=models.TextField(), 69 preserve_default=False, 70 ), 71 migrations.AddIndex( 72 model_name="scimsourcegroup", 73 index=models.Index(fields=["external_id"], name="authentik_s_externa_05e346_idx"), 74 ), 75 migrations.AddIndex( 76 model_name="scimsourceuser", 77 index=models.Index(fields=["external_id"], name="authentik_s_externa_4bd760_idx"), 78 ), 79 migrations.AlterField( 80 model_name="scimsourcegroup", 81 name="id", 82 field=models.TextField(default=uuid.uuid4, primary_key=True, serialize=False), 83 ), 84 migrations.AlterField( 85 model_name="scimsourceuser", 86 name="id", 87 field=models.TextField(default=uuid.uuid4, primary_key=True, serialize=False), 88 ), 89 migrations.AddField( 90 model_name="scimsourcegroup", 91 name="last_update", 92 field=models.DateTimeField(auto_now=True), 93 ), 94 migrations.AddField( 95 model_name="scimsourceuser", 96 name="last_update", 97 field=models.DateTimeField(auto_now=True), 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 =
[<AlterUniqueTogether name='scimsourcegroup', unique_together=set()>, <AlterUniqueTogether name='scimsourceuser', unique_together=set()>, <AddField model_name='scimsourcegroup', name='external_id', field=<django.db.models.fields.TextField>, preserve_default=False>, <AddField model_name='scimsourceuser', name='external_id', field=<django.db.models.fields.TextField>, preserve_default=False>, <AlterUniqueTogether name='scimsourcegroup', unique_together={('external_id', 'source')}>, <AlterUniqueTogether name='scimsourceuser', unique_together={('external_id', 'source')}>, <RunPython <function migrate_ext_id>, <function RunPython.noop>>, <AlterField model_name='scimsourcegroup', name='external_id', field=<django.db.models.fields.TextField>, preserve_default=False>, <AlterField model_name='scimsourceuser', name='external_id', field=<django.db.models.fields.TextField>, preserve_default=False>, <AddIndex model_name='scimsourcegroup', index=<Index: fields=['external_id'] name='authentik_s_externa_05e346_idx'>>, <AddIndex model_name='scimsourceuser', index=<Index: fields=['external_id'] name='authentik_s_externa_4bd760_idx'>>, <AlterField model_name='scimsourcegroup', name='id', field=<django.db.models.fields.TextField>>, <AlterField model_name='scimsourceuser', name='id', field=<django.db.models.fields.TextField>>, <AddField model_name='scimsourcegroup', name='last_update', field=<django.db.models.fields.DateTimeField>>, <AddField model_name='scimsourceuser', name='last_update', field=<django.db.models.fields.DateTimeField>>]