diff --git a/program/migrations/0077_add_permissions_to_groups.py b/program/migrations/0077_add_permissions_to_groups.py new file mode 100644 index 0000000000000000000000000000000000000000..4089916fc13fd5cd970c847d79d75216f1c3a876 --- /dev/null +++ b/program/migrations/0077_add_permissions_to_groups.py @@ -0,0 +1,52 @@ +# Generated by Django 4.2.6 on 2023-12-11 20:28 + +from django.db import migrations + + +def add_permissions_to_groups(apps, _): + ContentType = apps.get_model("contenttypes", "ContentType") + Group = apps.get_model("auth", "Group") + Permission = apps.get_model("auth", "Permission") + + Note = apps.get_model("program", "Note") + NoteLink = apps.get_model("program", "NoteLink") + + program = Group.objects.get(name="Program") + for permission in Permission.objects.filter(content_type__app_label="program"): + program.permissions.add(permission) + + broadcast = Group.objects.get(name="Broadcast") + for permission in Permission.objects.filter( + content_type__in=[ + ContentType.objects.get_for_model(Note), + ContentType.objects.get_for_model(NoteLink), + ] + ): + broadcast.permissions.add(permission) + + broadcast_plus = Group.objects.get(name="BroadcastPlus") + for permission in Permission.objects.filter( + codename__in=[ + # for `Host` + "change_biography", + "change_email", + "change_image", + "change_name", + # for `Show` + "change_description", + "change_email", + "change_image", + "change_logo", + "change_name", + "change_short_description", + ] + ): + broadcast_plus.permissions.add(permission) + + +class Migration(migrations.Migration): + dependencies = [ + ("program", "0076_add_permissions_and_groups"), + ] + + operations = [migrations.RunPython(code=add_permissions_to_groups)]