From 9ec585085b64b1ea9ae9b253c73dca164c51faad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alexa=20Valentov=C3=A1?= <git@imaniti.org>
Date: Tue, 29 Oct 2024 13:23:50 +0100
Subject: [PATCH] custom logo for district pages

---
 ...tricthomepage_custom_logo_dark_and_more.py | 25 ++++++++++++++
 ...tricthomepage_custom_logo_dark_and_more.py | 33 +++++++++++++++++++
 district/models.py                            | 10 +++++-
 .../district/district_home_page.html          |  1 -
 shared/models/main.py                         | 25 ++++++++++++++
 .../organisms/layout/district/navbar.html     | 32 ++++++++++--------
 ...alter_uniwebhomepage_dark_logo_and_more.py | 25 ++++++++++++++
 uniweb/models.py                              | 22 ++-----------
 8 files changed, 137 insertions(+), 36 deletions(-)
 create mode 100644 district/migrations/0299_districthomepage_custom_logo_dark_and_more.py
 create mode 100644 district/migrations/0300_remove_districthomepage_custom_logo_dark_and_more.py
 create mode 100644 uniweb/migrations/0113_alter_uniwebhomepage_dark_logo_and_more.py

diff --git a/district/migrations/0299_districthomepage_custom_logo_dark_and_more.py b/district/migrations/0299_districthomepage_custom_logo_dark_and_more.py
new file mode 100644
index 00000000..3c7d280d
--- /dev/null
+++ b/district/migrations/0299_districthomepage_custom_logo_dark_and_more.py
@@ -0,0 +1,25 @@
+# Generated by Django 5.1.2 on 2024-10-29 11:31
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('district', '0298_districtoctopuspersonpage_originating_role_and_more'),
+        ('wagtailimages', '0026_delete_uploadedimage'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='districthomepage',
+            name='custom_logo_dark',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailimages.image', verbose_name='obrázek'),
+        ),
+        migrations.AddField(
+            model_name='districthomepage',
+            name='custom_logo_light',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailimages.image', verbose_name='obrázek'),
+        ),
+    ]
diff --git a/district/migrations/0300_remove_districthomepage_custom_logo_dark_and_more.py b/district/migrations/0300_remove_districthomepage_custom_logo_dark_and_more.py
new file mode 100644
index 00000000..f3feba55
--- /dev/null
+++ b/district/migrations/0300_remove_districthomepage_custom_logo_dark_and_more.py
@@ -0,0 +1,33 @@
+# Generated by Django 5.1.2 on 2024-10-29 12:14
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('district', '0299_districthomepage_custom_logo_dark_and_more'),
+        ('wagtailimages', '0026_delete_uploadedimage'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='districthomepage',
+            name='custom_logo_dark',
+        ),
+        migrations.RemoveField(
+            model_name='districthomepage',
+            name='custom_logo_light',
+        ),
+        migrations.AddField(
+            model_name='districthomepage',
+            name='dark_logo',
+            field=models.ForeignKey(blank=True, help_text='Pokud žádné nezadáte, použije se default logo pirátů', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailimages.image', verbose_name='Logo pro web (tmavá verze)'),
+        ),
+        migrations.AddField(
+            model_name='districthomepage',
+            name='light_logo',
+            field=models.ForeignKey(blank=True, help_text='Pokud žádné nezadáte, použije se default logo pirátů', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailimages.image', verbose_name='Logo pro web (světlá verze)'),
+        ),
+    ]
diff --git a/district/models.py b/district/models.py
index 1b632c3d..45009d45 100644
--- a/district/models.py
+++ b/district/models.py
@@ -63,6 +63,7 @@ from shared.models import (
     MainSearchPageMixin,
     MainSimplePageMixin,
     PageInMenuMixin,
+    CustomLogoMixin,
     PdfPageMixin,
     SharedTaggedDistrictArticle,
     SubpageMixin,
@@ -88,7 +89,7 @@ CONTENT_BLOCKS = DEFAULT_CONTENT_BLOCKS + [
 ]
 
 
-class DistrictHomePage(CalendarMixin, MainHomePageMixin):
+class DistrictHomePage(CustomLogoMixin, CalendarMixin, MainHomePageMixin):
     ### FIELDS
 
     # Main section
@@ -180,6 +181,13 @@ class DistrictHomePage(CalendarMixin, MainHomePageMixin):
     menu_panels = [
         FieldPanel("title_suffix"),
         FieldPanel("meta_title_suffix"),
+        MultiFieldPanel(
+            [
+                FieldPanel("dark_logo"),
+                FieldPanel("light_logo")
+            ],
+            "Vlastní logo"
+        ),
     ] + MainHomePageMixin.menu_panels
 
     footer_panels = MainHomePageMixin.footer_panels + [
diff --git a/district/templates/district/district_home_page.html b/district/templates/district/district_home_page.html
index 987c7908..f9ee3c9b 100644
--- a/district/templates/district/district_home_page.html
+++ b/district/templates/district/district_home_page.html
@@ -2,7 +2,6 @@
 {% load wagtailcore_tags %}
 
 {% block content %}
-
   {% include 'styleguide2/includes/organisms/layout/district/navbar.html' with is_transparent=True %}
 
   <main role="main">
diff --git a/shared/models/main.py b/shared/models/main.py
index f4453e1e..d50abc7d 100644
--- a/shared/models/main.py
+++ b/shared/models/main.py
@@ -2164,6 +2164,31 @@ class PdfPageMixin(models.Model):
         return self.pdf_file.url
 
 
+class CustomLogoMixin(models.Model):
+    dark_logo = models.ForeignKey(
+        "wagtailimages.Image",
+        on_delete=models.PROTECT,
+        blank=True,
+        null=True,
+        verbose_name="Logo pro web (tmavá verze)",
+        help_text="Pokud žádné nezadáte, použije se default logo pirátů",
+        related_name="+",
+    )
+
+    light_logo = models.ForeignKey(
+        "wagtailimages.Image",
+        on_delete=models.PROTECT,
+        blank=True,
+        null=True,
+        verbose_name="Logo pro web (světlá verze)",
+        help_text="Pokud žádné nezadáte, použije se default logo pirátů",
+        related_name="+",
+    )
+
+    class Meta:
+        abstract = True
+
+
 # --- END Whole page mixins ---
 
 
diff --git a/shared/templates/styleguide2/includes/organisms/layout/district/navbar.html b/shared/templates/styleguide2/includes/organisms/layout/district/navbar.html
index 4a377990..9ec34f34 100644
--- a/shared/templates/styleguide2/includes/organisms/layout/district/navbar.html
+++ b/shared/templates/styleguide2/includes/organisms/layout/district/navbar.html
@@ -25,13 +25,15 @@
       alt="{% if light_logo %}{{ light_logo.alt }}{% else %}Pirátské logo{% endif %}"
     >
 
-    <div class="font-alt text-xl w-[100px]">
-      {% if page.root_page.title_suffix %}
-        {{ page.root_page.title_suffix }}
-      {% else %}
-        {{ page.root_page.title }}
-      {% endif %}
-    </div>
+    {% if not light_logo %}
+      <div class="font-alt text-xl w-[100px]">
+        {% if page.root_page.title_suffix %}
+          {{ page.root_page.title_suffix }}
+        {% else %}
+          {{ page.root_page.title }}
+        {% endif %}
+      </div>
+    {% endif %}
   </div>
 
   <div
@@ -48,13 +50,15 @@
       alt="{% if dark_logo %}{{ dark_logo.alt }}{% else %}Pirátské logo{% endif %}"
     >
 
-    <div class="font-alt text-xl w-[100px]">
-      {% if page.root_page.title_suffix %}
-        {{ page.root_page.title_suffix }}
-      {% else %}
-        {{ page.root_page.title }}
-      {% endif %}
-    </div>
+    {% if not dark_logo %}
+      <div class="font-alt text-xl w-[100px]">
+        {% if page.root_page.title_suffix %}
+          {{ page.root_page.title_suffix }}
+        {% else %}
+          {{ page.root_page.title }}
+        {% endif %}
+      </div>
+    {% endif %}
   </div>
 {% endblock %}
 
diff --git a/uniweb/migrations/0113_alter_uniwebhomepage_dark_logo_and_more.py b/uniweb/migrations/0113_alter_uniwebhomepage_dark_logo_and_more.py
new file mode 100644
index 00000000..91f87545
--- /dev/null
+++ b/uniweb/migrations/0113_alter_uniwebhomepage_dark_logo_and_more.py
@@ -0,0 +1,25 @@
+# Generated by Django 5.1.2 on 2024-10-29 12:14
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('uniweb', '0112_alter_uniwebarticlepage_content_and_more'),
+        ('wagtailimages', '0026_delete_uploadedimage'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='uniwebhomepage',
+            name='dark_logo',
+            field=models.ForeignKey(blank=True, help_text='Pokud žádné nezadáte, použije se default logo pirátů', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailimages.image', verbose_name='Logo pro web (tmavá verze)'),
+        ),
+        migrations.AlterField(
+            model_name='uniwebhomepage',
+            name='light_logo',
+            field=models.ForeignKey(blank=True, help_text='Pokud žádné nezadáte, použije se default logo pirátů', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailimages.image', verbose_name='Logo pro web (světlá verze)'),
+        ),
+    ]
diff --git a/uniweb/models.py b/uniweb/models.py
index bb243552..3a94942b 100644
--- a/uniweb/models.py
+++ b/uniweb/models.py
@@ -41,6 +41,7 @@ from shared.models import (
     PdfPageMixin,
     ScrollProgressMixin,
     SharedTaggedUniwebArticle,
+    CustomLogoMixin,
     SocialMixin,
     SubpageMixin,
 )
@@ -68,6 +69,7 @@ class UniwebHomePage(
     LegacyFooterMixin,
     PageInMenuMixin,
     ScrollProgressMixin,
+    CustomLogoMixin,
     MainHomePageMixin,
 ):
     base_form_class = UniwebHomePageAdminForm
@@ -99,26 +101,6 @@ class UniwebHomePage(
         use_json_field=True,
     )
 
-    dark_logo = models.ForeignKey(
-        "wagtailimages.Image",
-        on_delete=models.PROTECT,
-        blank=True,
-        null=True,
-        verbose_name="Logo pro web (tmavá verze)",
-        help_text="Pokud žádné nezadáte, použije se default logo pirátů",
-        related_name="uniweb_dark_logo_image",
-    )
-
-    light_logo = models.ForeignKey(
-        "wagtailimages.Image",
-        on_delete=models.PROTECT,
-        blank=True,
-        null=True,
-        verbose_name="Logo pro web (světlá verze)",
-        help_text="Pokud žádné nezadáte, použije se default logo pirátů",
-        related_name="uniweb_light_logo_image",
-    )
-
     hide_footer = models.BooleanField(
         "skrýt patičku", default=False, help_text="Chcete skrýt patičku?"
     )
-- 
GitLab