from django.db import models from django.utils.translation import gettext_lazy from wagtail import blocks from wagtail.admin.panels import CommentPanel, FieldPanel, HelpPanel, MultiFieldPanel from wagtail.fields import StreamField from wagtail.images.blocks import ImageChooserBlock from wagtail.models import Page from wagtailmetadata.models import MetadataPageMixin from tuning import admin_help class PersonBlock(blocks.StructBlock): name = blocks.CharBlock(label="jméno") district = blocks.CharBlock(label="obvod") info = blocks.CharBlock(label="info o nominaci") phone = blocks.CharBlock(label="telefon", required=False) email = blocks.EmailBlock(label="email", required=False) web = blocks.URLBlock(label="web", required=False) photo = ImageChooserBlock(label="fotka") class Meta: icon = "person" label = "osoba" class SenateHomePage(MetadataPageMixin, Page): ### FIELDS senators = StreamField( [("item", PersonBlock())], verbose_name="naši senátoři", blank=True, use_json_field=True, ) candidates = StreamField( [("item", PersonBlock())], verbose_name="kandidáti", blank=True, use_json_field=True, ) candidates_second_round = StreamField( [("item", PersonBlock())], verbose_name="kandidáti do 2. kola", blank=True, use_json_field=True, ) matomo_id = models.IntegerField( "Matomo ID pro sledování návštěvnosti", blank=True, null=True ) ### PANELS content_panels = Page.content_panels + [ FieldPanel("senators"), FieldPanel("candidates"), FieldPanel("candidates_second_round"), ] promote_panels = [ MultiFieldPanel( [ FieldPanel("seo_title"), FieldPanel("search_description"), FieldPanel("search_image"), HelpPanel(admin_help.build(admin_help.IMPORTANT_TITLE)), ], gettext_lazy("Common page configuration"), ), ] settings_panels = [FieldPanel("matomo_id"), CommentPanel()] ### RELATIONS subpage_types = [] ### OTHERS class Meta: verbose_name = "Senátní rozcestník"