Skip to content
Snippets Groups Projects
Commit a8b80840 authored by Tomáš Valenta's avatar Tomáš Valenta
Browse files

update structure

parent 7ddfdd50
No related branches found
No related tags found
No related merge requests found
Showing
with 546 additions and 62 deletions
...@@ -4,14 +4,13 @@ from django.db import migrations ...@@ -4,14 +4,13 @@ from django.db import migrations
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('home', '0007_alter_homearticlepage_options_and_more'), ("home", "0007_alter_homearticlepage_options_and_more"),
] ]
operations = [ operations = [
migrations.RemoveField( migrations.RemoveField(
model_name='homeuniversalpage', model_name="homeuniversalpage",
name='perex', name="perex",
), ),
] ]
# Generated by Django 4.2.2 on 2023-08-06 07:51
import django.db.models.deletion
import django.utils.timezone
import wagtail.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("wagtaildocs", "0012_uploadeddocument"),
("wagtailcore", "0083_workflowcontenttype"),
("home", "0008_remove_homeuniversalpage_perex"),
]
operations = [
migrations.CreateModel(
name="HomeDocumentPage",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
(
"author",
models.CharField(
blank=True, max_length=128, null=True, verbose_name="Autor"
),
),
(
"date",
models.DateField(
default=django.utils.timezone.now,
verbose_name="Datum vytvoření",
),
),
("content", wagtail.fields.RichTextField(verbose_name="Obsah")),
(
"document",
models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT,
to="wagtaildocs.document",
),
),
("tags", models.ManyToManyField(to="home.tag", verbose_name="Štítky")),
],
options={
"verbose_name": "Dokument",
"ordering": ["-date"],
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="HomeDocumentsPage",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
(
"content",
wagtail.fields.RichTextField(
blank=True, null=True, verbose_name="Obsah"
),
),
],
options={
"verbose_name": "Rozcestník dokumentů",
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="HomeEventPage",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
(
"author",
models.CharField(
blank=True, max_length=128, null=True, verbose_name="Autor"
),
),
("content", wagtail.fields.RichTextField(verbose_name="Obsah")),
(
"date",
models.DateField(
blank=True, null=True, verbose_name="Datum konání"
),
),
(
"location",
models.CharField(max_length=64, verbose_name="Místo konání"),
),
("tags", models.ManyToManyField(to="home.tag", verbose_name="Štítky")),
],
options={
"verbose_name": "Akce",
"ordering": ["-date"],
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="HomeEventsPage",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
(
"content",
wagtail.fields.RichTextField(
blank=True, null=True, verbose_name="Obsah"
),
),
],
options={
"verbose_name": "Rozcestník akcí",
},
bases=("wagtailcore.page",),
),
migrations.DeleteModel(
name="HomeUniversalPage",
),
]
# Generated by Django 4.2.2 on 2023-08-06 08:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("home", "0009_homedocumentpage_homedocumentspage_homeeventpage_and_more"),
]
operations = [
migrations.AlterField(
model_name="homeeventpage",
name="location",
field=models.CharField(
blank=True, max_length=64, null=True, verbose_name="Místo konání"
),
),
]
# Generated by Django 4.2.2 on 2023-08-06 08:38
import django.db.models.deletion
import wagtail.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("wagtaildocs", "0012_uploadeddocument"),
("home", "0010_alter_homeeventpage_location"),
]
operations = [
migrations.AlterField(
model_name="homedocumentpage",
name="content",
field=wagtail.fields.RichTextField(
blank=True, null=True, verbose_name="Obsah"
),
),
migrations.AlterField(
model_name="homedocumentpage",
name="document",
field=models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT,
to="wagtaildocs.document",
verbose_name="Dokument",
),
),
migrations.AlterField(
model_name="homeeventpage",
name="content",
field=wagtail.fields.RichTextField(
blank=True, null=True, verbose_name="Obsah"
),
),
]
from django.db import models from django.db import models
from django.utils import timezone from django.utils import timezone
from wagtail.admin.panels import FieldPanel, MultiFieldPanel from wagtail.admin.panels import FieldPanel, MultiFieldPanel
from wagtail.documents import get_document_model
from wagtail.fields import RichTextField, StreamField from wagtail.fields import RichTextField, StreamField
from wagtail.models import Page from wagtail.models import Page
...@@ -85,7 +86,8 @@ class HomePage(Page): ...@@ -85,7 +86,8 @@ class HomePage(Page):
subpage_types = [ subpage_types = [
"home.HomeArticlesPage", "home.HomeArticlesPage",
"home.HomeUniversalPage", "home.HomeEventsPage",
"home.HomeDocumentsPage",
] ]
content_panels = Page.content_panels + [ content_panels = Page.content_panels + [
...@@ -114,14 +116,36 @@ class HomePage(Page): ...@@ -114,14 +116,36 @@ class HomePage(Page):
), ),
] ]
# Articles
@property @property
def articles_page(self) -> "HomeArticlesPage": def articles_page(self) -> "HomeArticlesPage":
return HomeArticlesPage.objects.live().first() return HomeArticlesPage.objects.live().first()
@property @property
def latest_articles(self): def latest_articles(self) -> "QuerySet":
return HomeArticlePage.objects.live().all()[:3] return HomeArticlePage.objects.live().all()[:3]
# Events
@property
def events_page(self) -> "HomeEventsPage":
return HomeEventsPage.objects.live().first()
@property
def latest_events(self) -> "QuerySet":
return HomeEventPage.objects.live().all()[:8]
# Documents
@property
def documents_page(self) -> "HomeDocumentsPage":
return HomeDocumentsPage.objects.live().first()
@property
def latest_documents(self) -> "QuerySet":
return HomeDocumentPage.objects.live().all()[:4]
class Meta: class Meta:
verbose_name = "Domovká stránka" verbose_name = "Domovká stránka"
...@@ -144,6 +168,42 @@ class HomeArticlesPage(Page): ...@@ -144,6 +168,42 @@ class HomeArticlesPage(Page):
verbose_name = "Rozcestník článků" verbose_name = "Rozcestník článků"
class HomeEventsPage(Page):
content = RichTextField(verbose_name="Obsah", blank=True, null=True)
parent_page_type = ["home.HomePage"]
subpage_types = ["home.HomeEventPage"]
content_panels = Page.content_panels + [
FieldPanel("content", icon="pilcrow"),
]
@property
def events(self):
return HomeEventPage.objects.live().all()
class Meta:
verbose_name = "Rozcestník akcí"
class HomeDocumentsPage(Page):
content = RichTextField(verbose_name="Obsah", blank=True, null=True)
parent_page_type = ["home.HomePage"]
subpage_types = ["home.HomeDocumentPage"]
content_panels = Page.content_panels + [
FieldPanel("content", icon="pilcrow"),
]
@property
def documents(self):
return HomeDocumentPage.objects.live().all()
class Meta:
verbose_name = "Rozcestník dokumentů"
class HomeContentPageMixin(Page): class HomeContentPageMixin(Page):
tags = models.ManyToManyField("Tag", verbose_name="Štítky") tags = models.ManyToManyField("Tag", verbose_name="Štítky")
...@@ -190,10 +250,43 @@ class HomeArticlePage(HomeContentPageMixin): ...@@ -190,10 +250,43 @@ class HomeArticlePage(HomeContentPageMixin):
verbose_name = "Článek" verbose_name = "Článek"
class HomeUniversalPage(HomeContentPageMixin): class HomeEventPage(HomeContentPageMixin):
date = models.DateField(verbose_name="Datum konání", blank=True, null=True)
location = models.CharField(
verbose_name="Místo konání", blank=True, null=True, max_length=64
)
content = RichTextField(verbose_name="Obsah", blank=True, null=True)
content_panels = Page.content_panels + [
FieldPanel("date", icon="calendar"),
FieldPanel("location", icon="globe"),
FieldPanel("author", icon="user"),
FieldPanel("content", icon="pilcrow"),
]
class Meta:
ordering = ["-date"]
verbose_name = "Akce"
class HomeDocumentPage(HomeContentPageMixin):
document = models.ForeignKey(
get_document_model(), on_delete=models.PROTECT, verbose_name="Dokument"
)
content = RichTextField(verbose_name="Obsah", blank=True, null=True)
content_panels = Page.content_panels + [
FieldPanel("document", icon="doc-full"),
FieldPanel("author", icon="user"),
FieldPanel("date", icon="calendar"),
FieldPanel("content", icon="pilcrow"),
]
class Meta: class Meta:
ordering = ["-date"] ordering = ["-date"]
verbose_name = "Univerzální stránka" verbose_name = "Dokument"
class Tag(models.Model): class Tag(models.Model):
......
<li>
<a
href="{% if self.page %}{{ self.page }}{% else %}{{ self.file.url }}{% endif %}"
target="_blank"
>
<h3 class="font-serif leading-4">
{{ self.name }}
</h3>
{% if self.date_added %}
<small class="font-serif">Přidáno {{ self.date_added }}</small>
{% endif %}
</a>
</li>
<a href="{{ self.page }}" target="_blank">
<li class="flex flex-col">
{% if self.date or self.location %}
<small class="text-pii-cyan uppercase">
{% if self.date %}
{{ self.date.day }}. {{ self.date.month }}. {{ self.date.year }}
{% endif %}
{% if self.location %}
{% if self.date %}
&nbsp;|&nbsp;
{% endif %}
{{ self.location }}
{% endif %}
</small>
{% endif %}
<span
class="font-bold font-serif text-xl"
>{{ self.name }}</span>
</li>
</a>
...@@ -6,12 +6,18 @@ ...@@ -6,12 +6,18 @@
<div class="container"> <div class="container">
<h1 class="font-bebas text-4xl">{{ page.title }}</h1> <h1 class="font-bebas text-4xl">{{ page.title }}</h1>
<small class="flex gap-2"> <div class="flex flex-col gap-1 mt-3 text-gray-700">
<div class="flex gap-2 items-center">
<i class="ico--calendar"></i>
<div>{{ page.date }}</div> <div>{{ page.date }}</div>
</div>
{% if page.author %} {% if page.author %}
<div>| {{ page.author }}</div> <div class="flex gap-2 items-center">
<i class="ico--user"></i>
<div>{{ page.author }}</div>
</div>
{% endif %} {% endif %}
</small> </div>
<div class="mt-5 prose max-w-screen-md font-serif"> <div class="mt-5 prose max-w-screen-md font-serif">
<p class="mb-3">{{ page.perex }}</p> <p class="mb-3">{{ page.perex }}</p>
......
...@@ -4,6 +4,14 @@ ...@@ -4,6 +4,14 @@
{% block content %} {% block content %}
<main class="flex flex-col items-center gap-10 pt-14"> <main class="flex flex-col items-center gap-10 pt-14">
<div class="container"> <div class="container">
<h1 class="font-bebas text-4xl mb-4">{{ page.title }}</h1>
{% if page.content %}
<div class="prose font-serif mb-3">
{{ page.content|richtext }}
</div>
{% endif %}
<ul class="flex gap-4 lg:h-96 flex-wrap"> <ul class="flex gap-4 lg:h-96 flex-wrap">
{% for article in page.articles %} {% for article in page.articles %}
<li class="bg-pii-cyan text-white p-7 lg:w-80"> <li class="bg-pii-cyan text-white p-7 lg:w-80">
......
...@@ -6,16 +6,27 @@ ...@@ -6,16 +6,27 @@
<div class="container"> <div class="container">
<h1 class="font-bebas text-4xl">{{ page.title }}</h1> <h1 class="font-bebas text-4xl">{{ page.title }}</h1>
<small class="flex gap-2">
<div>{{ page.date }}</div>
{% if page.author %} {% if page.author %}
<div>| {{ page.author }}</div> <div class="flex gap-2 mt-3 items-center text-gray-700">
<i class="ico--user"></i>
<div>{{ page.author }}</div>
</div>
{% endif %} {% endif %}
</small>
<div class="mt-5 prose max-w-screen-md font-serif"> <div class="mt-5 prose max-w-screen-md font-serif">
{{ page.content|richtext }} {{ page.content|richtext }}
</div> </div>
<div class="mt-4">
<a
class="text-lg font-bold flex gap-2 items-center"
href="{{ page.document.url }}"
target="_blank"
>
<i class="ico--download"></i>
<div class="underline">Stáhnout</div>
</a>
</div>
</div> </div>
</main> </main>
{% endblock content %} {% endblock content %}
{% extends "base.html" %}
{% load static wagtailcore_tags %}
{% block content %}
<main class="flex flex-col items-center gap-10 pt-14">
<div class="container">
<h1 class="font-bebas text-4xl mb-4">{{ page.title }}</h1>
{% if page.content %}
<div class="prose font-serif mb-3">
{{ page.content|richtext }}
</div>
{% endif %}
<ul class="flex flex-col gap-2 list-disc ml-3">
{% for document in page.documents %}
<li>
<a
class="underline"
href="{{ document.url }}"
>
{{ document.title }}
</a>
</li>
{% endfor %}
</ul>
</div>
</main>
{% endblock content %}
{% extends "base.html" %}
{% load static wagtailcore_tags %}
{% block content %}
<main class="flex flex-col items-center gap-10 pt-14">
<div class="container">
<h1 class="font-bebas text-4xl">{{ page.title }}</h1>
<div class="flex flex-col gap-1 mt-3 text-gray-700">
{% if page.date %}
<div class="flex gap-2 items-center">
<i class="ico--calendar"></i>
<div>{{ page.date }}</div>
</div>
{% endif %}
{% if page.location %}
<div class="flex gap-2 items-center">
<i class="ico--location"></i>
<div>{{ page.location }}</div>
</div>
{% endif %}
{% if page.author %}
<div class="flex gap-2 items-center">
<i class="ico--user"></i>
<div>{{ page.author }}</div>
</div>
{% endif %}
</div>
<div class="mt-5 prose max-w-screen-md font-serif">
{{ page.content|richtext }}
</div>
</div>
</main>
{% endblock content %}
{% extends "base.html" %}
{% load static wagtailcore_tags %}
{% block content %}
<main class="flex flex-col items-center gap-10 pt-14">
<div class="container">
<h1 class="font-bebas text-4xl mb-4">{{ page.title }}</h1>
{% if page.content %}
<div class="prose font-serif mb-3">
{{ page.content|richtext }}
</div>
{% endif %}
<ul class="flex flex-col gap-2 list-disc ml-3">
{% for event in page.events %}
<li class="text-gray-500">
<a
class="flex gap-3"
href="{{ event.url }}"
>
<div>
{{ event.date }}{% if event.location %},
{{ event.location }}
{% endif %}
</div>
<div class="underline text-black">{{ event.title }}</div>
</a>
</li>
{% endfor %}
</ul>
</div>
</main>
{% endblock content %}
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
href="{{ page.articles_page.url }}" href="{{ page.articles_page.url }}"
> >
<i class="ico--chevron-right"></i> <i class="ico--chevron-right"></i>
<div>Načíst další články</div> <div>Další články</div>
</a> </a>
</div> </div>
</div> </div>
...@@ -67,32 +67,101 @@ ...@@ -67,32 +67,101 @@
<ul class="flex gap-14"> <ul class="flex gap-14">
<div class="flex flex-col gap-3"> <div class="flex flex-col gap-3">
{% for block in page.events|slice:"0:4" %} {% for event in page.latest_events|slice:"0:4" %}
{% include_block block %} <a href="{{ event.url }}" target="_blank">
<li class="flex flex-col">
{% if event.date or event.location %}
<small class="text-pii-cyan uppercase">
{% if event.date %}
{{ event.date.day }}. {{ event.date.month }}. {{ event.date.year }}
{% endif %}
{% if event.location %}
{% if event.date %}
&nbsp;|&nbsp;
{% endif %}
{{ event.location }}
{% endif %}
</small>
{% endif %}
<span
class="font-bold font-serif text-xl"
>{{ event.title }}</span>
</li>
</a>
{% endfor %} {% endfor %}
</div> </div>
<div class="hidden lg:block"> <div class="hidden lg:block">
{% if page.events|length > 4 %} {% if page.latest_events|length > 4 %}
<div class="flex flex-col gap-3 border-l-2 pl-14 border-pii-cyan"> <div class="flex flex-col gap-3 border-l-2 pl-14 border-pii-cyan">
{% for block in page.events|slice:"4:8" %} {% for event in page.latest_events|slice:"4:8" %}
{% include_block block %} <a href="{{ event.url }}" target="_blank">
<li class="flex flex-col">
{% if event.date or event.location %}
<small class="text-pii-cyan uppercase">
{% if event.date %}
{{ event.date.day }}. {{ event.date.month }}. {{ event.date.year }}
{% endif %}
{% if event.location %}
{% if event.date %}
&nbsp;|&nbsp;
{% endif %}
{{ event.location }}
{% endif %}
</small>
{% endif %}
<span
class="font-bold font-serif text-xl"
>{{ event.title }}</span>
</li>
</a>
{% endfor %} {% endfor %}
</div> </div>
{% endif %} {% endif %}
</div> </div>
</ul> </ul>
<a
class="flex gap-2 font-bebas text-2xl uppercase mt-4"
href="{{ page.events_page.url }}"
>
<i class="ico--chevron-right"></i>
<div>Další akce</div>
</a>
</section> </section>
<section class="flex justify-center bg-grey-50 p-10 w-full lg:flex-nowrap flex-wrap" id="dokumenty"> <section class="flex justify-center bg-grey-50 p-10 w-full lg:flex-nowrap flex-wrap" id="dokumenty">
<div class="container flex flex-col gap-3"> <div class="container">
<div class="flex flex-col gap-3">
<h2 class="font-bebas text-3xl uppercase leading-7">Dokumenty</h2> <h2 class="font-bebas text-3xl uppercase leading-7">Dokumenty</h2>
<ul class="flex flex-col lg:grid lg:grid-cols-3 lg:grid-rows-2 gap-y-3 gap-x-6 grid-flow-col"> <ul class="flex flex-col lg:grid lg:grid-cols-3 lg:grid-rows-2 gap-y-3 gap-x-6 grid-flow-col">
{% for block in page.documents %} {% for document in page.latest_documents %}
{% include_block block %} <li>
<a
href="{{ document.url }}"
target="_blank"
>
<h3 class="font-serif leading-4">
{{ document.title }}
</h3>
{% if document.date_added %}
<small class="font-serif">Přidáno {{ document.date_added }}</small>
{% endif %}
</a>
</li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
<a
class="flex gap-2 font-bebas text-2xl uppercase mt-4"
href="{{ page.documents_page.url }}"
>
<i class="ico--chevron-right"></i>
<div>Další dokumenty</div>
</a>
</div>
</section> </section>
<section class="container flex flex-col gap-3" id="dary"> <section class="container flex flex-col gap-3" id="dary">
......
...@@ -59,9 +59,9 @@ ...@@ -59,9 +59,9 @@
<div class="gap-4 hidden md:flex"> <div class="gap-4 hidden md:flex">
<a class="nav__item" href="/#uvod">Úvod</a> <a class="nav__item" href="/#uvod">Úvod</a>
<a class="nav__item" href="/#aktualne">Aktuálně</a> <a class="nav__item" href="/clanky">Aktuálně</a>
<a class="nav__item" href="/#akce">Akce</a> <a class="nav__item" href="/akce">Akce</a>
<a class="nav__item" href="/#dokumenty">Dokumenty</a> <a class="nav__item" href="/dokumenty">Dokumenty</a>
<a class="nav__item" href="/#dary">Dary</a> <a class="nav__item" href="/#dary">Dary</a>
<a class="nav__item" href="/#kontakty">Kontakty</a> <a class="nav__item" href="/#kontakty">Kontakty</a>
<a class="nav__item" href="/#lide">Lidé</a> <a class="nav__item" href="/#lide">Lidé</a>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment