From a3f4a80c052ae49be2370c8fedda146727287913 Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Tue, 11 Apr 2023 12:39:54 -0400
Subject: [PATCH] Make Show.logo a reference to Image - Replace ImageField with
 ForeignKey reference to Image - Update `program/show.json` fixture - Update
 serializer to refer to Image and allow null

---
 fixtures/program/show.json                  |  2 +-
 program/migrations/0051_remove_show_logo.py | 17 +++++++++++++++++
 program/migrations/0052_show_logo.py        | 19 +++++++++++++++++++
 program/models.py                           |  9 ++++++++-
 program/serializers.py                      |  5 +++++
 5 files changed, 50 insertions(+), 2 deletions(-)
 create mode 100644 program/migrations/0051_remove_show_logo.py
 create mode 100644 program/migrations/0052_show_logo.py

diff --git a/fixtures/program/show.json b/fixtures/program/show.json
index 429f422c..59702687 100644
--- a/fixtures/program/show.json
+++ b/fixtures/program/show.json
@@ -9,7 +9,7 @@
       "name": "Musikprogramm",
       "slug": "musikprogramm",
       "image": null,
-      "logo": "",
+      "logo": null,
       "short_description": "Unmoderiertes Musikprogramm",
       "description": "Unmoderiertes Musikprogramm",
       "email": "musikredaktion@helsinki.at",
diff --git a/program/migrations/0051_remove_show_logo.py b/program/migrations/0051_remove_show_logo.py
new file mode 100644
index 00000000..9130f374
--- /dev/null
+++ b/program/migrations/0051_remove_show_logo.py
@@ -0,0 +1,17 @@
+# Generated by Django 3.2.18 on 2023-04-11 15:44
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('program', '0050_auto_20230404_0037'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='show',
+            name='logo',
+        ),
+    ]
diff --git a/program/migrations/0052_show_logo.py b/program/migrations/0052_show_logo.py
new file mode 100644
index 00000000..ba7a4c67
--- /dev/null
+++ b/program/migrations/0052_show_logo.py
@@ -0,0 +1,19 @@
+# Generated by Django 3.2.18 on 2023-04-11 15:46
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('program', '0051_remove_show_logo'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='show',
+            name='logo',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='logo_shows', to='program.image'),
+        ),
+    ]
diff --git a/program/models.py b/program/models.py
index a089ab54..64c6780d 100644
--- a/program/models.py
+++ b/program/models.py
@@ -239,7 +239,14 @@ class Show(ModelWithCreatedUpdatedFields):
     is_active = models.BooleanField(default=True)
     is_public = models.BooleanField(default=False)
     language = models.ManyToManyField(Language, blank=True, related_name="shows")
-    logo = models.ImageField(blank=True, null=True, upload_to="show_images")
+    # TODO: is this really necessary?
+    logo = models.ForeignKey(
+        Image,
+        blank=True,
+        null=True,
+        on_delete=models.CASCADE,
+        related_name="logo_shows",
+    )
     music_focus = models.ManyToManyField(MusicFocus, blank=True, related_name="shows")
     name = models.CharField(max_length=255)
     owners = models.ManyToManyField(User, blank=True, related_name="shows")
diff --git a/program/serializers.py b/program/serializers.py
index 7620b4c3..3da89cc2 100644
--- a/program/serializers.py
+++ b/program/serializers.py
@@ -383,6 +383,11 @@ class ShowSerializer(serializers.HyperlinkedModelSerializer):
     image = serializers.PrimaryKeyRelatedField(queryset=Image.objects.all(), required=False)
     language = serializers.PrimaryKeyRelatedField(queryset=Language.objects.all(), many=True)
     links = HostLinkSerializer(many=True, required=False)
+    logo = serializers.PrimaryKeyRelatedField(
+        allow_null=True,
+        queryset=Image.objects.all(),
+        required=False,
+    )
     music_focus = serializers.PrimaryKeyRelatedField(queryset=MusicFocus.objects.all(), many=True)
     owners = serializers.PrimaryKeyRelatedField(queryset=User.objects.all(), many=True)
     predecessor = serializers.PrimaryKeyRelatedField(
-- 
GitLab