authentik.providers.scim.migrations.0007_scimgroup_scim_id_scimuser_scim_id_and_more
1# Generated by Django 5.0.4 on 2024-05-03 12:38 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 9from authentik.lib.migrations import progress_bar 10 11 12def fix_scim_user_group_pk(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): 13 SCIMUser = apps.get_model("authentik_providers_scim", "SCIMUser") 14 SCIMGroup = apps.get_model("authentik_providers_scim", "SCIMGroup") 15 db_alias = schema_editor.connection.alias 16 print("\nFixing primary key for SCIM users, this might take a couple of minutes...") 17 for user in progress_bar(SCIMUser.objects.using(db_alias).all()): 18 SCIMUser.objects.using(db_alias).filter( 19 pk=user.pk, user=user.user_id, provider=user.provider_id 20 ).update(scim_id=user.pk, id=uuid.uuid4()) 21 22 print("\nFixing primary key for SCIM groups, this might take a couple of minutes...") 23 for group in progress_bar(SCIMGroup.objects.using(db_alias).all()): 24 SCIMGroup.objects.using(db_alias).filter( 25 pk=group.pk, group=group.group_id, provider=group.provider_id 26 ).update(scim_id=group.pk, id=uuid.uuid4()) 27 28 29class Migration(migrations.Migration): 30 31 dependencies = [ 32 ( 33 "authentik_providers_scim", 34 "0001_squashed_0006_rename_parent_group_scimprovider_filter_group", 35 ), 36 ] 37 38 operations = [ 39 migrations.AddField( 40 model_name="scimgroup", 41 name="scim_id", 42 field=models.TextField(default="temp"), 43 preserve_default=False, 44 ), 45 migrations.AddField( 46 model_name="scimuser", 47 name="scim_id", 48 field=models.TextField(default="temp"), 49 preserve_default=False, 50 ), 51 migrations.RunPython(fix_scim_user_group_pk), 52 migrations.AlterField( 53 model_name="scimgroup", 54 name="id", 55 field=models.UUIDField( 56 default=uuid.uuid4, editable=False, primary_key=True, serialize=False 57 ), 58 ), 59 migrations.AlterField( 60 model_name="scimuser", 61 name="id", 62 field=models.UUIDField( 63 default=uuid.uuid4, editable=False, primary_key=True, serialize=False 64 ), 65 ), 66 migrations.AlterField(model_name="scimuser", name="scim_id", field=models.TextField()), 67 migrations.AlterField(model_name="scimgroup", name="scim_id", field=models.TextField()), 68 migrations.AlterUniqueTogether( 69 name="scimgroup", 70 unique_together={("scim_id", "group", "provider")}, 71 ), 72 migrations.AlterUniqueTogether( 73 name="scimuser", 74 unique_together={("scim_id", "user", "provider")}, 75 ), 76 ]
def
fix_scim_user_group_pk( apps: django.apps.registry.Apps, schema_editor: django.db.backends.base.schema.BaseDatabaseSchemaEditor):
13def fix_scim_user_group_pk(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): 14 SCIMUser = apps.get_model("authentik_providers_scim", "SCIMUser") 15 SCIMGroup = apps.get_model("authentik_providers_scim", "SCIMGroup") 16 db_alias = schema_editor.connection.alias 17 print("\nFixing primary key for SCIM users, this might take a couple of minutes...") 18 for user in progress_bar(SCIMUser.objects.using(db_alias).all()): 19 SCIMUser.objects.using(db_alias).filter( 20 pk=user.pk, user=user.user_id, provider=user.provider_id 21 ).update(scim_id=user.pk, id=uuid.uuid4()) 22 23 print("\nFixing primary key for SCIM groups, this might take a couple of minutes...") 24 for group in progress_bar(SCIMGroup.objects.using(db_alias).all()): 25 SCIMGroup.objects.using(db_alias).filter( 26 pk=group.pk, group=group.group_id, provider=group.provider_id 27 ).update(scim_id=group.pk, id=uuid.uuid4())
class
Migration(django.db.migrations.migration.Migration):
30class Migration(migrations.Migration): 31 32 dependencies = [ 33 ( 34 "authentik_providers_scim", 35 "0001_squashed_0006_rename_parent_group_scimprovider_filter_group", 36 ), 37 ] 38 39 operations = [ 40 migrations.AddField( 41 model_name="scimgroup", 42 name="scim_id", 43 field=models.TextField(default="temp"), 44 preserve_default=False, 45 ), 46 migrations.AddField( 47 model_name="scimuser", 48 name="scim_id", 49 field=models.TextField(default="temp"), 50 preserve_default=False, 51 ), 52 migrations.RunPython(fix_scim_user_group_pk), 53 migrations.AlterField( 54 model_name="scimgroup", 55 name="id", 56 field=models.UUIDField( 57 default=uuid.uuid4, editable=False, primary_key=True, serialize=False 58 ), 59 ), 60 migrations.AlterField( 61 model_name="scimuser", 62 name="id", 63 field=models.UUIDField( 64 default=uuid.uuid4, editable=False, primary_key=True, serialize=False 65 ), 66 ), 67 migrations.AlterField(model_name="scimuser", name="scim_id", field=models.TextField()), 68 migrations.AlterField(model_name="scimgroup", name="scim_id", field=models.TextField()), 69 migrations.AlterUniqueTogether( 70 name="scimgroup", 71 unique_together={("scim_id", "group", "provider")}, 72 ), 73 migrations.AlterUniqueTogether( 74 name="scimuser", 75 unique_together={("scim_id", "user", "provider")}, 76 ), 77 ]
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_scim', '0001_squashed_0006_rename_parent_group_scimprovider_filter_group')]
operations =
[<AddField model_name='scimgroup', name='scim_id', field=<django.db.models.fields.TextField>, preserve_default=False>, <AddField model_name='scimuser', name='scim_id', field=<django.db.models.fields.TextField>, preserve_default=False>, <RunPython <function fix_scim_user_group_pk>>, <AlterField model_name='scimgroup', name='id', field=<django.db.models.fields.UUIDField>>, <AlterField model_name='scimuser', name='id', field=<django.db.models.fields.UUIDField>>, <AlterField model_name='scimuser', name='scim_id', field=<django.db.models.fields.TextField>>, <AlterField model_name='scimgroup', name='scim_id', field=<django.db.models.fields.TextField>>, <AlterUniqueTogether name='scimgroup', unique_together={('scim_id', 'group', 'provider')}>, <AlterUniqueTogether name='scimuser', unique_together={('scim_id', 'user', 'provider')}>]