From 2641c232f371f1167267977ae4f7c40d3e90bfb5 Mon Sep 17 00:00:00 2001 From: krmax44 Date: Mon, 10 Mar 2025 15:02:37 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20add=20PagePreview=20cms=20plugin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fragdenstaat_de/fds_cms/cms_plugins.py | 25 +++++++++++ .../migrations/0072_pagepreviewcmsplugin.py | 43 +++++++++++++++++++ fragdenstaat_de/fds_cms/models.py | 7 +++ .../templates/fds_cms/page_preview.html | 17 ++++++++ 4 files changed, 92 insertions(+) create mode 100644 fragdenstaat_de/fds_cms/migrations/0072_pagepreviewcmsplugin.py create mode 100644 fragdenstaat_de/fds_cms/templates/fds_cms/page_preview.html diff --git a/fragdenstaat_de/fds_cms/cms_plugins.py b/fragdenstaat_de/fds_cms/cms_plugins.py index 82d43df55..98dd10a92 100644 --- a/fragdenstaat_de/fds_cms/cms_plugins.py +++ b/fragdenstaat_de/fds_cms/cms_plugins.py @@ -4,6 +4,7 @@ from django.core.exceptions import ObjectDoesNotExist from django.utils.translation import gettext_lazy as _ +from cms.models import Page from cms.plugin_base import CMSPluginBase from cms.plugin_pool import plugin_pool from datashow.models import Dataset @@ -34,6 +35,7 @@ ModalCMSPlugin, OneClickFoiRequestCMSPlugin, PageAnnotationCMSPlugin, + PagePreviewCMSPlugin, PretixEmbedCMSPlugin, PrimaryLinkCMSPlugin, RevealMoreCMSPlugin, @@ -763,3 +765,26 @@ def render(self, context, instance, placeholder): column.sortable = False context["columns"] = columns return super().render(context, instance, placeholder) + + +@plugin_pool.register_plugin +class PagePreviewPlugin(CMSPluginBase): + model = PagePreviewCMSPlugin + module = _("Elements") + name = _("Page Preview") + render_template = "fds_cms/page_preview.html" + + def render(self, context, instance, placeholder): + page = instance.page + context["page"] = page + + try: + context["image"] = page.fdspageextension.image + except Page.fdspageextension.RelatedObjectDoesNotExist: + context["image"] = None + print("NO IMAGE") + + context["title"] = page.get_title() + context["description"] = page.get_meta_description() + + return super().render(context, instance, placeholder) diff --git a/fragdenstaat_de/fds_cms/migrations/0072_pagepreviewcmsplugin.py b/fragdenstaat_de/fds_cms/migrations/0072_pagepreviewcmsplugin.py new file mode 100644 index 000000000..649370acf --- /dev/null +++ b/fragdenstaat_de/fds_cms/migrations/0072_pagepreviewcmsplugin.py @@ -0,0 +1,43 @@ +# Generated by Django 4.2.16 on 2025-03-10 13:42 + +import cms.models.fields +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import filer.fields.image + + +class Migration(migrations.Migration): + + dependencies = [ + ("cms", "0035_auto_20230822_2208_squashed_0036_auto_20240311_1028"), + migrations.swappable_dependency(settings.FILER_IMAGE_MODEL), + ("fds_cms", "0071_datashowtablecmsplugin_datashowdatasettheme"), + ] + + operations = [ + migrations.CreateModel( + name="PagePreviewCMSPlugin", + fields=[ + ( + "cmsplugin_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + related_name="%(app_label)s_%(class)s", + serialize=False, + to="cms.cmsplugin", + ), + ), + ( + "page", + cms.models.fields.PageField( + on_delete=django.db.models.deletion.CASCADE, to="cms.page" + ), + ), + ], + bases=("cms.cmsplugin",), + ), + ] diff --git a/fragdenstaat_de/fds_cms/models.py b/fragdenstaat_de/fds_cms/models.py index 2bae2f2c8..d175438c1 100644 --- a/fragdenstaat_de/fds_cms/models.py +++ b/fragdenstaat_de/fds_cms/models.py @@ -717,3 +717,10 @@ class DatashowTableCMSPlugin(CMSPlugin): def __str__(self): return self.table.label + + +class PagePreviewCMSPlugin(CMSPlugin): + page = PageField() + + def __str__(self): + return str(self.page) diff --git a/fragdenstaat_de/fds_cms/templates/fds_cms/page_preview.html b/fragdenstaat_de/fds_cms/templates/fds_cms/page_preview.html new file mode 100644 index 000000000..476d88f0a --- /dev/null +++ b/fragdenstaat_de/fds_cms/templates/fds_cms/page_preview.html @@ -0,0 +1,17 @@ +
+ {% if image %} + + {% include "fds_blog/includes/blog_picture.html" with picture=image columns="col-12 col-md-10 col-lg-8" %} + + {% endif %} +
+
+

+ {{ title }} +

+
+
+

{{ description }}

+
+
+