From 9610f8f57bee48924d0c16818f4f0e99d4f759f5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=A0t=C4=9Bp=C3=A1n=20Farka?= <stepanfarka11@gmail.com>
Date: Wed, 31 Aug 2022 16:28:10 +0200
Subject: [PATCH] [ADD] page for gdpr

---
 ...0029_mainhomepage_gdpr_and_cookies_page.py | 25 +++++++++++++++++++
 main/models.py                                | 18 ++++++++++++-
 .../main/includes/newsletter_section.html     |  2 +-
 3 files changed, 43 insertions(+), 2 deletions(-)
 create mode 100644 main/migrations/0029_mainhomepage_gdpr_and_cookies_page.py

diff --git a/main/migrations/0029_mainhomepage_gdpr_and_cookies_page.py b/main/migrations/0029_mainhomepage_gdpr_and_cookies_page.py
new file mode 100644
index 00000000..bb89158c
--- /dev/null
+++ b/main/migrations/0029_mainhomepage_gdpr_and_cookies_page.py
@@ -0,0 +1,25 @@
+# Generated by Django 4.0.7 on 2022-08-31 14:26
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("main", "0028_alter_mainarticlepage_content_mainsimplepage"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="mainhomepage",
+            name="gdpr_and_cookies_page",
+            field=models.ForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.PROTECT,
+                to="main.mainsimplepage",
+                verbose_name="Stránka pro GDPR",
+            ),
+        ),
+    ]
diff --git a/main/models.py b/main/models.py
index 8a8b3474..d2c6fd97 100644
--- a/main/models.py
+++ b/main/models.py
@@ -17,8 +17,9 @@ from wagtail.admin.edit_handlers import (
     ObjectList,
     TabbedInterface,
 )
+from wagtail.admin.panels import PageChooserPanel
 from wagtail.contrib.routable_page.models import RoutablePageMixin, route
-from wagtail.core.blocks import CharBlock, PageChooserBlock, RichTextBlock
+from wagtail.core.blocks import CharBlock, RichTextBlock
 from wagtail.core.fields import RichTextField, StreamField
 from wagtail.core.models import Page
 from wagtailmetadata.models import MetadataPageMixin
@@ -96,6 +97,14 @@ class MainHomePage(
     )
 
     # settings
+    gdpr_and_cookies_page = models.ForeignKey(
+        "main.MainSimplePage",
+        verbose_name="Stránka pro GDPR",
+        on_delete=models.PROTECT,
+        blank=True,
+        null=True,
+    )
+
     matomo_id = models.IntegerField(
         "Matomo ID pro sledování návštěvnosti", blank=True, null=True
     )
@@ -123,6 +132,7 @@ class MainHomePage(
 
     settings_panels = [
         FieldPanel("contact_newcomers"),
+        PageChooserPanel("gdpr_and_cookies_page"),
         FieldPanel("donation_page"),
         FieldPanel("social_links"),
         FieldPanel("matomo_id"),
@@ -155,6 +165,12 @@ class MainHomePage(
     class Meta:
         verbose_name = "HomePage pirati.cz"
 
+    @cached_property
+    def gdpr_and_cookies_url(self):
+        if self.gdpr_and_cookies_page:
+            return self.gdpr_and_cookies_page.url
+        return "#"
+
     @staticmethod
     def get_404_response(request):
         return render(request, "main/404.html", status=404)
diff --git a/main/templates/main/includes/newsletter_section.html b/main/templates/main/includes/newsletter_section.html
index bf050f57..88af7637 100644
--- a/main/templates/main/includes/newsletter_section.html
+++ b/main/templates/main/includes/newsletter_section.html
@@ -19,7 +19,7 @@
           <div class="checkbox form-field__control flex items-center mb-3">
             <input type="checkbox" id="checkbox_1" name="confirmed" required="">
             <label class="text-xs font-alt font-light" for="checkbox_1">
-              Souhlasím se zpracováním osobních údajů
+              Souhlasím se <a href="{{ page.root_page.gdpr_and_cookies_url }}" target="_blank">zpracováním osobních údajů</a>
             </label>
           </div>
           {% include 'main/includes/form_button_animated.html' with btn_text="Odebírat" %}
-- 
GitLab