From 1c1017d95a187d38ee3053cd947d1c47139b05c5 Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Tue, 13 Feb 2024 21:41:01 -0400
Subject: [PATCH] feat: add field level permissions for Host, Note, Show and
 Timeslot

---
 ...ote_options_alter_show_options_and_more.py | 66 +++++++++++++++++++
 program/models.py                             | 37 +++++++++--
 2 files changed, 98 insertions(+), 5 deletions(-)
 create mode 100644 program/migrations/0080_alter_note_options_alter_show_options_and_more.py

diff --git a/program/migrations/0080_alter_note_options_alter_show_options_and_more.py b/program/migrations/0080_alter_note_options_alter_show_options_and_more.py
new file mode 100644
index 00000000..fe8dc74f
--- /dev/null
+++ b/program/migrations/0080_alter_note_options_alter_show_options_and_more.py
@@ -0,0 +1,66 @@
+# Generated by Django 4.2.10 on 2024-02-14 01:06
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("program", "0079_alter_show_slug"),
+    ]
+
+    operations = [
+        migrations.AlterModelOptions(
+            name="note",
+            options={
+                "ordering": ("timeslot",),
+                "permissions": [
+                    ("edit__note__content", "Can edit content field"),
+                    ("edit__note__contributors", "Can edit contributor field"),
+                    ("edit__note__image", "Can edit image field"),
+                    ("edit__note__languages", "Can edit language field"),
+                    ("edit__note__links", "Can edit links field"),
+                    ("edit__note__summary", "Can edit summary field"),
+                    ("edit__note__tags", "Can edit tags field"),
+                    ("edit__note__title", "Can edit title field"),
+                    ("edit__note__topics", "Can edit topics field"),
+                ],
+            },
+        ),
+        migrations.AlterModelOptions(
+            name="show",
+            options={
+                "ordering": ("slug",),
+                "permissions": [
+                    ("display__show__internal_note", "Can display internal note field"),
+                    ("edit__show__categories", "Can edit category field"),
+                    ("edit__show__cba_series_id", "Can edit cba series id field"),
+                    ("edit__show__default_playlist", "Can edit default playlist id field"),
+                    ("edit__show__description", "Can edit description field"),
+                    ("edit__show__email", "Can edit email field"),
+                    ("edit__show__funding_categories", "Can edit funding category field"),
+                    ("edit__show__hosts", "Can edit hosts field"),
+                    ("edit__show__image", "Can edit image field"),
+                    ("edit__show__internal_note", "Can edit internal note field"),
+                    ("edit__show__is_active", "Can edit is active field"),
+                    ("edit__show__languages", "Can edit language field"),
+                    ("edit__show__links", "Can edit links field"),
+                    ("edit__show__logo", "Can edit logo field"),
+                    ("edit__show__music_focuses", "Can edit music focus field"),
+                    ("edit__show__name", "Can edit name field"),
+                    ("edit__show__owners", "Can edit owners field"),
+                    ("edit__show__predecessor", "Can edit predecessor field"),
+                    ("edit__show__short_description", "Can edit short_description field"),
+                    ("edit__show__slug", "Can edit slug field"),
+                    ("edit__show__topics", "Can edit topic field"),
+                    ("edit__show__type", "Can edit type field"),
+                ],
+            },
+        ),
+        migrations.AlterModelOptions(
+            name="timeslot",
+            options={
+                "ordering": ("start", "end"),
+                "permissions": [("edit__timeslot__playlist", "Can edit playlist field")],
+            },
+        ),
+    ]
diff --git a/program/models.py b/program/models.py
index 4ea0ace0..3148c7cc 100644
--- a/program/models.py
+++ b/program/models.py
@@ -256,9 +256,28 @@ class Show(models.Model):
     class Meta:
         ordering = ("slug",)
         permissions = [
-            ("edit__show__description", "Can edit Show description field"),
-            ("edit__show__name", "Can edit Show name field"),
-            ("edit__show__short_description", "Can edit Show short_description field"),
+            ("display__show__internal_note", "Can display internal note field"),
+            ("edit__show__categories", "Can edit category field"),
+            ("edit__show__cba_series_id", "Can edit cba series id field"),
+            ("edit__show__default_playlist", "Can edit default playlist id field"),
+            ("edit__show__description", "Can edit description field"),
+            ("edit__show__email", "Can edit email field"),
+            ("edit__show__funding_categories", "Can edit funding category field"),
+            ("edit__show__hosts", "Can edit hosts field"),
+            ("edit__show__image", "Can edit image field"),
+            ("edit__show__internal_note", "Can edit internal note field"),
+            ("edit__show__is_active", "Can edit is active field"),
+            ("edit__show__languages", "Can edit language field"),
+            ("edit__show__links", "Can edit links field"),
+            ("edit__show__logo", "Can edit logo field"),
+            ("edit__show__music_focuses", "Can edit music focus field"),
+            ("edit__show__name", "Can edit name field"),
+            ("edit__show__owners", "Can edit owners field"),
+            ("edit__show__predecessor", "Can edit predecessor field"),
+            ("edit__show__short_description", "Can edit short_description field"),
+            ("edit__show__slug", "Can edit slug field"),
+            ("edit__show__topics", "Can edit topic field"),
+            ("edit__show__type", "Can edit type field"),
         ]
 
     def __str__(self):
@@ -411,6 +430,7 @@ class TimeSlot(models.Model):
 
     class Meta:
         ordering = ("start", "end")
+        permissions = [("edit__timeslot__playlist", "Can edit playlist field")]
 
     def __str__(self):
         if self.start.date() == self.end.date():
@@ -461,8 +481,15 @@ class Note(models.Model):
     class Meta:
         ordering = ("timeslot",)
         permissions = [
-            ("edit__note__language", "Can edit Note language field"),
-            ("edit__note__topic", "Can edit Note topic field"),
+            ("edit__note__content", "Can edit content field"),
+            ("edit__note__contributors", "Can edit contributor field"),
+            ("edit__note__image", "Can edit image field"),
+            ("edit__note__languages", "Can edit language field"),
+            ("edit__note__links", "Can edit links field"),
+            ("edit__note__summary", "Can edit summary field"),
+            ("edit__note__tags", "Can edit tags field"),
+            ("edit__note__title", "Can edit title field"),
+            ("edit__note__topics", "Can edit topics field"),
         ]
 
     def __str__(self):
-- 
GitLab