From e6167d151941d152761caf5593260a997460fe6d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=A0t=C4=9Bp=C3=A1n=20Farka?= <stepanfarka11@gmail.com>
Date: Wed, 25 May 2022 12:27:33 +0200
Subject: [PATCH] [ADD] public conpect preview to project pages

---
 .../0023_donatesecretpreviewpage.py           | 35 +++++++++++++++++++
 donate/models.py                              | 34 +++++++++++++++++-
 donate/templates/donate/base.html             |  2 +-
 3 files changed, 69 insertions(+), 2 deletions(-)
 create mode 100644 donate/migrations/0023_donatesecretpreviewpage.py

diff --git a/donate/migrations/0023_donatesecretpreviewpage.py b/donate/migrations/0023_donatesecretpreviewpage.py
new file mode 100644
index 00000000..5ee9f53a
--- /dev/null
+++ b/donate/migrations/0023_donatesecretpreviewpage.py
@@ -0,0 +1,35 @@
+# Generated by Django 4.0.4 on 2022-05-25 09:25
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("wagtailcore", "0066_collection_management_permissions"),
+        ("donate", "0022_donatehomepage_custom_url_1_and_more"),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name="DonateSecretPreviewPage",
+            fields=[
+                (
+                    "page_ptr",
+                    models.OneToOneField(
+                        auto_created=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        parent_link=True,
+                        primary_key=True,
+                        serialize=False,
+                        to="wagtailcore.page",
+                    ),
+                ),
+            ],
+            options={
+                "verbose_name": "Skrytá stránka pro náhled konceptu",
+            },
+            bases=("wagtailcore.page",),
+        ),
+    ]
diff --git a/donate/models.py b/donate/models.py
index 431a3bba..e9c27bbd 100644
--- a/donate/models.py
+++ b/donate/models.py
@@ -6,6 +6,7 @@ from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
 from django.db import models
 from django.http import HttpResponseRedirect
 from django.shortcuts import redirect
+from django.template.response import TemplateResponse
 from modelcluster.fields import ParentalKey
 from wagtail.admin.edit_handlers import (
     FieldPanel,
@@ -510,7 +511,7 @@ class DonateProjectPage(
     ### RELATIONS
 
     parent_page_types = ["donate.DonateProjectIndexPage"]
-    subpage_types = []
+    subpage_types = ["donate.DonateSecretPreviewPage"]
 
     ### OTHERS
 
@@ -765,3 +766,34 @@ class DonateTargetedDonationsPage(
             context["initial_project_id"] = 0
 
         return context
+
+
+class DonateSecretPreviewPage(Page):
+    max_count_per_parent = 1
+
+    parent_page_types = [
+        "donate.DonateProjectPage",
+    ]
+    subpage_types = []
+
+    class Meta:
+        verbose_name = "Skrytá stránka pro náhled konceptu"
+
+    def get_context(self, request, *args, **kwargs):
+        parent_page = self.get_parent().get_latest_revision_as_page()
+        context = parent_page.get_context(request=request)
+
+        context.update({"disable_robots": True})
+
+        return context
+
+    def get_template(self, request, *args, **kwargs):
+        parent_page = self.get_parent().get_latest_revision_as_page()
+        return parent_page.get_template(request, *args, **kwargs)
+
+    def serve(self, request, *args, **kwargs):
+        return TemplateResponse(
+            request,
+            self.get_template(request, *args, **kwargs),
+            self.get_context(request, *args, **kwargs),
+        )
diff --git a/donate/templates/donate/base.html b/donate/templates/donate/base.html
index 00345f73..ec555c97 100644
--- a/donate/templates/donate/base.html
+++ b/donate/templates/donate/base.html
@@ -22,7 +22,7 @@
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
   {% meta_tags %}
-  {% if settings.MAJAK_ENV == "test" %}
+  {% if settings.MAJAK_ENV == "test" or disable_robots %}
     <meta name="robots" content="noindex, nofollow">
   {% endif %}
 
-- 
GitLab