From 77bfa13bb71c246f3ebda4618a1e5a125e1670c2 Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Mon, 11 Dec 2023 17:36:34 -0400
Subject: [PATCH] feat: add permissions to the new groups

This apparently needs to done in a separate migration step
---
 .../0077_add_permissions_to_groups.py         | 52 +++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 program/migrations/0077_add_permissions_to_groups.py

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 00000000..4089916f
--- /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)]
-- 
GitLab