From c5f0fb933b83aa14a7c4b9375afeb1b5e831e056 Mon Sep 17 00:00:00 2001 From: Ondrej Rehounek <ondra.rehounek@seznam.cz> Date: Tue, 9 Aug 2022 20:32:12 +0200 Subject: [PATCH] main: WIP models --- main/blocks.py | 25 ++++++++++++++++++++++- main/models.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 75 insertions(+), 5 deletions(-) diff --git a/main/blocks.py b/main/blocks.py index 9ed29dac..4a6e4c51 100644 --- a/main/blocks.py +++ b/main/blocks.py @@ -1,3 +1,5 @@ +from wagtail.core.blocks import CharBlock, PageChooserBlock, StructBlock, URLBlock + # HomePageCarouselBlock # RecentWork/TweetsBlock # NewsBlock @@ -7,6 +9,27 @@ # WorkTimelineBlock # ArticleLinkBlock # ProgramBlock -# PersonBlock + + +class PersonContactBlock(StructBlock): + position = CharBlock(label="Název pozice", required=False) + # email, phone? + person = PageChooserBlock( + label="Osoba", + page_type=["district.DistrictPersonPage"], + ) + + class Meta: + icon = "user" + label = "Osoba s volitelnou pozicí" + + +class PersonContactBoxBlock(StructBlock): + title = CharBlock(label="Titulek") + subtitle = CharBlock(label="Podtitulek") + button_link = URLBlock() + button_text = CharBlock(label="Text tlačítka") + + # TwitterCarouselBlock # ContactBlock diff --git a/main/models.py b/main/models.py index 2cd88595..b3ca1b52 100644 --- a/main/models.py +++ b/main/models.py @@ -1,15 +1,20 @@ from django.db import models from django.shortcuts import render from wagtail.admin.edit_handlers import FieldPanel, ObjectList, TabbedInterface +from wagtail.core.fields import RichTextField, StreamField from wagtail.core.models import Page from wagtailmetadata.models import MetadataPageMixin -from shared.models import ( # ArticleMixin,; ExtendedMetadataPageMixin,; SubpageMixin, +from shared.const import RICH_TEXT_DEFAULT_FEATURES +from shared.models import ( ExtendedMetadataHomePageMixin, + ExtendedMetadataPageMixin, MenuMixin, + SubpageMixin, ) +from shared.utils import make_promote_panels -# from . import blocks +from . import blocks class MainHomePage(MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin, Page): @@ -20,7 +25,11 @@ class MainHomePage(MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin, ) # header - fb, twitter, insta, youtube, dary, nalodeni - # footer - stream field loadovany pres page.root_page? + footer = StreamField( + [("item", blocks.PersonContactBlock())], + verbose_name="Kontaktní boxy", + blank=True, + ) settings_panels = [FieldPanel("matomo_id")] @@ -41,7 +50,7 @@ class MainHomePage(MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin, # MainProgramPage # MainPeoplePage # MainPersonPage - # MainContactPage + "main.MainContactPage" ] ### OTHERS @@ -56,3 +65,41 @@ class MainHomePage(MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin, @property def root_page(self): return self + + +class MainContactPage(ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page): + ### FIELDS + + contact_people = StreamField( + [("item", blocks.PersonContactBlock())], + verbose_name="Kontaktní osoby", + blank=True, + ) + contact_boxes = StreamField( + [("item", blocks.PersonContactBlock())], + verbose_name="Kontaktní boxy", + blank=True, + ) + text = RichTextField("Text", blank=True, features=RICH_TEXT_DEFAULT_FEATURES) + + ### PANELS + + content_panels = Page.content_panels + [ + FieldPanel("contact_people"), + FieldPanel("contact_boxes"), + FieldPanel("text"), + ] + + promote_panels = make_promote_panels() + + settings_panels = [] + + ### RELATIONS + + parent_page_types = ["main.MainHomePage"] + subpage_types = [] + + ### OTHERS + + class Meta: + verbose_name = "Kontakty" -- GitLab