authentik.policies.migrations.0005_binding_group
1# Generated by Django 3.1.6 on 2021-02-08 18:36 2 3import django.db.models.deletion 4from django.apps.registry import Apps 5from django.conf import settings 6from django.db import migrations, models 7from django.db.backends.base.schema import BaseDatabaseSchemaEditor 8 9import authentik.lib.models 10 11 12def migrate_from_groupmembership(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): 13 try: 14 GroupMembershipPolicy = apps.get_model( 15 "authentik_policies_group_membership", "GroupMembershipPolicy" 16 ) 17 except LookupError: 18 # GroupMembership app isn't installed, ignore migration 19 return 20 PolicyBinding = apps.get_model("authentik_policies", "PolicyBinding") 21 22 db_alias = schema_editor.connection.alias 23 24 for membership in GroupMembershipPolicy.objects.using(db_alias).all(): 25 for binding in PolicyBinding.objects.using(db_alias).filter(policy=membership): 26 binding.group = membership.group 27 binding.policy = None 28 binding.save() 29 membership.delete() 30 31 32class Migration(migrations.Migration): 33 dependencies = [ 34 ("authentik_core", "0017_managed"), 35 migrations.swappable_dependency(settings.AUTH_USER_MODEL), 36 ("authentik_policies", "0004_policy_execution_logging"), 37 ] 38 39 operations = [ 40 migrations.AddField( 41 model_name="policybinding", 42 name="group", 43 field=models.ForeignKey( 44 blank=True, 45 default=None, 46 null=True, 47 on_delete=django.db.models.deletion.CASCADE, 48 to="authentik_core.group", 49 ), 50 ), 51 migrations.AddField( 52 model_name="policybinding", 53 name="user", 54 field=models.ForeignKey( 55 blank=True, 56 default=None, 57 null=True, 58 on_delete=django.db.models.deletion.CASCADE, 59 to=settings.AUTH_USER_MODEL, 60 ), 61 ), 62 migrations.AlterField( 63 model_name="policybinding", 64 name="policy", 65 field=authentik.lib.models.InheritanceForeignKey( 66 blank=True, 67 default=None, 68 null=True, 69 on_delete=django.db.models.deletion.CASCADE, 70 related_name="+", 71 to="authentik_policies.policy", 72 ), 73 ), 74 migrations.RunPython(migrate_from_groupmembership), 75 ]
def
migrate_from_groupmembership( apps: django.apps.registry.Apps, schema_editor: django.db.backends.base.schema.BaseDatabaseSchemaEditor):
13def migrate_from_groupmembership(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): 14 try: 15 GroupMembershipPolicy = apps.get_model( 16 "authentik_policies_group_membership", "GroupMembershipPolicy" 17 ) 18 except LookupError: 19 # GroupMembership app isn't installed, ignore migration 20 return 21 PolicyBinding = apps.get_model("authentik_policies", "PolicyBinding") 22 23 db_alias = schema_editor.connection.alias 24 25 for membership in GroupMembershipPolicy.objects.using(db_alias).all(): 26 for binding in PolicyBinding.objects.using(db_alias).filter(policy=membership): 27 binding.group = membership.group 28 binding.policy = None 29 binding.save() 30 membership.delete()
class
Migration(django.db.migrations.migration.Migration):
33class Migration(migrations.Migration): 34 dependencies = [ 35 ("authentik_core", "0017_managed"), 36 migrations.swappable_dependency(settings.AUTH_USER_MODEL), 37 ("authentik_policies", "0004_policy_execution_logging"), 38 ] 39 40 operations = [ 41 migrations.AddField( 42 model_name="policybinding", 43 name="group", 44 field=models.ForeignKey( 45 blank=True, 46 default=None, 47 null=True, 48 on_delete=django.db.models.deletion.CASCADE, 49 to="authentik_core.group", 50 ), 51 ), 52 migrations.AddField( 53 model_name="policybinding", 54 name="user", 55 field=models.ForeignKey( 56 blank=True, 57 default=None, 58 null=True, 59 on_delete=django.db.models.deletion.CASCADE, 60 to=settings.AUTH_USER_MODEL, 61 ), 62 ), 63 migrations.AlterField( 64 model_name="policybinding", 65 name="policy", 66 field=authentik.lib.models.InheritanceForeignKey( 67 blank=True, 68 default=None, 69 null=True, 70 on_delete=django.db.models.deletion.CASCADE, 71 related_name="+", 72 to="authentik_policies.policy", 73 ), 74 ), 75 migrations.RunPython(migrate_from_groupmembership), 76 ]
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_core', '0017_managed'), ('authentik_core', '__first__'), ('authentik_policies', '0004_policy_execution_logging')]
operations =
[<AddField model_name='policybinding', name='group', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='policybinding', name='user', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='policybinding', name='policy', field=<authentik.lib.models.InheritanceForeignKey>>, <RunPython <function migrate_from_groupmembership>>]