diff --git a/home/blocks.py b/home/blocks.py index dc0c0502097a0294f7aa579825ea20b3b53d03a6..45cb876be9de312e7030e9427a0b275fd2ab3a93 100644 --- a/home/blocks.py +++ b/home/blocks.py @@ -5,6 +5,7 @@ from wagtail.blocks import ( StructBlock, TextBlock, URLBlock, + PageChooserBlock, ) from wagtail.documents.blocks import DocumentChooserBlock @@ -15,7 +16,7 @@ class PersonBlock(StructBlock): email = EmailBlock(label="E-mailová adresa", required=False) class Meta: - label = "Člověk" + label = "Osoba" template = "home/blocks/person_block.html" icon = "user" @@ -23,7 +24,7 @@ class PersonBlock(StructBlock): class DocumentBlock(StructBlock): name = CharBlock(label="Jméno") date_added = DateBlock(label="Datum přidání", required=False) - url = URLBlock(label="URL (místo dokumentu)", required=False) + page = PageChooserBlock(label="Stránka (místo dokumentu)", required=False) file = DocumentChooserBlock(label="Dokument", required=False) class Meta: @@ -34,7 +35,7 @@ class DocumentBlock(StructBlock): class EventBlock(StructBlock): name = CharBlock(label="Jméno") - url = URLBlock(label="URL") + page = PageChooserBlock(label="Stránka") date = DateBlock(label="Datum konání", required=False) location = CharBlock(label="Lokace", required=False) diff --git a/home/models.py b/home/models.py index 819e73b27c8b564f51c927b7b43cede26126fbf9..e8ccb668e1123b9878b444937191ad30e85b28a8 100644 --- a/home/models.py +++ b/home/models.py @@ -1,6 +1,6 @@ from django.db import models from django.utils import timezone -from wagtail.admin.panels import FieldPanel +from wagtail.admin.panels import FieldPanel, MultiFieldPanel from wagtail.fields import RichTextField, StreamField from wagtail.models import Page @@ -36,10 +36,10 @@ class HomePage(Page): # --- Contact info --- - address = models.CharField(verbose_name="Sídlo") - branch = models.CharField(verbose_name="Pobočka") - email = models.EmailField(verbose_name="Email") - ds_id = models.CharField(verbose_name="Datová schránka") + address = models.CharField(verbose_name="Sídlo", max_length=128) + branch = models.CharField(verbose_name="Pobočka", max_length=128) + email = models.EmailField(verbose_name="Email", max_length=128) + ds_id = models.CharField(verbose_name="Datová schránka", max_length=128) # --- People --- @@ -84,7 +84,8 @@ class HomePage(Page): ) subpage_types = [ - "home.HomeArticlesPage" + "home.HomeArticlesPage", + "home.HomeUniversalPage", ] content_panels = Page.content_panels + [ @@ -92,15 +93,25 @@ class HomePage(Page): FieldPanel("events", icon="calendar-alt"), FieldPanel("documents", icon="doc-full-inverse"), FieldPanel("donation_text", icon="pilcrow"), - FieldPanel("address", icon="home"), - FieldPanel("branch", icon="home"), - FieldPanel("email", icon="pilcrow"), - FieldPanel("ds_id", icon="mail"), - FieldPanel("director", icon="user"), - FieldPanel("controller", icon="user"), - FieldPanel("council_members", icon="group"), - FieldPanel("volunteers", icon="group"), - FieldPanel("employees", icon="group"), + MultiFieldPanel( + [ + FieldPanel("address", icon="home"), + FieldPanel("branch", icon="home"), + FieldPanel("email", icon="pilcrow"), + FieldPanel("ds_id", icon="mail"), + ], + heading="Kontaktní údaje" + ), + MultiFieldPanel( + [ + FieldPanel("director", icon="user"), + FieldPanel("controller", icon="user"), + FieldPanel("council_members", icon="group"), + FieldPanel("volunteers", icon="group"), + FieldPanel("employees", icon="group"), + ], + heading="Lidé" + ) ] @property @@ -122,6 +133,9 @@ class HomePage(Page): [:3] ) + class Meta: + verbose_name = "Domovká stránka" + class HomeArticlesPage(Page): content = RichTextField(verbose_name="Obsah", blank=True, null=True) @@ -146,14 +160,22 @@ class HomeArticlesPage(Page): .all() ) + class Meta: + verbose_name = "Rozcestník článků" -class HomeArticlePage(Page): + +class HomeContentPageMixin(Page): tags = models.ManyToManyField( "Tag", verbose_name="Štítky" ) - author = models.CharField(verbose_name="Autor") + author = models.CharField( + verbose_name="Autor", + max_length=128, + blank=True, + null=True, + ) date = models.DateField( verbose_name="Datum vytvoření", @@ -181,12 +203,25 @@ class HomeArticlePage(Page): return self.perex + class Meta: + abstract = True + ordering = ["-date"] + + +class HomeArticlePage(HomeContentPageMixin): + class Meta: + ordering = ["-date"] + verbose_name = "Článek" + + +class HomeUniversalPage(HomeContentPageMixin): class Meta: ordering = ["-date"] + verbose_name = "Univerzální stránka" class Tag(models.Model): - name = models.CharField(verbose_name="Jméno") + name = models.CharField(verbose_name="Jméno", max_length=32) class Meta: verbose_name = "Štítek" diff --git a/home/templates/home/blocks/document_block.html b/home/templates/home/blocks/document_block.html index bd3eb5e70ab7bf802ef0a8b5f984f6bd40b43dc1..07e451d9ffc65164a71a87d7a830e158c8006ee5 100644 --- a/home/templates/home/blocks/document_block.html +++ b/home/templates/home/blocks/document_block.html @@ -1,6 +1,6 @@ <li> <a - href="{% if self.url %}{{ self.url }}{% else %}{{ self.file.url }}{% endif %}" + href="{% if self.page %}{{ self.page }}{% else %}{{ self.file.url }}{% endif %}" target="_blank" > <h3 class="font-serif leading-4"> diff --git a/home/templates/home/blocks/event_block.html b/home/templates/home/blocks/event_block.html index 660d32504102028adef02b5e933f530cad7e59f9..d5ecbbe4fe10550814a40ac44f660189e1b35425 100644 --- a/home/templates/home/blocks/event_block.html +++ b/home/templates/home/blocks/event_block.html @@ -1,4 +1,4 @@ -<a href="{{ self.url }}" target="_blank"> +<a href="{{ self.page }}" target="_blank"> <li class="flex flex-col"> {% if self.date or self.location %} <small class="text-pii-cyan uppercase"> diff --git a/home/templates/home/home_articles_page.html b/home/templates/home/home_articles_page.html index 0d0bb6ecf9aac84019a5923268d80c04e292a8c3..d27cc1da37cf69b9e2bc784285466b71df2f270a 100644 --- a/home/templates/home/home_articles_page.html +++ b/home/templates/home/home_articles_page.html @@ -4,7 +4,7 @@ {% block content %} <main class="flex flex-col items-center gap-10 pt-14"> <div class="container"> - <ul class="flex gap-4 lg:h-96 lg:flex-nowrap flex-wrap"> + <ul class="flex gap-4 lg:h-96 flex-wrap"> {% for article in page.articles %} <li class="bg-pii-cyan text-white p-7 lg:w-80"> <a