from django.db import models from modelcluster.fields import ParentalKey from wagtail.admin.panels import FieldPanel, InlinePanel, ObjectList, TabbedInterface from wagtail.contrib.forms.models import AbstractForm, AbstractFormField from wagtail.contrib.forms.panels import FormSubmissionsPanel from wagtail.fields import StreamField from wagtail.models import Page from wagtailmetadata.models import MetadataPageMixin from shared.models import ExtendedMetadataHomePageMixin from shared_legacy.utils import make_promote_panels from .blocks import CommonWishBlock, StatBlock, TourDateBlock class MakeAWIshFormField(AbstractFormField): page = ParentalKey( "MakeAWishRoot", on_delete=models.CASCADE, related_name="form_fields" ) class MakeAWishRoot( AbstractForm, ExtendedMetadataHomePageMixin, MetadataPageMixin, Page ): main_text = models.TextField(verbose_name="Hlavní text") success_text = models.TextField(verbose_name="Text po odeslání formuláře") header_image = models.ForeignKey( "wagtailimages.Image", on_delete=models.PROTECT, blank=True, null=True, related_name="+", verbose_name="Obrázek v headeru", ) new_wish_image = models.ForeignKey( "wagtailimages.Image", on_delete=models.PROTECT, blank=True, null=True, related_name="+", verbose_name="Obrázek k novému přání", ) video_url = models.URLField( verbose_name="URL Videa vpravo", help_text="Automaticky se spustí bez zvuku" ) common_wishes = StreamField( [("wish", CommonWishBlock())], verbose_name="Nejčastější přání" ) tour_dates = StreamField( [("tour_date", TourDateBlock())], verbose_name="Tour termíny" ) stats = StreamField([("stat", StatBlock())], verbose_name="Statistiky") matomo_id = models.IntegerField( "Matomo ID pro sledování návštěvnosti", blank=True, null=True ) content_panels = Page.content_panels + [ FieldPanel("main_text"), FieldPanel("success_text"), FieldPanel("header_image"), FieldPanel("new_wish_image"), FieldPanel("video_url"), FieldPanel("common_wishes"), FieldPanel("tour_dates"), FieldPanel("stats"), InlinePanel("form_fields", label="Formulář - neměnit!!"), ] promote_panels = make_promote_panels() + [FieldPanel("matomo_id")] submissions_panels = [FormSubmissionsPanel()] edit_handler = TabbedInterface( [ ObjectList(content_panels, heading="Obsah"), ObjectList(promote_panels, heading="Metadata"), ObjectList(submissions_panels, heading="Data z formuláře"), ] ) class Meta: verbose_name = "Máte přání"