diff --git a/main/blocks.py b/main/blocks.py index 9ed29dac22c2026feaba0c54e3e586306581937d..4a6e4c51f58b548e75b0fb6be93ed0cd52ee1c53 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 2cd88595878892db5f17ca75424b58feaf80efa7..b3ca1b523f9ac2602fd4e726f2606a87715951fa 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"