From 77a692bda2fd8ab0acf65d4fb510789125a2984c Mon Sep 17 00:00:00 2001
From: "jindra12.underdark" <jindra12.underdark@gmail.com>
Date: Sat, 9 Dec 2023 17:54:31 +0100
Subject: [PATCH] Minor fixes for uniweb person page

#213
---
 .../0051_uniwebhomepage_fallback_image.py     | 27 +++++++++++++++++++
 uniweb/models.py                              | 19 +++++++++++++
 uniweb/templates/uniweb/base.html             |  2 ++
 .../templates/uniweb/uniweb_person_page.html  | 19 ++++++++++---
 4 files changed, 63 insertions(+), 4 deletions(-)
 create mode 100644 uniweb/migrations/0051_uniwebhomepage_fallback_image.py

diff --git a/uniweb/migrations/0051_uniwebhomepage_fallback_image.py b/uniweb/migrations/0051_uniwebhomepage_fallback_image.py
new file mode 100644
index 00000000..161b3a2b
--- /dev/null
+++ b/uniweb/migrations/0051_uniwebhomepage_fallback_image.py
@@ -0,0 +1,27 @@
+# Generated by Django 4.1.8 on 2023-12-09 16:07
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("wagtailimages", "0025_alter_image_file_alter_rendition_file"),
+        ("uniweb", "0050_uniwebhomepage_donation_page"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="uniwebhomepage",
+            name="fallback_image",
+            field=models.ForeignKey(
+                blank=True,
+                help_text="Tento obrázek bude využit např. jako pozadí pro osobní stránky.",
+                null=True,
+                on_delete=django.db.models.deletion.PROTECT,
+                related_name="+",
+                to="wagtailimages.image",
+                verbose_name="Obrázek pro pozadí stránek",
+            ),
+        ),
+    ]
diff --git a/uniweb/models.py b/uniweb/models.py
index 37c26947..0b6217c1 100644
--- a/uniweb/models.py
+++ b/uniweb/models.py
@@ -312,6 +312,16 @@ class UniwebHomePage(
 ):
     ### FIELDS
 
+    fallback_image = models.ForeignKey(
+        "wagtailimages.Image",
+        on_delete=models.PROTECT,
+        blank=True,
+        null=True,
+        related_name="+",
+        verbose_name="Obrázek pro pozadí stránek",
+        help_text="Tento obrázek bude využit např. jako pozadí pro osobní stránky.",
+    )
+
     calendar_page = models.ForeignKey(
         "UniwebCalendarPage",
         verbose_name="Stránka s kalendářem",
@@ -394,6 +404,7 @@ class UniwebHomePage(
                 FieldPanel("matomo_id"),
                 FieldPanel("title_suffix"),
                 FieldPanel("narrow_layout"),
+                FieldPanel("fallback_image"),
             ],
             "nastavení webu",
         ),
@@ -838,6 +849,14 @@ class UniwebPersonPage(
             else self.root_page.fallback_image
         )
 
+    def get_job_description(self):
+        """
+        Vrací povolání + funkci, s čárkou mezi nima, pokud jsou obě definovaná, jinak vrátí jednu z nich
+        """
+        if self.job and self.job_function:
+            return f"{self.job}, {self.job_function}"
+        return self.job or self.job_function or ""
+
     def get_context(self, request):
         context = super().get_context(request)
         # Na strance detailu cloveka se vpravo zobrazuji 3 dalsi nahodne profily
diff --git a/uniweb/templates/uniweb/base.html b/uniweb/templates/uniweb/base.html
index d01cc530..33fcef83 100644
--- a/uniweb/templates/uniweb/base.html
+++ b/uniweb/templates/uniweb/base.html
@@ -83,6 +83,8 @@
     </ui-app>
   </nav>
 
+  {% block subheader %}{% endblock %}
+
   <div class="container container--default py-8 lg:py-24 {% if page.root_page.narrow_layout %}max-w-screen-lg{% endif%}">
   {% block content %}{% endblock %}
   </div>
diff --git a/uniweb/templates/uniweb/uniweb_person_page.html b/uniweb/templates/uniweb/uniweb_person_page.html
index 9d1b880f..0f68860b 100644
--- a/uniweb/templates/uniweb/uniweb_person_page.html
+++ b/uniweb/templates/uniweb/uniweb_person_page.html
@@ -2,15 +2,18 @@
 {% load static wagtailcore_tags wagtailimages_tags shared_filters %}
 
 {% block subheader %}
-  {% image page.get_background_photo fill-1920x500-c75 jpegquality-80 as bg_img %}
-
-  <header class="hero hero--image pt-16 pb-24 lg:pt-32 pb-24" style="--image-url: url({{ bg_img.full_url }})">
+  {% if page.get_background_photo %}
+    {% image page.get_background_photo fill-1920x500-c75 jpegquality-80 as bg_img %}
+    <header class="hero hero--image pt-16 pb-24 lg:pt-32 pb-24" style="--image-url: url({{ bg_img.full_url }})">
+  {% else %}
+    <header class="hero hero--image pt-16 pb-24 lg:pt-32 pb-24 bg-grey-800">
+  {% endif %}
     <div class="container container--default text-center lg:text-left">
       <h1 class="head-alt-lg md:head-alt-xl text-shadow-lg max-w-2xl">
         {{ page.title }}
       </h1>
       <h2 class="head-xs text-shadow-lg mt-2 max-w-xl">
-        {{ page.job | default_if_none:"" }}
+        {{ page.get_job_description }}
       </h2>
     </div>
   </header>
@@ -130,6 +133,14 @@
                     </a>
                   </div>
                 {% endif %}
+                {% if page.city %}
+                  <div>
+                    <h4>Město</h4>
+                    <div class="contact-line icon-link content-block--nostyle">
+                      <i class="ico--home"></i><span>{{ page.city }}</span>
+                    </div>
+                  </div>
+                {% endif %}
               </div>
             </div>
           {% endif %}
-- 
GitLab