From 9894baa904524360ed1e9b38e2ab4b8e3bc414a5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Bedna=C5=99=C3=ADk?= <jan.bednarik@gmail.com>
Date: Mon, 1 Jun 2020 18:08:16 +0200
Subject: [PATCH] senate: SEO metadata

---
 .isort.cfg                                    |  2 +-
 .../0002_senatehomepage_search_image.py       | 27 +++++++++++++++++++
 senate/models.py                              | 21 ++++++++++++---
 senate/templates/senate/base.html             |  8 +++---
 4 files changed, 49 insertions(+), 9 deletions(-)
 create mode 100644 senate/migrations/0002_senatehomepage_search_image.py

diff --git a/.isort.cfg b/.isort.cfg
index 1c35b69a..b1d9cc78 100644
--- a/.isort.cfg
+++ b/.isort.cfg
@@ -4,4 +4,4 @@ line_length = 88
 multi_line_output = 3
 default_sectiont = "THIRDPARTY"
 include_trailing_comma = true
-known_third_party = arrow,django,environ,faker,ics,pirates,pytest,pytz,requests,snapshottest,wagtail
+known_third_party = arrow,django,environ,faker,ics,pirates,pytest,pytz,requests,snapshottest,wagtail,wagtailmetadata
diff --git a/senate/migrations/0002_senatehomepage_search_image.py b/senate/migrations/0002_senatehomepage_search_image.py
new file mode 100644
index 00000000..5e647978
--- /dev/null
+++ b/senate/migrations/0002_senatehomepage_search_image.py
@@ -0,0 +1,27 @@
+# Generated by Django 3.0.6 on 2020-06-01 14:39
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("wagtailimages", "0022_uploadedimage"),
+        ("senate", "0001_initial"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="senatehomepage",
+            name="search_image",
+            field=models.ForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.SET_NULL,
+                related_name="+",
+                to="wagtailimages.Image",
+                verbose_name="Search image",
+            ),
+        ),
+    ]
diff --git a/senate/models.py b/senate/models.py
index 9a975800..5c84490f 100644
--- a/senate/models.py
+++ b/senate/models.py
@@ -1,10 +1,17 @@
 from django.db import models
 from django.utils.translation import gettext_lazy
-from wagtail.admin.edit_handlers import FieldPanel, MultiFieldPanel, StreamFieldPanel
+from wagtail.admin.edit_handlers import (
+    FieldPanel,
+    HelpPanel,
+    MultiFieldPanel,
+    StreamFieldPanel,
+)
 from wagtail.core import blocks
 from wagtail.core.fields import StreamField
 from wagtail.core.models import Page
 from wagtail.images.blocks import ImageChooserBlock
+from wagtail.images.edit_handlers import ImageChooserPanel
+from wagtailmetadata.models import MetadataPageMixin
 
 
 class PersonBlock(blocks.StructBlock):
@@ -21,7 +28,7 @@ class PersonBlock(blocks.StructBlock):
         label = "osoba"
 
 
-class SenateHomePage(Page):
+class SenateHomePage(MetadataPageMixin, Page):
     senators = StreamField(
         [("item", PersonBlock())], verbose_name="naši senátoři", blank=True
     )
@@ -39,7 +46,15 @@ class SenateHomePage(Page):
 
     promote_panels = [
         MultiFieldPanel(
-            [FieldPanel("seo_title"), FieldPanel("search_description")],
+            [
+                HelpPanel(
+                    "Název stránky na předchozím tabu slouží k rozlišení stránek "
+                    "v Majáku. V prohlížeči a SEO metadatech se zobrazí tento titulek."
+                ),
+                FieldPanel("seo_title"),
+                FieldPanel("search_description"),
+                ImageChooserPanel("search_image"),
+            ],
             gettext_lazy("Common page configuration"),
         ),
     ]
diff --git a/senate/templates/senate/base.html b/senate/templates/senate/base.html
index 90ebb63f..fbab4db8 100644
--- a/senate/templates/senate/base.html
+++ b/senate/templates/senate/base.html
@@ -1,13 +1,11 @@
-{% load static wagtailuserbar wagtailcore_tags %}
+{% load static wagtailuserbar wagtailcore_tags wagtailmetadata_tags %}
 <!doctype html>
 <html lang="cs">
     <head>
         <meta charset="utf-8">
-
-        <title>{% firstof page.seo_title page.title %}</title>
-        <meta name="description" content="{{ page.search_description }}">
         <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0, shrink-to-fit=no">
-        <meta name="author" content="Piráti">
+        {% meta_tags %}
+
         <script src="https://kit.fontawesome.com/cbdc6198f3.js" crossorigin="anonymous"></script>
         <link rel="stylesheet" href="{% static "shared/vendor/bootstrap-4.4.1/css/bootstrap.min.css" %}">
         <link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Roboto+Condensed:wght@300;400;700&family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
-- 
GitLab