# Generated by Django 4.2.16 on 2024-11-20 17:08 import django.db.models.deletion from django.conf import settings from django.db import migrations, models from django.db.migrations.state import StateApps def migrate_meta_groups(apps: StateApps, schema_editor): Group = apps.get_model("core", "Group") Club = apps.get_model("club", "Club") meta_groups = Group.objects.filter(is_meta=True) clubs = list(Club.objects.all()) for club in clubs: club.board_group = meta_groups.get_or_create( name=club.unix_name + settings.SITH_BOARD_SUFFIX )[0] club.members_group = meta_groups.get_or_create( name=club.unix_name + settings.SITH_MEMBER_SUFFIX )[0] Club.objects.bulk_update(clubs, fields=["board_group", "members_group"]) # steps of the migration : # - Create a nullable field for the board group and the member group # - Edit those new fields to make them point to currently existing meta groups # - When this data migration is done, make the fields non-nullable class Migration(migrations.Migration): dependencies = [ ("core", "0040_alter_user_options_user_user_permissions_and_more"), ("club", "0011_auto_20180426_2013"), ] operations = [ migrations.AddField( model_name="club", name="board_group", field=models.OneToOneField( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="club_board", to="core.group", ), ), migrations.AddField( model_name="club", name="members_group", field=models.OneToOneField( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="club", to="core.group", ), ), migrations.RunPython( migrate_meta_groups, reverse_code=migrations.RunPython.noop, elidable=True ), migrations.AlterField( model_name="club", name="board_group", field=models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, related_name="club_board", to="core.group", ), ), migrations.AlterField( model_name="club", name="members_group", field=models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, related_name="club", to="core.group", ), ), ]