Skip to content
Snippets Groups Projects
Commit b6b5ffe0 authored by xaralis's avatar xaralis Committed by jan.bednarik
Browse files

feat: add support for metadata page title suffix

This allows one to set title suffix on the HomePage class, e.g. 'MS
Pardubice | Piráti'. This suffix will then be automatically used for subpages too, e.g.
'[subpage title] | MS Pardubice | Piráti'.
parent ed5248ce
Branches
No related tags found
2 merge requests!480Release,!477feat: add support for metadata page title suffix
Pipeline #7769 passed
Showing
with 505 additions and 73 deletions
# Generated by Django 4.0.3 on 2022-04-27 13:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("czech_inspirational", "0006_czechinspirationalchapterpage_extra_text"),
]
operations = [
migrations.AddField(
model_name="czechinspirationalhomepage",
name="title_suffix",
field=models.CharField(
blank=True,
help_text="Umožňuje přidat příponu k základnímu titulku stránky. Pokud je např. titulek stránky pojmenovaný 'Kontakt' a do přípony vyplníte 'MS Pardubice | Piráti', výsledný titulek bude 'Kontakt | MS Pardubice | Piráti'. Pokud příponu nevyplníte, použije se název webu.",
max_length=100,
null=True,
verbose_name="Přípona titulku stránky",
),
),
]
...@@ -15,13 +15,19 @@ from wagtail.documents.edit_handlers import DocumentChooserPanel ...@@ -15,13 +15,19 @@ from wagtail.documents.edit_handlers import DocumentChooserPanel
from wagtail.images.edit_handlers import ImageChooserPanel from wagtail.images.edit_handlers import ImageChooserPanel
from wagtailmetadata.models import MetadataPageMixin from wagtailmetadata.models import MetadataPageMixin
from shared.models import SubpageMixin from shared.models import (
ExtendedMetadataHomePageMixin,
ExtendedMetadataPageMixin,
SubpageMixin,
)
from shared.utils import subscribe_to_newsletter from shared.utils import subscribe_to_newsletter
from tuning import admin_help from tuning import admin_help
from uniweb.constants import RICH_TEXT_FEATURES from uniweb.constants import RICH_TEXT_FEATURES
class CzechInspirationalHomePage(Page, MetadataPageMixin): class CzechInspirationalHomePage(
Page, ExtendedMetadataHomePageMixin, MetadataPageMixin
):
### FIELDS ### FIELDS
buy_book_url = models.URLField("URL pro nákup knihy", blank=True, null=True) buy_book_url = models.URLField("URL pro nákup knihy", blank=True, null=True)
...@@ -53,6 +59,7 @@ class CzechInspirationalHomePage(Page, MetadataPageMixin): ...@@ -53,6 +59,7 @@ class CzechInspirationalHomePage(Page, MetadataPageMixin):
MultiFieldPanel( MultiFieldPanel(
[ [
FieldPanel("matomo_id"), FieldPanel("matomo_id"),
FieldPanel("title_suffix"),
], ],
"nastavení webu", "nastavení webu",
), ),
...@@ -113,7 +120,9 @@ class CzechInspirationalHomePage(Page, MetadataPageMixin): ...@@ -113,7 +120,9 @@ class CzechInspirationalHomePage(Page, MetadataPageMixin):
return context return context
class CzechInspirationalChaptersPage(Page, SubpageMixin, MetadataPageMixin): class CzechInspirationalChaptersPage(
Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
):
### FIELDS ### FIELDS
### PANELS ### PANELS
...@@ -158,7 +167,9 @@ class CzechInspirationalChaptersPage(Page, SubpageMixin, MetadataPageMixin): ...@@ -158,7 +167,9 @@ class CzechInspirationalChaptersPage(Page, SubpageMixin, MetadataPageMixin):
return context return context
class CzechInspirationalChapterPage(Page, SubpageMixin, MetadataPageMixin): class CzechInspirationalChapterPage(
Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
):
### FIELDS ### FIELDS
number = models.IntegerField("číslo kapitoly", default=0) number = models.IntegerField("číslo kapitoly", default=0)
...@@ -225,7 +236,9 @@ class CzechInspirationalChapterPage(Page, SubpageMixin, MetadataPageMixin): ...@@ -225,7 +236,9 @@ class CzechInspirationalChapterPage(Page, SubpageMixin, MetadataPageMixin):
return context return context
class CzechInspirationalDownloadPage(Page, SubpageMixin, MetadataPageMixin): class CzechInspirationalDownloadPage(
Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
):
### FIELDS ### FIELDS
book_file = models.ForeignKey( book_file = models.ForeignKey(
......
# Generated by Django 4.0.3 on 2022-04-27 12:59
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("district", "0059_alter_districtprogrampage_content"),
]
operations = [
migrations.AddField(
model_name="districthomepage",
name="title_suffix",
field=models.CharField(
blank=True,
help_text="Umožňuje přidat příponu k základnímu titulku stránky. Pokud je např. titulek stránky pojmenovaný 'Kontakt' a do přípony vyplníte 'MS Pardubice | Piráti', výsledný titulek bude 'Kontakt | MS Pardubice | Piráti'. Pokud příponu nevyplníte, použije se název webu.",
max_length=100,
null=True,
verbose_name="Přípona titulku stránky",
),
),
]
...@@ -26,7 +26,13 @@ from wagtail.images.edit_handlers import ImageChooserPanel ...@@ -26,7 +26,13 @@ from wagtail.images.edit_handlers import ImageChooserPanel
from wagtailmetadata.models import MetadataPageMixin from wagtailmetadata.models import MetadataPageMixin
from calendar_utils.models import CalendarMixin from calendar_utils.models import CalendarMixin
from shared.models import ArticleMixin, MenuMixin, SubpageMixin from shared.models import (
ArticleMixin,
ExtendedMetadataHomePageMixin,
ExtendedMetadataPageMixin,
MenuMixin,
SubpageMixin,
)
from shared.utils import make_promote_panels from shared.utils import make_promote_panels
from tuning import admin_help from tuning import admin_help
from uniweb.constants import RICH_TEXT_FEATURES from uniweb.constants import RICH_TEXT_FEATURES
...@@ -35,7 +41,9 @@ from . import blocks ...@@ -35,7 +41,9 @@ from . import blocks
from .forms import JekyllImportForm from .forms import JekyllImportForm
class DistrictHomePage(MenuMixin, MetadataPageMixin, CalendarMixin, Page): class DistrictHomePage(
MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin, CalendarMixin, Page
):
### FIELDS ### FIELDS
subheader = StreamField( subheader = StreamField(
...@@ -188,6 +196,7 @@ class DistrictHomePage(MenuMixin, MetadataPageMixin, CalendarMixin, Page): ...@@ -188,6 +196,7 @@ class DistrictHomePage(MenuMixin, MetadataPageMixin, CalendarMixin, Page):
settings_panels = [ settings_panels = [
ImageChooserPanel("custom_logo"), ImageChooserPanel("custom_logo"),
FieldPanel("matomo_id"), FieldPanel("matomo_id"),
FieldPanel("title_suffix"),
MultiFieldPanel( MultiFieldPanel(
[ [
FieldPanel("show_pirati_cz_link"), FieldPanel("show_pirati_cz_link"),
...@@ -327,7 +336,9 @@ class DistrictArticleTag(TaggedItemBase): ...@@ -327,7 +336,9 @@ class DistrictArticleTag(TaggedItemBase):
) )
class DistrictArticlePage(ArticleMixin, SubpageMixin, MetadataPageMixin, Page): class DistrictArticlePage(
ArticleMixin, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
author_page = models.ForeignKey( author_page = models.ForeignKey(
...@@ -370,7 +381,9 @@ class DistrictArticlePage(ArticleMixin, SubpageMixin, MetadataPageMixin, Page): ...@@ -370,7 +381,9 @@ class DistrictArticlePage(ArticleMixin, SubpageMixin, MetadataPageMixin, Page):
return context return context
class DistrictArticlesPage(SubpageMixin, MetadataPageMixin, Page): class DistrictArticlesPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
last_import_log = models.TextField( last_import_log = models.TextField(
...@@ -442,7 +455,9 @@ class DistrictArticlesPage(SubpageMixin, MetadataPageMixin, Page): ...@@ -442,7 +455,9 @@ class DistrictArticlesPage(SubpageMixin, MetadataPageMixin, Page):
return context return context
class DistrictContactPage(SubpageMixin, MetadataPageMixin, Page): class DistrictContactPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
contact_people = StreamField( contact_people = StreamField(
...@@ -474,7 +489,9 @@ class DistrictContactPage(SubpageMixin, MetadataPageMixin, Page): ...@@ -474,7 +489,9 @@ class DistrictContactPage(SubpageMixin, MetadataPageMixin, Page):
verbose_name = "Kontakty" verbose_name = "Kontakty"
class DistrictTagsPage(SubpageMixin, MetadataPageMixin, Page): class DistrictTagsPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### PANELS ### PANELS
promote_panels = make_promote_panels() promote_panels = make_promote_panels()
...@@ -568,7 +585,9 @@ class DistrictPersonPageForm(WagtailAdminPageForm): ...@@ -568,7 +585,9 @@ class DistrictPersonPageForm(WagtailAdminPageForm):
return cleaned_data return cleaned_data
class DistrictPersonPage(SubpageMixin, MetadataPageMixin, Page): class DistrictPersonPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
base_form_class = DistrictPersonPageForm base_form_class = DistrictPersonPageForm
...@@ -696,7 +715,9 @@ class DistrictPersonPage(SubpageMixin, MetadataPageMixin, Page): ...@@ -696,7 +715,9 @@ class DistrictPersonPage(SubpageMixin, MetadataPageMixin, Page):
return context return context
class DistrictPeoplePage(SubpageMixin, MetadataPageMixin, Page): class DistrictPeoplePage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
content = StreamField( content = StreamField(
...@@ -724,7 +745,9 @@ class DistrictPeoplePage(SubpageMixin, MetadataPageMixin, Page): ...@@ -724,7 +745,9 @@ class DistrictPeoplePage(SubpageMixin, MetadataPageMixin, Page):
verbose_name = "Lidé" verbose_name = "Lidé"
class DistrictElectionBasePage(SubpageMixin, MetadataPageMixin, Page): class DistrictElectionBasePage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
text = RichTextField("text", blank=True, features=RICH_TEXT_FEATURES) text = RichTextField("text", blank=True, features=RICH_TEXT_FEATURES)
...@@ -784,7 +807,9 @@ class DistrictElectionPointPage(DistrictElectionBasePage): ...@@ -784,7 +807,9 @@ class DistrictElectionPointPage(DistrictElectionBasePage):
verbose_name = "Bod programu voleb" verbose_name = "Bod programu voleb"
class DistrictElectionPage(SubpageMixin, MetadataPageMixin, Page): class DistrictElectionPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
header = StreamField( header = StreamField(
[("election_header_block", blocks.ElectionHeaderBlock())], [("election_header_block", blocks.ElectionHeaderBlock())],
...@@ -838,7 +863,9 @@ class DistrictElectionPage(SubpageMixin, MetadataPageMixin, Page): ...@@ -838,7 +863,9 @@ class DistrictElectionPage(SubpageMixin, MetadataPageMixin, Page):
return None return None
class DistrictProgramPage(SubpageMixin, MetadataPageMixin, Page): class DistrictProgramPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
perex = models.TextField("Perex", blank=True) perex = models.TextField("Perex", blank=True)
...@@ -879,7 +906,9 @@ class DistrictProgramPage(SubpageMixin, MetadataPageMixin, Page): ...@@ -879,7 +906,9 @@ class DistrictProgramPage(SubpageMixin, MetadataPageMixin, Page):
return super().save(**kwargs) return super().save(**kwargs)
class DistrictCenterPage(CalendarMixin, SubpageMixin, MetadataPageMixin, Page): class DistrictCenterPage(
CalendarMixin, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
# TODO tohle by šlo asi nahradit DistrictCustomPage # TODO tohle by šlo asi nahradit DistrictCustomPage
...@@ -947,7 +976,9 @@ class DistrictCenterPage(CalendarMixin, SubpageMixin, MetadataPageMixin, Page): ...@@ -947,7 +976,9 @@ class DistrictCenterPage(CalendarMixin, SubpageMixin, MetadataPageMixin, Page):
return self.calendar_id is not None return self.calendar_id is not None
class DistrictCrossroadPage(SubpageMixin, MetadataPageMixin, Page): class DistrictCrossroadPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
...@@ -1000,7 +1031,9 @@ class DistrictCrossroadPage(SubpageMixin, MetadataPageMixin, Page): ...@@ -1000,7 +1031,9 @@ class DistrictCrossroadPage(SubpageMixin, MetadataPageMixin, Page):
verbose_name = "Rozcestník s kartami" verbose_name = "Rozcestník s kartami"
class DistrictCustomPage(SubpageMixin, MetadataPageMixin, Page): class DistrictCustomPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
......
# Generated by Django 4.0.3 on 2022-04-27 13:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("districts", "0001_initial"),
]
operations = [
migrations.AddField(
model_name="districtshomepage",
name="title_suffix",
field=models.CharField(
blank=True,
help_text="Umožňuje přidat příponu k základnímu titulku stránky. Pokud je např. titulek stránky pojmenovaný 'Kontakt' a do přípony vyplníte 'MS Pardubice | Piráti', výsledný titulek bude 'Kontakt | MS Pardubice | Piráti'. Pokud příponu nevyplníte, použije se název webu.",
max_length=100,
null=True,
verbose_name="Přípona titulku stránky",
),
),
]
...@@ -10,10 +10,11 @@ from wagtail.core.models import Page ...@@ -10,10 +10,11 @@ from wagtail.core.models import Page
from wagtail.images.edit_handlers import ImageChooserPanel from wagtail.images.edit_handlers import ImageChooserPanel
from wagtailmetadata.models import MetadataPageMixin from wagtailmetadata.models import MetadataPageMixin
from shared.models import ExtendedMetadataHomePageMixin
from tuning import admin_help from tuning import admin_help
class DistrictsHomePage(MetadataPageMixin, Page): class DistrictsHomePage(ExtendedMetadataHomePageMixin, MetadataPageMixin, Page):
### FIELDS ### FIELDS
matomo_id = models.IntegerField( matomo_id = models.IntegerField(
...@@ -34,7 +35,11 @@ class DistrictsHomePage(MetadataPageMixin, Page): ...@@ -34,7 +35,11 @@ class DistrictsHomePage(MetadataPageMixin, Page):
), ),
] ]
settings_panels = [FieldPanel("matomo_id"), CommentPanel()] settings_panels = [
FieldPanel("matomo_id"),
FieldPanel("title_suffix"),
CommentPanel(),
]
### RELATIONS ### RELATIONS
......
# Generated by Django 4.0.3 on 2022-04-27 13:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("donate", "0016_alter_donateprojectpage_form_title"),
]
operations = [
migrations.AddField(
model_name="donatehomepage",
name="title_suffix",
field=models.CharField(
blank=True,
help_text="Umožňuje přidat příponu k základnímu titulku stránky. Pokud je např. titulek stránky pojmenovaný 'Kontakt' a do přípony vyplníte 'MS Pardubice | Piráti', výsledný titulek bude 'Kontakt | MS Pardubice | Piráti'. Pokud příponu nevyplníte, použije se název webu.",
max_length=100,
null=True,
verbose_name="Přípona titulku stránky",
),
),
]
...@@ -20,7 +20,11 @@ from wagtail.images.blocks import ImageChooserBlock ...@@ -20,7 +20,11 @@ from wagtail.images.blocks import ImageChooserBlock
from wagtail.images.edit_handlers import ImageChooserPanel from wagtail.images.edit_handlers import ImageChooserPanel
from wagtailmetadata.models import MetadataPageMixin from wagtailmetadata.models import MetadataPageMixin
from shared.models import SubpageMixin from shared.models import (
ExtendedMetadataHomePageMixin,
ExtendedMetadataPageMixin,
SubpageMixin,
)
from shared.utils import get_subpage_url, make_promote_panels from shared.utils import get_subpage_url, make_promote_panels
from tuning import admin_help from tuning import admin_help
...@@ -74,7 +78,13 @@ class DonateFormAmountsMixin(models.Model): ...@@ -74,7 +78,13 @@ class DonateFormAmountsMixin(models.Model):
abstract = True abstract = True
class DonateHomePage(DonateFormMixin, DonateFormAmountsMixin, Page, MetadataPageMixin): class DonateHomePage(
DonateFormMixin,
DonateFormAmountsMixin,
Page,
ExtendedMetadataHomePageMixin,
MetadataPageMixin,
):
### FIELDS ### FIELDS
# lead section # lead section
...@@ -147,6 +157,7 @@ class DonateHomePage(DonateFormMixin, DonateFormAmountsMixin, Page, MetadataPage ...@@ -147,6 +157,7 @@ class DonateHomePage(DonateFormMixin, DonateFormAmountsMixin, Page, MetadataPage
"sociální sítě", "sociální sítě",
), ),
FieldPanel("matomo_id"), FieldPanel("matomo_id"),
FieldPanel("title_suffix"),
MultiFieldPanel( MultiFieldPanel(
[ [
FieldPanel("portal_project_id"), FieldPanel("portal_project_id"),
...@@ -217,7 +228,9 @@ class DonateHomePage(DonateFormMixin, DonateFormAmountsMixin, Page, MetadataPage ...@@ -217,7 +228,9 @@ class DonateHomePage(DonateFormMixin, DonateFormAmountsMixin, Page, MetadataPage
return context return context
class DonateRegionIndexPage(Page, SubpageMixin, MetadataPageMixin): class DonateRegionIndexPage(
Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
):
### PANELS ### PANELS
promote_panels = make_promote_panels() promote_panels = make_promote_panels()
...@@ -244,7 +257,12 @@ class DonateRegionIndexPage(Page, SubpageMixin, MetadataPageMixin): ...@@ -244,7 +257,12 @@ class DonateRegionIndexPage(Page, SubpageMixin, MetadataPageMixin):
class DonateRegionPage( class DonateRegionPage(
DonateFormMixin, DonateFormAmountsMixin, Page, SubpageMixin, MetadataPageMixin DonateFormMixin,
DonateFormAmountsMixin,
Page,
ExtendedMetadataPageMixin,
SubpageMixin,
MetadataPageMixin,
): ):
### FIELDS ### FIELDS
...@@ -292,9 +310,6 @@ class DonateRegionPage( ...@@ -292,9 +310,6 @@ class DonateRegionPage(
class Meta: class Meta:
verbose_name = "Kraj" verbose_name = "Kraj"
def get_meta_title(self):
return self.seo_title or self.main_title
@cached_property @cached_property
def targeted_donations_page_url(self): def targeted_donations_page_url(self):
return get_subpage_url(self, DonateTargetedDonationsPage) return get_subpage_url(self, DonateTargetedDonationsPage)
...@@ -304,7 +319,9 @@ class DonateRegionPage( ...@@ -304,7 +319,9 @@ class DonateRegionPage(
return self.get_descendants().type(DonateTargetedDonationsPage).live().exists() return self.get_descendants().type(DonateTargetedDonationsPage).live().exists()
class DonateProjectIndexPage(Page, SubpageMixin, MetadataPageMixin): class DonateProjectIndexPage(
Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
):
### PANELS ### PANELS
promote_panels = make_promote_panels() promote_panels = make_promote_panels()
...@@ -345,7 +362,12 @@ class DonateProjectIndexPage(Page, SubpageMixin, MetadataPageMixin): ...@@ -345,7 +362,12 @@ class DonateProjectIndexPage(Page, SubpageMixin, MetadataPageMixin):
class DonateProjectPage( class DonateProjectPage(
DonateFormMixin, DonateFormAmountsMixin, Page, SubpageMixin, MetadataPageMixin DonateFormMixin,
DonateFormAmountsMixin,
Page,
ExtendedMetadataPageMixin,
SubpageMixin,
MetadataPageMixin,
): ):
TITLE_PROJECT = "project" TITLE_PROJECT = "project"
TITLE_CAMPAIGN = "camapign" TITLE_CAMPAIGN = "camapign"
...@@ -443,9 +465,6 @@ class DonateProjectPage( ...@@ -443,9 +465,6 @@ class DonateProjectPage(
def get_meta_image(self): def get_meta_image(self):
return self.photo return self.photo
def get_meta_title(self):
return self.seo_title or self.title
def get_meta_description(self): def get_meta_description(self):
if self.search_description: if self.search_description:
return self.search_description return self.search_description
...@@ -495,7 +514,7 @@ class DonateProjectPage( ...@@ -495,7 +514,7 @@ class DonateProjectPage(
return super().get_template(request, *args, **kwargs) return super().get_template(request, *args, **kwargs)
class DonateTextPage(Page, SubpageMixin, MetadataPageMixin): class DonateTextPage(Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin):
### FIELDS ### FIELDS
body = RichTextField("obsah", blank=True) body = RichTextField("obsah", blank=True)
...@@ -522,7 +541,9 @@ class DonateTextPage(Page, SubpageMixin, MetadataPageMixin): ...@@ -522,7 +541,9 @@ class DonateTextPage(Page, SubpageMixin, MetadataPageMixin):
verbose_name = "Stránka s textem" verbose_name = "Stránka s textem"
class DonateInfoPage(DonateFormMixin, Page, SubpageMixin, MetadataPageMixin): class DonateInfoPage(
DonateFormMixin, Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
):
### FIELDS ### FIELDS
body = RichTextField("obsah", blank=True) body = RichTextField("obsah", blank=True)
...@@ -582,7 +603,7 @@ class TargetedDonation(Orderable): ...@@ -582,7 +603,7 @@ class TargetedDonation(Orderable):
class DonateTargetedDonationsPage( class DonateTargetedDonationsPage(
DonateFormMixin, Page, SubpageMixin, MetadataPageMixin DonateFormMixin, Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
): ):
### FIELDS ### FIELDS
......
# Generated by Django 4.0.3 on 2022-04-27 13:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("green_deal", "0005_auto_20210118_0721"),
]
operations = [
migrations.AddField(
model_name="greendealhomepage",
name="title_suffix",
field=models.CharField(
blank=True,
help_text="Umožňuje přidat příponu k základnímu titulku stránky. Pokud je např. titulek stránky pojmenovaný 'Kontakt' a do přípony vyplníte 'MS Pardubice | Piráti', výsledný titulek bude 'Kontakt | MS Pardubice | Piráti'. Pokud příponu nevyplníte, použije se název webu.",
max_length=100,
null=True,
verbose_name="Přípona titulku stránky",
),
),
]
...@@ -15,6 +15,7 @@ from wagtail.images.blocks import ImageChooserBlock ...@@ -15,6 +15,7 @@ from wagtail.images.blocks import ImageChooserBlock
from wagtail.images.edit_handlers import ImageChooserPanel from wagtail.images.edit_handlers import ImageChooserPanel
from wagtailmetadata.models import MetadataPageMixin from wagtailmetadata.models import MetadataPageMixin
from shared.models import ExtendedMetadataHomePageMixin, ExtendedMetadataPageMixin
from tuning import admin_help from tuning import admin_help
RICH_TEXT_FEATURES = [ RICH_TEXT_FEATURES = [
...@@ -82,7 +83,7 @@ class StudiesBlock(blocks.StructBlock): ...@@ -82,7 +83,7 @@ class StudiesBlock(blocks.StructBlock):
icon = "doc-full" icon = "doc-full"
class GreenDealHomePage(MetadataPageMixin, Page): class GreenDealHomePage(ExtendedMetadataHomePageMixin, MetadataPageMixin, Page):
### FIELDS ### FIELDS
content = StreamField( content = StreamField(
[ [
...@@ -124,6 +125,7 @@ class GreenDealHomePage(MetadataPageMixin, Page): ...@@ -124,6 +125,7 @@ class GreenDealHomePage(MetadataPageMixin, Page):
settings_panels = [ settings_panels = [
FieldPanel("matomo_id"), FieldPanel("matomo_id"),
FieldPanel("title_suffix"),
StreamFieldPanel("top_menu"), StreamFieldPanel("top_menu"),
CommentPanel(), CommentPanel(),
] ]
...@@ -144,7 +146,7 @@ class GreenDealHomePage(MetadataPageMixin, Page): ...@@ -144,7 +146,7 @@ class GreenDealHomePage(MetadataPageMixin, Page):
return self return self
class GreenDealSubPage(Page, MetadataPageMixin): class GreenDealSubPage(Page, ExtendedMetadataPageMixin, MetadataPageMixin):
### FIELDS ### FIELDS
content = StreamField( content = StreamField(
[ [
......
# Generated by Django 4.0.3 on 2022-04-27 13:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("region", "0034_alter_regionprogrampage_content"),
]
operations = [
migrations.AddField(
model_name="regionhomepage",
name="title_suffix",
field=models.CharField(
blank=True,
help_text="Umožňuje přidat příponu k základnímu titulku stránky. Pokud je např. titulek stránky pojmenovaný 'Kontakt' a do přípony vyplníte 'MS Pardubice | Piráti', výsledný titulek bude 'Kontakt | MS Pardubice | Piráti'. Pokud příponu nevyplníte, použije se název webu.",
max_length=100,
null=True,
verbose_name="Přípona titulku stránky",
),
),
]
...@@ -26,7 +26,13 @@ from wagtail.images.edit_handlers import ImageChooserPanel ...@@ -26,7 +26,13 @@ from wagtail.images.edit_handlers import ImageChooserPanel
from wagtailmetadata.models import MetadataPageMixin from wagtailmetadata.models import MetadataPageMixin
from calendar_utils.models import CalendarMixin from calendar_utils.models import CalendarMixin
from shared.models import ArticleMixin, MenuMixin, SubpageMixin from shared.models import (
ArticleMixin,
ExtendedMetadataHomePageMixin,
ExtendedMetadataPageMixin,
MenuMixin,
SubpageMixin,
)
from shared.utils import make_promote_panels from shared.utils import make_promote_panels
from tuning import admin_help from tuning import admin_help
from uniweb.constants import RICH_TEXT_FEATURES from uniweb.constants import RICH_TEXT_FEATURES
...@@ -35,7 +41,9 @@ from . import blocks ...@@ -35,7 +41,9 @@ from . import blocks
from .forms import JekyllImportForm from .forms import JekyllImportForm
class RegionHomePage(MenuMixin, MetadataPageMixin, CalendarMixin, Page): class RegionHomePage(
MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin, CalendarMixin, Page
):
### FIELDS ### FIELDS
subheader = StreamField( subheader = StreamField(
...@@ -188,6 +196,7 @@ class RegionHomePage(MenuMixin, MetadataPageMixin, CalendarMixin, Page): ...@@ -188,6 +196,7 @@ class RegionHomePage(MenuMixin, MetadataPageMixin, CalendarMixin, Page):
settings_panels = [ settings_panels = [
ImageChooserPanel("custom_logo"), ImageChooserPanel("custom_logo"),
FieldPanel("matomo_id"), FieldPanel("matomo_id"),
FieldPanel("title_suffix"),
MultiFieldPanel( MultiFieldPanel(
[ [
FieldPanel("show_pirati_cz_link"), FieldPanel("show_pirati_cz_link"),
...@@ -317,7 +326,9 @@ class RegionArticleTag(TaggedItemBase): ...@@ -317,7 +326,9 @@ class RegionArticleTag(TaggedItemBase):
content_object = ParentalKey("region.RegionArticlePage", on_delete=models.CASCADE) content_object = ParentalKey("region.RegionArticlePage", on_delete=models.CASCADE)
class RegionArticlePage(ArticleMixin, SubpageMixin, MetadataPageMixin, Page): class RegionArticlePage(
ArticleMixin, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
author_page = models.ForeignKey( author_page = models.ForeignKey(
...@@ -360,7 +371,9 @@ class RegionArticlePage(ArticleMixin, SubpageMixin, MetadataPageMixin, Page): ...@@ -360,7 +371,9 @@ class RegionArticlePage(ArticleMixin, SubpageMixin, MetadataPageMixin, Page):
return context return context
class RegionArticlesPage(SubpageMixin, MetadataPageMixin, Page): class RegionArticlesPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
last_import_log = models.TextField( last_import_log = models.TextField(
...@@ -429,7 +442,9 @@ class RegionArticlesPage(SubpageMixin, MetadataPageMixin, Page): ...@@ -429,7 +442,9 @@ class RegionArticlesPage(SubpageMixin, MetadataPageMixin, Page):
return context return context
class RegionContactPage(SubpageMixin, MetadataPageMixin, Page): class RegionContactPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
contact_people = StreamField( contact_people = StreamField(
...@@ -461,7 +476,7 @@ class RegionContactPage(SubpageMixin, MetadataPageMixin, Page): ...@@ -461,7 +476,7 @@ class RegionContactPage(SubpageMixin, MetadataPageMixin, Page):
verbose_name = "Kontakty" verbose_name = "Kontakty"
class RegionTagsPage(SubpageMixin, MetadataPageMixin, Page): class RegionTagsPage(ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page):
### PANELS ### PANELS
promote_panels = make_promote_panels() promote_panels = make_promote_panels()
...@@ -553,7 +568,9 @@ class RegionPersonPageForm(WagtailAdminPageForm): ...@@ -553,7 +568,9 @@ class RegionPersonPageForm(WagtailAdminPageForm):
return cleaned_data return cleaned_data
class RegionPersonPage(SubpageMixin, MetadataPageMixin, Page): class RegionPersonPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
base_form_class = RegionPersonPageForm base_form_class = RegionPersonPageForm
### FIELDS ### FIELDS
...@@ -680,7 +697,9 @@ class RegionPersonPage(SubpageMixin, MetadataPageMixin, Page): ...@@ -680,7 +697,9 @@ class RegionPersonPage(SubpageMixin, MetadataPageMixin, Page):
return context return context
class RegionPeoplePage(SubpageMixin, MetadataPageMixin, Page): class RegionPeoplePage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
content = StreamField( content = StreamField(
...@@ -708,7 +727,9 @@ class RegionPeoplePage(SubpageMixin, MetadataPageMixin, Page): ...@@ -708,7 +727,9 @@ class RegionPeoplePage(SubpageMixin, MetadataPageMixin, Page):
verbose_name = "Lidé" verbose_name = "Lidé"
class RegionElectionBasePage(SubpageMixin, MetadataPageMixin, Page): class RegionElectionBasePage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
text = RichTextField("text", blank=True, features=RICH_TEXT_FEATURES) text = RichTextField("text", blank=True, features=RICH_TEXT_FEATURES)
...@@ -767,7 +788,9 @@ class RegionElectionPointPage(RegionElectionBasePage): ...@@ -767,7 +788,9 @@ class RegionElectionPointPage(RegionElectionBasePage):
verbose_name = "Bod programu voleb" verbose_name = "Bod programu voleb"
class RegionElectionPage(SubpageMixin, MetadataPageMixin, Page): class RegionElectionPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
header = StreamField( header = StreamField(
[("election_header_block", blocks.ElectionHeaderBlock())], [("election_header_block", blocks.ElectionHeaderBlock())],
...@@ -825,7 +848,9 @@ class RegionElectionPage(SubpageMixin, MetadataPageMixin, Page): ...@@ -825,7 +848,9 @@ class RegionElectionPage(SubpageMixin, MetadataPageMixin, Page):
return None return None
class RegionProgramPage(SubpageMixin, MetadataPageMixin, Page): class RegionProgramPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
perex = models.TextField("Perex", blank=True) perex = models.TextField("Perex", blank=True)
...@@ -866,7 +891,9 @@ class RegionProgramPage(SubpageMixin, MetadataPageMixin, Page): ...@@ -866,7 +891,9 @@ class RegionProgramPage(SubpageMixin, MetadataPageMixin, Page):
return super().save(**kwargs) return super().save(**kwargs)
class RegionCenterPage(CalendarMixin, SubpageMixin, MetadataPageMixin, Page): class RegionCenterPage(
CalendarMixin, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
perex = models.TextField("Perex", blank=True, null=True) perex = models.TextField("Perex", blank=True, null=True)
...@@ -933,7 +960,9 @@ class RegionCenterPage(CalendarMixin, SubpageMixin, MetadataPageMixin, Page): ...@@ -933,7 +960,9 @@ class RegionCenterPage(CalendarMixin, SubpageMixin, MetadataPageMixin, Page):
return self.calendar_id is not None return self.calendar_id is not None
class RegionCrossroadPage(SubpageMixin, MetadataPageMixin, Page): class RegionCrossroadPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
...@@ -986,7 +1015,9 @@ class RegionCrossroadPage(SubpageMixin, MetadataPageMixin, Page): ...@@ -986,7 +1015,9 @@ class RegionCrossroadPage(SubpageMixin, MetadataPageMixin, Page):
verbose_name = "Rozcestník s kartami" verbose_name = "Rozcestník s kartami"
class RegionCustomPage(SubpageMixin, MetadataPageMixin, Page): class RegionCustomPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
......
# Generated by Django 4.0.3 on 2022-04-27 13:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("regulace_konopi", "0008_auto_20210118_1259"),
]
operations = [
migrations.AddField(
model_name="regkonhomepage",
name="title_suffix",
field=models.CharField(
blank=True,
help_text="Umožňuje přidat příponu k základnímu titulku stránky. Pokud je např. titulek stránky pojmenovaný 'Kontakt' a do přípony vyplníte 'MS Pardubice | Piráti', výsledný titulek bude 'Kontakt | MS Pardubice | Piráti'. Pokud příponu nevyplníte, použije se název webu.",
max_length=100,
null=True,
verbose_name="Přípona titulku stránky",
),
),
]
...@@ -14,6 +14,7 @@ from wagtail.images.blocks import ImageChooserBlock ...@@ -14,6 +14,7 @@ from wagtail.images.blocks import ImageChooserBlock
from wagtail.images.edit_handlers import ImageChooserPanel from wagtail.images.edit_handlers import ImageChooserPanel
from wagtailmetadata.models import MetadataPageMixin from wagtailmetadata.models import MetadataPageMixin
from shared.models import ExtendedMetadataHomePageMixin, ExtendedMetadataPageMixin
from tuning import admin_help from tuning import admin_help
SUPPORT_CHOICES = ((1, "Pro"), (0, "Proti"), (-1, "Nevíme")) SUPPORT_CHOICES = ((1, "Pro"), (0, "Proti"), (-1, "Nevíme"))
...@@ -75,7 +76,7 @@ class ThreeColumnsBlock(blocks.StructBlock): ...@@ -75,7 +76,7 @@ class ThreeColumnsBlock(blocks.StructBlock):
second_column = blocks.RichTextBlock(features=RICH_TEXT_FEATURES) second_column = blocks.RichTextBlock(features=RICH_TEXT_FEATURES)
class RegkonHomePage(MetadataPageMixin, Page): class RegkonHomePage(ExtendedMetadataHomePageMixin, MetadataPageMixin, Page):
### FIELDS ### FIELDS
content = StreamField( content = StreamField(
[ [
...@@ -137,6 +138,7 @@ class RegkonHomePage(MetadataPageMixin, Page): ...@@ -137,6 +138,7 @@ class RegkonHomePage(MetadataPageMixin, Page):
settings_panels = [ settings_panels = [
FieldPanel("matomo_id"), FieldPanel("matomo_id"),
FieldPanel("title_suffix"),
StreamFieldPanel("top_menu"), StreamFieldPanel("top_menu"),
CommentPanel(), CommentPanel(),
] ]
...@@ -157,7 +159,7 @@ class RegkonHomePage(MetadataPageMixin, Page): ...@@ -157,7 +159,7 @@ class RegkonHomePage(MetadataPageMixin, Page):
return self return self
class RegkonSubPage(Page, MetadataPageMixin): class RegkonSubPage(Page, ExtendedMetadataPageMixin, MetadataPageMixin):
### FIELDS ### FIELDS
content = StreamField( content = StreamField(
......
# Generated by Django 4.0.3 on 2022-04-27 13:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("senat_campaign", "0007_auto_20200603_1815"),
]
operations = [
migrations.AddField(
model_name="senatcampaignhomepage",
name="title_suffix",
field=models.CharField(
blank=True,
help_text="Umožňuje přidat příponu k základnímu titulku stránky. Pokud je např. titulek stránky pojmenovaný 'Kontakt' a do přípony vyplníte 'MS Pardubice | Piráti', výsledný titulek bude 'Kontakt | MS Pardubice | Piráti'. Pokud příponu nevyplníte, použije se název webu.",
max_length=100,
null=True,
verbose_name="Přípona titulku stránky",
),
),
]
...@@ -18,7 +18,11 @@ from wagtail.images.edit_handlers import ImageChooserPanel ...@@ -18,7 +18,11 @@ from wagtail.images.edit_handlers import ImageChooserPanel
from wagtailmetadata.models import MetadataPageMixin from wagtailmetadata.models import MetadataPageMixin
from calendar_utils.models import CalendarMixin from calendar_utils.models import CalendarMixin
from shared.models import SubpageMixin from shared.models import (
ExtendedMetadataHomePageMixin,
ExtendedMetadataPageMixin,
SubpageMixin,
)
from tuning import admin_help from tuning import admin_help
HELP_COMBINED_TITLE = ( HELP_COMBINED_TITLE = (
...@@ -27,13 +31,6 @@ HELP_COMBINED_TITLE = ( ...@@ -27,13 +31,6 @@ HELP_COMBINED_TITLE = (
) )
class MetaMixin:
def get_meta_title(self):
if self.seo_title:
return self.seo_title
return f"{self.title} | {self.root_page.full_name}"
class ContactBlock(blocks.StructBlock): class ContactBlock(blocks.StructBlock):
name = blocks.CharBlock(label="jméno") name = blocks.CharBlock(label="jméno")
job = blocks.CharBlock(label="pozice", required=False) job = blocks.CharBlock(label="pozice", required=False)
...@@ -46,7 +43,9 @@ class ContactBlock(blocks.StructBlock): ...@@ -46,7 +43,9 @@ class ContactBlock(blocks.StructBlock):
label = "kontaktní osoba" label = "kontaktní osoba"
class SenatCampaignHomePage(Page, MetadataPageMixin, CalendarMixin): class SenatCampaignHomePage(
Page, ExtendedMetadataHomePageMixin, MetadataPageMixin, CalendarMixin
):
### FIELDS ### FIELDS
# top section # top section
...@@ -182,6 +181,7 @@ class SenatCampaignHomePage(Page, MetadataPageMixin, CalendarMixin): ...@@ -182,6 +181,7 @@ class SenatCampaignHomePage(Page, MetadataPageMixin, CalendarMixin):
), ),
FieldPanel("calendar_url"), FieldPanel("calendar_url"),
FieldPanel("matomo_id"), FieldPanel("matomo_id"),
FieldPanel("title_suffix"),
StreamFieldPanel("contacts"), StreamFieldPanel("contacts"),
CommentPanel(), CommentPanel(),
] ]
...@@ -280,7 +280,9 @@ class SenatCampaignHomePage(Page, MetadataPageMixin, CalendarMixin): ...@@ -280,7 +280,9 @@ class SenatCampaignHomePage(Page, MetadataPageMixin, CalendarMixin):
return context return context
class SenatCampaignNewsIndexPage(Page, SubpageMixin, MetaMixin, MetadataPageMixin): class SenatCampaignNewsIndexPage(
Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
):
### FIELDS ### FIELDS
### PANELS ### PANELS
...@@ -334,7 +336,9 @@ class SenatCampaignNewsIndexPage(Page, SubpageMixin, MetaMixin, MetadataPageMixi ...@@ -334,7 +336,9 @@ class SenatCampaignNewsIndexPage(Page, SubpageMixin, MetaMixin, MetadataPageMixi
return context return context
class SenatCampaignNewsPage(Page, SubpageMixin, MetaMixin, MetadataPageMixin): class SenatCampaignNewsPage(
Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
):
### FIELDS ### FIELDS
date = models.DateField("datum") date = models.DateField("datum")
...@@ -430,7 +434,9 @@ class ProgramBlock(blocks.StructBlock): ...@@ -430,7 +434,9 @@ class ProgramBlock(blocks.StructBlock):
label = "programový bod" label = "programový bod"
class SenatCampaignProgramPage(Page, SubpageMixin, MetaMixin, MetadataPageMixin): class SenatCampaignProgramPage(
Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
):
### FIELDS ### FIELDS
committee_preference = StreamField( committee_preference = StreamField(
...@@ -480,7 +486,9 @@ class SenatCampaignProgramPage(Page, SubpageMixin, MetaMixin, MetadataPageMixin) ...@@ -480,7 +486,9 @@ class SenatCampaignProgramPage(Page, SubpageMixin, MetaMixin, MetadataPageMixin)
verbose_name = "Program" verbose_name = "Program"
class SenatCampaignCookiesPage(Page, SubpageMixin, MetaMixin, MetadataPageMixin): class SenatCampaignCookiesPage(
Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
):
### FIELDS ### FIELDS
body = RichTextField("obsah", blank=True) body = RichTextField("obsah", blank=True)
......
import logging
from django.db import models from django.db import models
from django.utils import timezone from django.utils import timezone
from wagtail.admin.edit_handlers import ( from wagtail.admin.edit_handlers import (
...@@ -18,6 +20,8 @@ from shared.blocks import ( ...@@ -18,6 +20,8 @@ from shared.blocks import (
YouTubeVideoBlock, YouTubeVideoBlock,
) )
logger = logging.getLogger(__name__)
class SubpageMixin: class SubpageMixin:
"""Must be used in class definition before MetadataPageMixin!""" """Must be used in class definition before MetadataPageMixin!"""
...@@ -138,3 +142,84 @@ class MenuMixin(Page): ...@@ -138,3 +142,84 @@ class MenuMixin(Page):
class Meta: class Meta:
abstract = True abstract = True
class ExtendedMetadataHomePageMixin(models.Model):
"""Use for site home page to define metadata title suffix.
Must be used in class definition before MetadataPageMixin!
"""
title_suffix = models.CharField(
"Přípona titulku stránky",
max_length=100,
blank=True,
null=True,
help_text="Umožňuje přidat příponu k základnímu titulku stránky. Pokud "
"je např. titulek stránky pojmenovaný 'Kontakt' a do přípony vyplníte "
"'MS Pardubice | Piráti', výsledný titulek bude "
"'Kontakt | MS Pardubice | Piráti'. Pokud příponu nevyplníte, použije "
"se název webu.",
)
class Meta:
abstract = True
def get_meta_title_suffix(self):
if self.title_suffix:
return self.title_suffix
if hasattr(super(), "get_meta_title"):
return super().get_meta_title()
return self.get_site().site_name
def get_meta_title(self):
title = super().get_meta_title()
suffix = self.get_meta_title_suffix()
# Covers scenario when title_suffix is not set and evaluates to super().get_meta_title() value.
# Rather than having MS Pardubice | MS Pardubice, just use MS Pardubice alone.
if title != suffix:
return f"{super().get_meta_title()} | {self.get_meta_title_suffix()}"
return title
class ExtendedMetadataPageMixin(models.Model):
"""Use for pages except for home page to use shared metadata title suffix.
There are few rules on how to use this:
- Do not forget to list ExtendedMetadataHomePageMixin among ancestors of the related HomePage class.
- Must be used in class definition before MetadataPageMixin.
- Expects SubpageMixin or equivalent exposing `root_page` property to be used for the page too.
"""
class Meta:
abstract = True
def get_meta_title_suffix(self):
if not hasattr(self, "root_page"):
logger.warning(
"Using `ExtendedMetadataPageMixin` without `SubpageMixin` for %s",
repr(self),
)
return None
if not hasattr(self.root_page, "get_meta_title_suffix"):
logger.warning(
"Using `ExtendedMetadataPageMixin` without `ExtendedMetadataHomePageMixin` on the root page for %s",
repr(self),
)
return None
return self.root_page.get_meta_title_suffix()
def get_meta_title(self):
suffix = self.get_meta_title_suffix()
if not suffix:
return super().get_meta_title()
return f"{super().get_meta_title()} | {self.get_meta_title_suffix()}"
# Generated by Django 4.0.3 on 2022-04-27 13:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("uniweb", "0024_alter_uniwebarticlepage_content"),
]
operations = [
migrations.AddField(
model_name="uniwebhomepage",
name="title_suffix",
field=models.CharField(
blank=True,
help_text="Umožňuje přidat příponu k základnímu titulku stránky. Pokud je např. titulek stránky pojmenovaný 'Kontakt' a do přípony vyplníte 'MS Pardubice | Piráti', výsledný titulek bude 'Kontakt | MS Pardubice | Piráti'. Pokud příponu nevyplníte, použije se název webu.",
max_length=100,
null=True,
verbose_name="Přípona titulku stránky",
),
),
]
...@@ -26,7 +26,12 @@ from wagtail.images.blocks import ImageChooserBlock ...@@ -26,7 +26,12 @@ from wagtail.images.blocks import ImageChooserBlock
from wagtailmetadata.models import MetadataPageMixin from wagtailmetadata.models import MetadataPageMixin
from calendar_utils.models import CalendarMixin from calendar_utils.models import CalendarMixin
from shared.models import ArticleMixin, SubpageMixin from shared.models import (
ArticleMixin,
ExtendedMetadataHomePageMixin,
ExtendedMetadataPageMixin,
SubpageMixin,
)
from shared.utils import make_promote_panels from shared.utils import make_promote_panels
from tuning import admin_help from tuning import admin_help
...@@ -285,7 +290,9 @@ class UniwebArticleTag(TaggedItemBase): ...@@ -285,7 +290,9 @@ class UniwebArticleTag(TaggedItemBase):
content_object = ParentalKey("uniweb.UniwebArticlePage", on_delete=models.CASCADE) content_object = ParentalKey("uniweb.UniwebArticlePage", on_delete=models.CASCADE)
class UniwebHomePage(Page, MetadataPageMixin, CalendarMixin): class UniwebHomePage(
Page, ExtendedMetadataHomePageMixin, MetadataPageMixin, CalendarMixin
):
### FIELDS ### FIELDS
content = StreamField( content = StreamField(
...@@ -330,6 +337,7 @@ class UniwebHomePage(Page, MetadataPageMixin, CalendarMixin): ...@@ -330,6 +337,7 @@ class UniwebHomePage(Page, MetadataPageMixin, CalendarMixin):
MultiFieldPanel( MultiFieldPanel(
[ [
FieldPanel("matomo_id"), FieldPanel("matomo_id"),
FieldPanel("title_suffix"),
FieldPanel("narrow_layout"), FieldPanel("narrow_layout"),
], ],
"nastavení webu", "nastavení webu",
...@@ -380,7 +388,9 @@ class UniwebHomePage(Page, MetadataPageMixin, CalendarMixin): ...@@ -380,7 +388,9 @@ class UniwebHomePage(Page, MetadataPageMixin, CalendarMixin):
return self.calendar_id is not None return self.calendar_id is not None
class UniwebFlexiblePage(Page, SubpageMixin, MetadataPageMixin): class UniwebFlexiblePage(
Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
):
### FIELDS ### FIELDS
content = StreamField( content = StreamField(
...@@ -412,7 +422,9 @@ class UniwebFlexiblePage(Page, SubpageMixin, MetadataPageMixin): ...@@ -412,7 +422,9 @@ class UniwebFlexiblePage(Page, SubpageMixin, MetadataPageMixin):
verbose_name = "Flexibilní stránka" verbose_name = "Flexibilní stránka"
class UniwebArticlesIndexPage(Page, SubpageMixin, MetadataPageMixin): class UniwebArticlesIndexPage(
Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
):
### FIELDS ### FIELDS
### PANELS ### PANELS
...@@ -450,7 +462,9 @@ class UniwebArticlesIndexPage(Page, SubpageMixin, MetadataPageMixin): ...@@ -450,7 +462,9 @@ class UniwebArticlesIndexPage(Page, SubpageMixin, MetadataPageMixin):
return context return context
class UniwebArticlePage(ArticleMixin, SubpageMixin, MetadataPageMixin, Page): class UniwebArticlePage(
ArticleMixin, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS ### FIELDS
tags = ClusterTaggableManager(through=UniwebArticleTag, blank=True) tags = ClusterTaggableManager(through=UniwebArticleTag, blank=True)
...@@ -491,7 +505,9 @@ class UniwebFormField(AbstractFormField): ...@@ -491,7 +505,9 @@ class UniwebFormField(AbstractFormField):
) )
class UniwebFormPage(AbstractForm, SubpageMixin, MetadataPageMixin): class UniwebFormPage(
AbstractForm, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin
):
### FIELDS ### FIELDS
content_before = StreamField( content_before = StreamField(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment