Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
1 result

Target

Select target project
  • Institut π / pi-cms
  • jakub.wolf / pi-cms
2 results
Select Git revision
  • master
  • jw
2 results
Show changes
1000 files
+ 5025
170255
Compare changes
  • Side-by-side
  • Inline

Files

.gitignore

0 → 100644
+6 −0
Original line number Diff line number Diff line
__pycache__/
.env
institut/static/css/style.css
static/*
media/*
node_modules/
+4 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ help:
	@echo "Application:"
	@echo "  run             Run the application on port ${PORT}"
	@echo "  shell           Access the Django shell"
	@echo "  superuser       Create superuser
	@echo ""
	@echo "Database:"
	@echo "  migrations      Generate migrations"
@@ -57,6 +58,9 @@ run: venv
shell: venv
	${VENV}/bin/python manage.py shell --settings=${SETTINGS}

superuser: venv
	${VENV}/bin/python manage.py createsuperuser --settings=${SETTINGS}

migrations: venv
	${VENV}/bin/python manage.py makemigrations --settings=${SETTINGS}

+5 −1
Original line number Diff line number Diff line
DATABASE_URL="postgresql://nastenka:nastenka@localhost:5432/postgres"
DATABASE_URL="postgresql://institut:institut@localhost:5432/postgres"

# ALLOWED_HOSTS=dev.imaniti.org
# SECRET_KEY=asdf
# CSRF_TRUSTED_ORIGINS=https://dev.imaniti.org

home/admin.py

0 → 100644
+15 −0
Original line number Diff line number Diff line
from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register

from .models import Tag


class TagAdmin(ModelAdmin):
    model = Tag
    menu_label = "Štítky"
    menu_icon = "tag"
    menu_order = 290
    add_to_settings_menu = False
    exclude_from_explorer = False


modeladmin_register(TagAdmin)

home/blocks.py

0 → 100644
+12 −0
Original line number Diff line number Diff line
from wagtail.blocks import CharBlock, EmailBlock, StructBlock, TextBlock


class PersonBlock(StructBlock):
    name = CharBlock(label="Jméno")
    position = TextBlock(label="Pracovní pozice", required=False)
    email = EmailBlock(label="E-mailová adresa", required=False)

    class Meta:
        label = "Osoba"
        template = "home/blocks/person_block.html"
        icon = "user"

home/feeds.py

0 → 100644
+52 −0
Original line number Diff line number Diff line
import typing
from datetime import datetime

from django.contrib.syndication.views import Feed
from django.template.loader import render_to_string
from django.urls import reverse

from .models import HomeArticlePage, HomeArticlesPage


class LatestArticlesFeed(Feed):
    def get_object(self, request, id: int) -> HomeArticlesPage:
        return HomeArticlesPage.objects.get(id=id)

    def title(self, obj: HomeArticlesPage) -> str:
        return obj.title

    def link(self, obj: HomeArticlesPage) -> str:
        return obj.get_full_url()

    def items(self, obj: HomeArticlesPage) -> list:
        return HomeArticlePage.objects.live().child_of(obj).order_by("-date")[:32]

    def item_title(self, item: HomeArticlePage) -> str:
        return item.title

    def item_description(self, item: HomeArticlePage) -> str:
        return render_to_string(
            "home/feed_item_description.html",
            {"item": item},
        )

    def item_pubdate(self, item: HomeArticlePage) -> datetime:
        return datetime(
            item.date.year,
            item.date.month,
            item.date.day,
            12,
            0,
        )

    def item_author_name(self, item: HomeArticlePage) -> str:
        if item.author:
            return item.author

        return ""

    def item_categories(self, item: HomeArticlePage) -> list:
        return item.tags.all()

    def item_link(self, item: HomeArticlePage) -> str:
        return item.get_full_url()
+292 −5
Original line number Diff line number Diff line
# -*- coding: utf-8 -*-
# Generated by Django 4.2.2 on 2023-07-23 12:14

import django.db.models.deletion
import wagtail.blocks
import wagtail.documents.blocks
import wagtail.fields
from django.db import migrations, models


class Migration(migrations.Migration):
    initial = True

    dependencies = [
        ("wagtailcore", "0040_page_draft_title"),
        ("wagtailcore", "0083_workflowcontenttype"),
    ]

    operations = [
        migrations.CreateModel(
            name="HomePage",
            name="HomeArticlesPage",
            fields=[
                (
                    "page_ptr",
                    models.OneToOneField(
                        on_delete=models.CASCADE,
                        auto_created=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        parent_link=True,
                        primary_key=True,
                        serialize=False,
                        to="wagtailcore.page",
                    ),
                ),
                ("author", models.CharField(verbose_name="Autor")),
                ("perex", wagtail.fields.RichTextField(verbose_name="Perex")),
                ("content", wagtail.fields.RichTextField(verbose_name="Obsah")),
            ],
            options={
                "abstract": False,
            },
            bases=("wagtailcore.page",),
        ),
        migrations.CreateModel(
            name="HomePage",
            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",
                        to="wagtailcore.page",
                    ),
                ),
                (
                    "heading_text",
                    wagtail.fields.RichTextField(verbose_name="Hlavní text stránky"),
                ),
                (
                    "events",
                    wagtail.fields.StreamField(
                        [
                            (
                                "event",
                                wagtail.blocks.StructBlock(
                                    [
                                        (
                                            "name",
                                            wagtail.blocks.CharBlock(label="Jméno"),
                                        ),
                                        ("url", wagtail.blocks.URLBlock(label="URL")),
                                        (
                                            "date",
                                            wagtail.blocks.DateBlock(
                                                label="Datum konání", required=False
                                            ),
                                        ),
                                        (
                                            "location",
                                            wagtail.blocks.CharBlock(
                                                label="Lokace", required=False
                                            ),
                                        ),
                                    ]
                                ),
                            )
                        ],
                        blank=True,
                        null=True,
                        use_json_field=True,
                        verbose_name="Události",
                    ),
                ),
                (
                    "documents",
                    wagtail.fields.StreamField(
                        [
                            (
                                "document",
                                wagtail.blocks.StructBlock(
                                    [
                                        (
                                            "name",
                                            wagtail.blocks.CharBlock(label="Jméno"),
                                        ),
                                        (
                                            "date_added",
                                            wagtail.blocks.DateBlock(
                                                label="Datum přidání", required=False
                                            ),
                                        ),
                                        (
                                            "url",
                                            wagtail.blocks.URLBlock(
                                                label="URL (místo dokumentu)",
                                                required=False,
                                            ),
                                        ),
                                        (
                                            "file",
                                            wagtail.documents.blocks.DocumentChooserBlock(
                                                label="Dokument", required=False
                                            ),
                                        ),
                                    ]
                                ),
                            )
                        ],
                        blank=True,
                        null=True,
                        use_json_field=True,
                        verbose_name="Dokumenty",
                    ),
                ),
                (
                    "donation_text",
                    wagtail.fields.RichTextField(verbose_name="Text pro dary"),
                ),
                ("address", models.CharField(verbose_name="Sídlo")),
                ("branch", models.CharField(verbose_name="Pobočka")),
                ("email", models.EmailField(max_length=254, verbose_name="Email")),
                ("ds_id", models.CharField(verbose_name="Datová schránka")),
                (
                    "director",
                    wagtail.fields.StreamField(
                        [
                            (
                                "person",
                                wagtail.blocks.StructBlock(
                                    [
                                        (
                                            "name",
                                            wagtail.blocks.CharBlock(label="Jméno"),
                                        ),
                                        (
                                            "position",
                                            wagtail.blocks.TextBlock(
                                                label="Pracovní pozice", required=False
                                            ),
                                        ),
                                        (
                                            "email",
                                            wagtail.blocks.EmailBlock(
                                                label="E-mailová adresa", required=False
                                            ),
                                        ),
                                    ]
                                ),
                            )
                        ],
                        blank=True,
                        null=True,
                        use_json_field=True,
                        verbose_name="Ředitel",
                    ),
                ),
                (
                    "controller",
                    wagtail.fields.StreamField(
                        [
                            (
                                "person",
                                wagtail.blocks.StructBlock(
                                    [
                                        (
                                            "name",
                                            wagtail.blocks.CharBlock(label="Jméno"),
                                        ),
                                        (
                                            "position",
                                            wagtail.blocks.TextBlock(
                                                label="Pracovní pozice", required=False
                                            ),
                                        ),
                                        (
                                            "email",
                                            wagtail.blocks.EmailBlock(
                                                label="E-mailová adresa", required=False
                                            ),
                                        ),
                                    ]
                                ),
                            )
                        ],
                        blank=True,
                        null=True,
                        use_json_field=True,
                        verbose_name="Kontrolor",
                    ),
                ),
                (
                    "council_members",
                    wagtail.fields.StreamField(
                        [
                            (
                                "person",
                                wagtail.blocks.StructBlock(
                                    [
                                        (
                                            "name",
                                            wagtail.blocks.CharBlock(label="Jméno"),
                                        ),
                                        (
                                            "position",
                                            wagtail.blocks.TextBlock(
                                                label="Pracovní pozice", required=False
                                            ),
                                        ),
                                        (
                                            "email",
                                            wagtail.blocks.EmailBlock(
                                                label="E-mailová adresa", required=False
                                            ),
                                        ),
                                    ]
                                ),
                            )
                        ],
                        blank=True,
                        null=True,
                        use_json_field=True,
                        verbose_name="Správní rada",
                    ),
                ),
                (
                    "volunteers",
                    wagtail.fields.StreamField(
                        [
                            (
                                "person",
                                wagtail.blocks.StructBlock(
                                    [
                                        (
                                            "name",
                                            wagtail.blocks.CharBlock(label="Jméno"),
                                        ),
                                        (
                                            "position",
                                            wagtail.blocks.TextBlock(
                                                label="Pracovní pozice", required=False
                                            ),
                                        ),
                                        (
                                            "email",
                                            wagtail.blocks.EmailBlock(
                                                label="E-mailová adresa", required=False
                                            ),
                                        ),
                                    ]
                                ),
                            )
                        ],
                        blank=True,
                        null=True,
                        use_json_field=True,
                        verbose_name="Dobrovolníci",
                    ),
                ),
                (
                    "employees",
                    wagtail.fields.StreamField(
                        [
                            (
                                "person",
                                wagtail.blocks.StructBlock(
                                    [
                                        (
                                            "name",
                                            wagtail.blocks.CharBlock(label="Jméno"),
                                        ),
                                        (
                                            "position",
                                            wagtail.blocks.TextBlock(
                                                label="Pracovní pozice", required=False
                                            ),
                                        ),
                                        (
                                            "email",
                                            wagtail.blocks.EmailBlock(
                                                label="E-mailová adresa", required=False
                                            ),
                                        ),
                                    ]
                                ),
                            )
                        ],
                        blank=True,
                        null=True,
                        use_json_field=True,
                        verbose_name="Zaměstnanci",
                    ),
                ),
            ],
+0 −62
Original line number Diff line number Diff line
# -*- coding: utf-8 -*-
from django.db import migrations


def create_homepage(apps, schema_editor):
    # Get models
    ContentType = apps.get_model("contenttypes.ContentType")
    Page = apps.get_model("wagtailcore.Page")
    Site = apps.get_model("wagtailcore.Site")
    HomePage = apps.get_model("home.HomePage")

    # Delete the default homepage
    # If migration is run multiple times, it may have already been deleted
    Page.objects.filter(id=2).delete()

    # Create content type for homepage model
    homepage_content_type, __ = ContentType.objects.get_or_create(
        model="homepage", app_label="home"
    )

    # Create a new homepage
    homepage = HomePage.objects.create(
        title="Home",
        draft_title="Home",
        slug="home",
        content_type=homepage_content_type,
        path="00010001",
        depth=2,
        numchild=0,
        url_path="/home/",
    )

    # Create a site with the new homepage set as the root
    Site.objects.create(hostname="localhost", root_page=homepage, is_default_site=True)


def remove_homepage(apps, schema_editor):
    # Get models
    ContentType = apps.get_model("contenttypes.ContentType")
    HomePage = apps.get_model("home.HomePage")

    # Delete the default homepage
    # Page and Site objects CASCADE
    HomePage.objects.filter(slug="home", depth=2).delete()

    # Delete content type for homepage model
    ContentType.objects.filter(model="homepage", app_label="home").delete()


class Migration(migrations.Migration):

    run_before = [
        ("wagtailcore", "0053_locale_model"),
    ]

    dependencies = [
        ("home", "0001_initial"),
    ]

    operations = [
        migrations.RunPython(create_homepage, remove_homepage),
    ]
+46 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.2 on 2023-07-23 12:29

import django.db.models.deletion
import wagtail.fields
from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("wagtailcore", "0083_workflowcontenttype"),
        ("home", "0001_initial"),
    ]

    operations = [
        migrations.CreateModel(
            name="HomeArticlePage",
            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(verbose_name="Autor")),
                ("perex", wagtail.fields.RichTextField(verbose_name="Perex")),
                ("content", wagtail.fields.RichTextField(verbose_name="Obsah")),
            ],
            options={
                "abstract": False,
            },
            bases=("wagtailcore.page",),
        ),
        migrations.RemoveField(
            model_name="homearticlespage",
            name="author",
        ),
        migrations.RemoveField(
            model_name="homearticlespage",
            name="perex",
        ),
    ]
+20 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.2 on 2023-07-23 12:31

import wagtail.fields
from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0002_homearticlepage_remove_homearticlespage_author_and_more"),
    ]

    operations = [
        migrations.AlterField(
            model_name="homearticlespage",
            name="content",
            field=wagtail.fields.RichTextField(
                blank=True, null=True, verbose_name="Obsah"
            ),
        ),
    ]
+20 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.2 on 2023-07-23 12:37

import django.utils.timezone
from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0003_alter_homearticlespage_content"),
    ]

    operations = [
        migrations.AddField(
            model_name="homearticlepage",
            name="date",
            field=models.DateField(
                default=django.utils.timezone.now, verbose_name="Datum vytvoření"
            ),
        ),
    ]
+45 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.2 on 2023-07-23 13:41

from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0004_homearticlepage_date"),
    ]

    operations = [
        migrations.CreateModel(
            name="Tag",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("name", models.CharField(verbose_name="Jméno")),
            ],
            options={
                "verbose_name": "Štítek",
                "verbose_name_plural": "Štítky",
            },
        ),
        migrations.AlterModelOptions(
            name="homearticlepage",
            options={"ordering": ["-date"]},
        ),
        migrations.AlterField(
            model_name="homearticlepage",
            name="perex",
            field=models.TextField(verbose_name="Perex"),
        ),
        migrations.AddField(
            model_name="homearticlepage",
            name="tags",
            field=models.ManyToManyField(to="home.tag", verbose_name="Štítky"),
        ),
    ]
+19 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.2 on 2023-07-24 01:02

from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0005_tag_alter_homearticlepage_options_and_more"),
    ]

    operations = [
        migrations.AlterField(
            model_name="tag",
            name="id",
            field=models.BigAutoField(
                auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
            ),
        ),
    ]
+174 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.2 on 2023-07-24 03:57

import django.db.models.deletion
import django.utils.timezone
import wagtail.blocks
import wagtail.documents.blocks
import wagtail.fields
from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("wagtailcore", "0083_workflowcontenttype"),
        ("home", "0006_alter_tag_id"),
    ]

    operations = [
        migrations.AlterModelOptions(
            name="homearticlepage",
            options={"ordering": ["-date"], "verbose_name": "Článek"},
        ),
        migrations.AlterModelOptions(
            name="homearticlespage",
            options={"verbose_name": "Rozcestník článků"},
        ),
        migrations.AlterModelOptions(
            name="homepage",
            options={"verbose_name": "Domovká stránka"},
        ),
        migrations.AlterField(
            model_name="homearticlepage",
            name="author",
            field=models.CharField(
                blank=True, max_length=128, null=True, verbose_name="Autor"
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="address",
            field=models.CharField(max_length=128, verbose_name="Sídlo"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="branch",
            field=models.CharField(max_length=128, verbose_name="Pobočka"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="documents",
            field=wagtail.fields.StreamField(
                [
                    (
                        "document",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "date_added",
                                    wagtail.blocks.DateBlock(
                                        label="Datum přidání", required=False
                                    ),
                                ),
                                (
                                    "page",
                                    wagtail.blocks.PageChooserBlock(
                                        label="Stránka (místo dokumentu)",
                                        required=False,
                                    ),
                                ),
                                (
                                    "file",
                                    wagtail.documents.blocks.DocumentChooserBlock(
                                        label="Dokument", required=False
                                    ),
                                ),
                            ]
                        ),
                    )
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Dokumenty",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="ds_id",
            field=models.CharField(max_length=128, verbose_name="Datová schránka"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="email",
            field=models.EmailField(max_length=128, verbose_name="Email"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="events",
            field=wagtail.fields.StreamField(
                [
                    (
                        "event",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "page",
                                    wagtail.blocks.PageChooserBlock(label="Stránka"),
                                ),
                                (
                                    "date",
                                    wagtail.blocks.DateBlock(
                                        label="Datum konání", required=False
                                    ),
                                ),
                                (
                                    "location",
                                    wagtail.blocks.CharBlock(
                                        label="Lokace", required=False
                                    ),
                                ),
                            ]
                        ),
                    )
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Události",
            ),
        ),
        migrations.AlterField(
            model_name="tag",
            name="name",
            field=models.CharField(max_length=32, verbose_name="Jméno"),
        ),
        migrations.CreateModel(
            name="HomeUniversalPage",
            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í",
                    ),
                ),
                ("perex", models.TextField(verbose_name="Perex")),
                ("content", wagtail.fields.RichTextField(verbose_name="Obsah")),
                ("tags", models.ManyToManyField(to="home.tag", verbose_name="Štítky")),
            ],
            options={
                "verbose_name": "Univerzální stránka",
                "ordering": ["-date"],
            },
            bases=("wagtailcore.page",),
        ),
    ]
+16 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.2 on 2023-07-24 04:02

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0007_alter_homearticlepage_options_and_more"),
    ]

    operations = [
        migrations.RemoveField(
            model_name="homeuniversalpage",
            name="perex",
        ),
    ]
+154 −0
Original line number Diff line number Diff line
# 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",
        ),
    ]
+19 −0
Original line number Diff line number Diff line
# 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í"
            ),
        ),
    ]
+38 −0
Original line number Diff line number Diff line
# 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"
            ),
        ),
    ]
+20 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.2 on 2023-08-06 09:51

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0011_alter_homedocumentpage_content_and_more"),
    ]

    operations = [
        migrations.RemoveField(
            model_name="homepage",
            name="documents",
        ),
        migrations.RemoveField(
            model_name="homepage",
            name="events",
        ),
    ]
+78 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-12 15:11

from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0012_remove_homepage_documents_remove_homepage_events"),
    ]

    operations = [
        migrations.AlterModelOptions(
            name="homearticlepage",
            options={"verbose_name": "Článek"},
        ),
        migrations.AlterModelOptions(
            name="homedocumentpage",
            options={"verbose_name": "Dokument"},
        ),
        migrations.AlterModelOptions(
            name="homeeventpage",
            options={"verbose_name": "Akce"},
        ),
        migrations.AddField(
            model_name="homepage",
            name="academic_council_description",
            field=models.CharField(
                default="Akademická rada je poradním orgánem ústavu a v rámci své činnosti zejména poskytuje správní radě stanoviska k ideovému směřování, strategickým materiálům, rozpočtu a plánu činností ústavu. Dále vykonává akademická rada dohled nad ideovou a odbornou kvalitou výstupů ústavu.",
                verbose_name="Akademická rada - popis",
            ),
            preserve_default=False,
        ),
        migrations.AddField(
            model_name="homepage",
            name="controller_description",
            field=models.CharField(
                default="Kontrolor je kontrolním orgánem ústavu.",
                verbose_name="Kontrolor - popis",
            ),
            preserve_default=False,
        ),
        migrations.AddField(
            model_name="homepage",
            name="council_members_description",
            field=models.CharField(
                default="Správní rada dbá o zachování účelu, pro nějž byl ústav založen, a dohlíží na řádné hospodaření s jeho majetkem.",
                verbose_name="Správní rada - popis",
            ),
            preserve_default=False,
        ),
        migrations.AddField(
            model_name="homepage",
            name="director_description",
            field=models.CharField(
                default="Ředitel je statutárním orgánem ústavu, řídí jeho činnost, jedná jeho jménem a rozhoduje ve všech záležitostech, které nespadají do pravomoci jiných orgánů.",
                verbose_name="Ředitel - popis",
            ),
            preserve_default=False,
        ),
        migrations.AddField(
            model_name="homepage",
            name="employees_description",
            field=models.CharField(
                default="Zaměstnanci poskytují administrativní, organizační a expertní podporu pro vykonávání činností ústavu.",
                verbose_name="Zaměstnanci - popis",
            ),
            preserve_default=False,
        ),
        migrations.AddField(
            model_name="homepage",
            name="volunteers_description",
            field=models.CharField(
                default="Dobrovolnický kruh je participační orgán ústavu. Účelem dobrovolnického kruhu je sdružovat osoby, které se chtějí dobrovolně podílet na činnostech ústavu, a navrhovat správní radě projekty pro realizaci ústavem v souladu s účelem ústavu.",
                verbose_name="Dobrovolníci - popis",
            ),
            preserve_default=False,
        ),
    ]
+42 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-12 15:18

from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0013_alter_homearticlepage_options_and_more"),
    ]

    operations = [
        migrations.AlterField(
            model_name="homepage",
            name="academic_council_description",
            field=models.TextField(verbose_name="Akademická rada - popis"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="controller_description",
            field=models.TextField(verbose_name="Kontrolor - popis"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="council_members_description",
            field=models.TextField(verbose_name="Správní rada - popis"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="director_description",
            field=models.TextField(verbose_name="Ředitel - popis"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="employees_description",
            field=models.TextField(verbose_name="Zaměstnanci - popis"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="volunteers_description",
            field=models.TextField(verbose_name="Dobrovolníci - popis"),
        ),
    ]
+16 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-12 15:36

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0014_alter_homepage_academic_council_description_and_more"),
    ]

    operations = [
        migrations.AlterModelOptions(
            name="homepage",
            options={"verbose_name": "Domovská stránka"},
        ),
    ]
+102 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-12 19:00

import django.db.models.deletion
import wagtail.contrib.routable_page.models
import wagtail.fields
from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("wagtailcore", "0083_workflowcontenttype"),
        ("wagtailimages", "0025_alter_image_file_alter_rendition_file"),
        ("home", "0015_alter_homepage_options"),
    ]

    operations = [
        migrations.CreateModel(
            name="HomePeoplePage",
            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 uživatelů",
            },
            bases=(
                wagtail.contrib.routable_page.models.RoutablePageMixin,
                "wagtailcore.page",
            ),
        ),
        migrations.CreateModel(
            name="HomePersonPage",
            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",
                    ),
                ),
                ("name", models.CharField(max_length=64, verbose_name="Jméno")),
                (
                    "position",
                    models.TextField(
                        blank=True, null=True, verbose_name="Pracovní pozice"
                    ),
                ),
                (
                    "email",
                    models.EmailField(
                        blank=True,
                        max_length=254,
                        null=True,
                        verbose_name="Emailová adresa",
                    ),
                ),
                (
                    "description",
                    wagtail.fields.RichTextField(
                        blank=True, null=True, verbose_name="Popis"
                    ),
                ),
                (
                    "image",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="+",
                        to="wagtailimages.image",
                        verbose_name="Profilový obrázek",
                    ),
                ),
            ],
            options={
                "abstract": False,
            },
            bases=(
                wagtail.contrib.routable_page.models.RoutablePageMixin,
                "wagtailcore.page",
            ),
        ),
    ]
+20 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-12 19:01

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0016_homepeoplepage_homepersonpage"),
    ]

    operations = [
        migrations.AlterModelOptions(
            name="homepeoplepage",
            options={"verbose_name": "Rozcestník osob"},
        ),
        migrations.AlterModelOptions(
            name="homepersonpage",
            options={"verbose_name": "Osoba"},
        ),
    ]
+16 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-12 19:01

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0017_alter_homepeoplepage_options_and_more"),
    ]

    operations = [
        migrations.RemoveField(
            model_name="homepersonpage",
            name="name",
        ),
    ]
+204 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-12 19:21

import wagtail.blocks
import wagtail.fields
from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0018_remove_homepersonpage_name"),
    ]

    operations = [
        migrations.AlterField(
            model_name="homepage",
            name="controller",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            page_type=["home.HomePersonPage"]
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Kontrolor",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="council_members",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            page_type=["home.HomePersonPage"]
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Správní rada",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="director",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            page_type=["home.HomePersonPage"]
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Ředitel",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="employees",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            page_type=["home.HomePersonPage"]
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Zaměstnanci",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="volunteers",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            page_type=["home.HomePersonPage"]
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Dobrovolníci",
            ),
        ),
    ]
+272 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-12 19:27

import django.db.models.deletion
import wagtail.blocks
import wagtail.fields
from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0019_alter_homepage_controller_and_more"),
    ]

    operations = [
        migrations.AddField(
            model_name="homearticlepage",
            name="author_page",
            field=models.ForeignKey(
                blank=True,
                help_text="Pokud je vybrána stránka, není nutno vyplňovat jméno autora níže.",
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                to="home.homepersonpage",
                verbose_name="Stránka autora",
            ),
        ),
        migrations.AddField(
            model_name="homedocumentpage",
            name="author_page",
            field=models.ForeignKey(
                blank=True,
                help_text="Pokud je vybrána stránka, není nutno vyplňovat jméno autora níže.",
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                to="home.homepersonpage",
                verbose_name="Stránka autora",
            ),
        ),
        migrations.AddField(
            model_name="homeeventpage",
            name="author_page",
            field=models.ForeignKey(
                blank=True,
                help_text="Pokud je vybrána stránka, není nutno vyplňovat jméno autora níže.",
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                to="home.homepersonpage",
                verbose_name="Stránka autora",
            ),
        ),
        migrations.AlterField(
            model_name="homearticlepage",
            name="author",
            field=models.CharField(
                blank=True, max_length=128, null=True, verbose_name="Jméno autora"
            ),
        ),
        migrations.AlterField(
            model_name="homedocumentpage",
            name="author",
            field=models.CharField(
                blank=True, max_length=128, null=True, verbose_name="Jméno autora"
            ),
        ),
        migrations.AlterField(
            model_name="homeeventpage",
            name="author",
            field=models.CharField(
                blank=True, max_length=128, null=True, verbose_name="Jméno autora"
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="controller",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Kontrolor",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="council_members",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Správní rada",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="director",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Ředitel",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="employees",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Zaměstnanci",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="volunteers",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Dobrovolníci",
            ),
        ),
    ]
+114 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-12 19:39

import wagtail.blocks
import wagtail.fields
from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0020_homearticlepage_author_page_and_more"),
    ]

    operations = [
        migrations.AlterField(
            model_name="homepage",
            name="controller",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    )
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Kontrolor",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="council_members",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    )
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Správní rada",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="director",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    )
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Ředitel",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="employees",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    )
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Zaměstnanci",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="volunteers",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    )
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Dobrovolníci",
            ),
        ),
    ]
+214 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-12 19:49

import wagtail.blocks
import wagtail.fields
from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0021_alter_homepage_controller_and_more"),
    ]

    operations = [
        migrations.AlterField(
            model_name="homepage",
            name="controller",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Kontrolor",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="council_members",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Správní rada",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="director",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Ředitel",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="employees",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Zaměstnanci",
            ),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="volunteers",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Dobrovolníci",
            ),
        ),
    ]
+54 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-15 17:01

import wagtail.blocks
import wagtail.fields
from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0022_alter_homepage_controller_and_more"),
    ]

    operations = [
        migrations.AddField(
            model_name="homepage",
            name="academic_council",
            field=wagtail.fields.StreamField(
                [
                    (
                        "person",
                        wagtail.blocks.StructBlock(
                            [
                                ("name", wagtail.blocks.CharBlock(label="Jméno")),
                                (
                                    "position",
                                    wagtail.blocks.TextBlock(
                                        label="Pracovní pozice", required=False
                                    ),
                                ),
                                (
                                    "email",
                                    wagtail.blocks.EmailBlock(
                                        label="E-mailová adresa", required=False
                                    ),
                                ),
                            ]
                        ),
                    ),
                    (
                        "person_page",
                        wagtail.blocks.PageChooserBlock(
                            icon="user",
                            label="Stránka osoby",
                            page_type=["home.HomePersonPage"],
                        ),
                    ),
                ],
                blank=True,
                null=True,
                use_json_field=True,
                verbose_name="Akademická rada",
            ),
        ),
    ]
+43 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.2 on 2023-08-15 23:51

import wagtail.fields
from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0023_homepage_academic_council"),
    ]

    operations = [
        migrations.AlterField(
            model_name="homepage",
            name="academic_council_description",
            field=wagtail.fields.RichTextField(verbose_name="Akademická rada - popis"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="controller_description",
            field=wagtail.fields.RichTextField(verbose_name="Kontrolor - popis"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="council_members_description",
            field=wagtail.fields.RichTextField(verbose_name="Správní rada - popis"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="director_description",
            field=wagtail.fields.RichTextField(verbose_name="Ředitel - popis"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="employees_description",
            field=wagtail.fields.RichTextField(verbose_name="Zaměstnanci - popis"),
        ),
        migrations.AlterField(
            model_name="homepage",
            name="volunteers_description",
            field=wagtail.fields.RichTextField(verbose_name="Dobrovolníci - popis"),
        ),
    ]
+19 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-19 22:46

from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0023_homepage_academic_council"),
    ]

    operations = [
        migrations.AddField(
            model_name="homepersonpage",
            name="name_titles",
            field=models.CharField(
                blank=True, max_length=32, null=True, verbose_name="Tituly"
            ),
        ),
    ]
+33 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-19 23:08

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("wagtailimages", "0025_alter_image_file_alter_rendition_file"),
        ("home", "0024_homepersonpage_name_titles"),
    ]

    operations = [
        migrations.AddField(
            model_name="homearticlepage",
            name="image",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name="+",
                to="wagtailimages.image",
                verbose_name="Obrázek",
            ),
        ),
        migrations.AddField(
            model_name="homearticlepage",
            name="show_image_on_homepage",
            field=models.BooleanField(
                default=False, verbose_name="Zobrazovat obrázek na homepage"
            ),
        ),
    ]
+55 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-20 14:17

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("wagtailcore", "0083_workflowcontenttype"),
        ("home", "0025_homearticlepage_image_and_more"),
    ]

    operations = [
        migrations.CreateModel(
            name="SocialMediaSettings",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "mastodon",
                    models.URLField(blank=True, help_text="Mastodon URL", null=True),
                ),
                (
                    "twitter",
                    models.URLField(blank=True, help_text="Twitter URL", null=True),
                ),
                (
                    "linkedin",
                    models.URLField(blank=True, help_text="LinkedIn URL", null=True),
                ),
                (
                    "facebook",
                    models.URLField(blank=True, help_text="Facebook URL", null=True),
                ),
                (
                    "site",
                    models.OneToOneField(
                        editable=False,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="wagtailcore.site",
                    ),
                ),
            ],
            options={
                "verbose_name": "Sociální sítě",
            },
        ),
    ]
+20 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-20 15:50

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0026_socialmediasettings"),
    ]

    operations = [
        migrations.RemoveField(
            model_name="homedocumentpage",
            name="tags",
        ),
        migrations.RemoveField(
            model_name="homeeventpage",
            name="tags",
        ),
    ]
+57 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-20 16:06

import django.db.models.deletion
import modelcluster.fields
from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("taggit", "0005_auto_20220424_2025"),
        ("home", "0027_remove_homedocumentpage_tags_and_more"),
    ]

    operations = [
        migrations.CreateModel(
            name="ArticleTag",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
            ],
            options={
                "abstract": False,
            },
        ),
        migrations.RemoveField(
            model_name="homearticlepage",
            name="tags",
        ),
        migrations.DeleteModel(
            name="Tag",
        ),
        migrations.AddField(
            model_name="articletag",
            name="content_object",
            field=modelcluster.fields.ParentalKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name="tagged_items",
                to="home.homearticlepage",
            ),
        ),
        migrations.AddField(
            model_name="articletag",
            name="tag",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name="%(app_label)s_%(class)s_items",
                to="taggit.tag",
            ),
        ),
    ]
+25 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-20 16:06

import modelcluster.contrib.taggit
from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("taggit", "0005_auto_20220424_2025"),
        ("home", "0028_articletag_remove_homearticlepage_tags_delete_tag_and_more"),
    ]

    operations = [
        migrations.AddField(
            model_name="homearticlepage",
            name="tags",
            field=modelcluster.contrib.taggit.ClusterTaggableManager(
                blank=True,
                help_text="A comma-separated list of tags.",
                through="home.ArticleTag",
                to="taggit.Tag",
                verbose_name="Štítky",
            ),
        ),
    ]
+116 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-20 16:50

import django.db.models.deletion
import django.utils.timezone
import wagtail.contrib.routable_page.models
import wagtail.fields
from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("wagtailimages", "0025_alter_image_file_alter_rendition_file"),
        ("wagtailcore", "0083_workflowcontenttype"),
        ("home", "0029_homearticlepage_tags"),
    ]

    operations = [
        migrations.CreateModel(
            name="HomeVideosPage",
            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 videí",
            },
            bases=(
                wagtail.contrib.routable_page.models.RoutablePageMixin,
                "wagtailcore.page",
            ),
        ),
        migrations.CreateModel(
            name="HomeVideoPage",
            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="Jméno autora",
                    ),
                ),
                (
                    "date",
                    models.DateField(
                        default=django.utils.timezone.now,
                        verbose_name="Datum vytvoření",
                    ),
                ),
                ("content", wagtail.fields.RichTextField(verbose_name="Obsah")),
                (
                    "embed_url",
                    models.URLField(
                        help_text="Pro získání adresy zmáčkni tlačítko Sdílet, vyber záložku Embed a zaškrtní zobrazování pouze URL.",
                        verbose_name="URL Embedu",
                    ),
                ),
                (
                    "author_page",
                    models.ForeignKey(
                        blank=True,
                        help_text="Pokud je vybrána stránka, není nutno vyplňovat jméno autora níže.",
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        to="home.homepersonpage",
                        verbose_name="Stránka autora",
                    ),
                ),
                (
                    "thumbnail",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="+",
                        to="wagtailimages.image",
                        verbose_name="Náhledový obrázek",
                    ),
                ),
            ],
            options={
                "abstract": False,
            },
            bases=(
                wagtail.contrib.routable_page.models.RoutablePageMixin,
                "wagtailcore.page",
            ),
        ),
    ]
+16 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-20 16:53

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0030_homevideospage_homevideopage"),
    ]

    operations = [
        migrations.AlterModelOptions(
            name="homevideopage",
            options={"verbose_name": "Video"},
        ),
    ]
+20 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-20 16:54

import wagtail.fields
from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0031_alter_homevideopage_options"),
    ]

    operations = [
        migrations.AlterField(
            model_name="homevideopage",
            name="content",
            field=wagtail.fields.RichTextField(
                blank=True, null=True, verbose_name="Obsah"
            ),
        ),
    ]
+12 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.2 on 2023-08-20 18:44

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0024_alter_homepage_academic_council_description_and_more"),
        ("home", "0032_alter_homevideopage_content"),
    ]

    operations = []
+119 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-21 18:21

import django.db.models.deletion
import modelcluster.contrib.taggit
import modelcluster.fields
import wagtail_color_panel.fields
from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("contenttypes", "0002_remove_content_type_name"),
        ("home", "0033_merge_20230820_1844"),
    ]

    operations = [
        migrations.CreateModel(
            name="Tag",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "name",
                    models.CharField(max_length=100, unique=True, verbose_name="name"),
                ),
                (
                    "slug",
                    models.SlugField(
                        allow_unicode=True,
                        max_length=100,
                        unique=True,
                        verbose_name="slug",
                    ),
                ),
                (
                    "bg_color",
                    wagtail_color_panel.fields.ColorField(
                        blank=True, max_length=7, null=True, verbose_name="Barva pozadí"
                    ),
                ),
                (
                    "fg_color",
                    wagtail_color_panel.fields.ColorField(
                        blank=True, max_length=7, null=True, verbose_name="Barva textu"
                    ),
                ),
            ],
            options={
                "abstract": False,
            },
        ),
        migrations.CreateModel(
            name="TaggedArticle",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "object_id",
                    models.IntegerField(db_index=True, verbose_name="object ID"),
                ),
                (
                    "content_object",
                    modelcluster.fields.ParentalKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="tagged_items",
                        to="home.homearticlepage",
                    ),
                ),
                (
                    "content_type",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(app_label)s_%(class)s_tagged_items",
                        to="contenttypes.contenttype",
                        verbose_name="content type",
                    ),
                ),
                (
                    "tag",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(app_label)s_%(class)s_items",
                        to="home.tag",
                    ),
                ),
            ],
            options={
                "abstract": False,
            },
        ),
        migrations.DeleteModel(
            name="ArticleTag",
        ),
        migrations.AlterField(
            model_name="homearticlepage",
            name="tags",
            field=modelcluster.contrib.taggit.ClusterTaggableManager(
                blank=True,
                help_text="A comma-separated list of tags.",
                through="home.TaggedArticle",
                to="home.Tag",
                verbose_name="Štítky",
            ),
        ),
    ]
+27 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-21 18:26

import wagtail_color_panel.fields
from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0034_tag_taggedarticle_delete_articletag_and_more"),
    ]

    operations = [
        migrations.AlterField(
            model_name="tag",
            name="bg_color",
            field=wagtail_color_panel.fields.ColorField(
                default="#fafafa", max_length=7, verbose_name="Barva pozadí"
            ),
        ),
        migrations.AlterField(
            model_name="tag",
            name="fg_color",
            field=wagtail_color_panel.fields.ColorField(
                default="#000000", max_length=7, verbose_name="Barva textu"
            ),
        ),
    ]
+22 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-21 18:44

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0035_alter_tag_bg_color_alter_tag_fg_color"),
    ]

    operations = [
        migrations.AlterField(
            model_name="taggedarticle",
            name="tag",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name="article_tags",
                to="home.tag",
            ),
        ),
    ]
+16 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-21 19:06

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0036_alter_taggedarticle_tag"),
    ]

    operations = [
        migrations.RemoveField(
            model_name="homearticlepage",
            name="tags",
        ),
    ]
+24 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-21 19:06

import modelcluster.contrib.taggit
from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0037_remove_homearticlepage_tags"),
    ]

    operations = [
        migrations.AddField(
            model_name="homearticlepage",
            name="tags",
            field=modelcluster.contrib.taggit.ClusterTaggableManager(
                blank=True,
                help_text="A comma-separated list of tags.",
                through="home.TaggedArticle",
                to="home.Tag",
                verbose_name="Štítky",
            ),
        ),
    ]
+20 −0
Original line number Diff line number Diff line
# Generated by Django 4.2.4 on 2023-08-21 19:09

from django.db import migrations


class Migration(migrations.Migration):
    dependencies = [
        ("home", "0038_homearticlepage_tags"),
    ]

    operations = [
        migrations.RemoveField(
            model_name="taggedarticle",
            name="content_type",
        ),
        migrations.RemoveField(
            model_name="taggedarticle",
            name="object_id",
        ),
    ]
+674 −3
Original line number Diff line number Diff line
from django.db import models

from django.utils import timezone
from modelcluster.contrib.taggit import ClusterTaggableManager
from modelcluster.fields import ParentalKey
from taggit.models import ItemBase, TagBase
from wagtail.admin.panels import (
    FieldPanel,
    InlinePanel,
    MultiFieldPanel,
    ObjectList,
    TabbedInterface,
)
from wagtail.blocks import PageChooserBlock
from wagtail.contrib.routable_page.models import RoutablePageMixin, path
from wagtail.contrib.settings.models import BaseSiteSetting, register_setting
from wagtail.documents import get_document_model
from wagtail.fields import RichTextField, StreamField
from wagtail.models import Page
from wagtail_color_panel.edit_handlers import NativeColorPanel
from wagtail_color_panel.fields import ColorField

from .blocks import PersonBlock

# --- BEGIN Tags ---


class Tag(TagBase):
    bg_color = ColorField(verbose_name="Barva pozadí", default="#fafafa")
    fg_color = ColorField(verbose_name="Barva textu", default="#000000")

    panels = [
        FieldPanel("name"),
        FieldPanel("slug"),
        NativeColorPanel("bg_color"),
        NativeColorPanel("fg_color"),
    ]


class TaggedArticle(ItemBase):
    content_object = ParentalKey(
        "home.HomeArticlePage", on_delete=models.CASCADE, related_name="tagged_items"
    )

    tag = models.ForeignKey(Tag, on_delete=models.CASCADE, related_name="article_tags")


# --- END Tags ---


class HomePage(RoutablePageMixin, Page):
    heading_text = RichTextField(verbose_name="Hlavní text stránky")

    # --- Donations ---

    donation_text = RichTextField(verbose_name="Text pro dary")

    # --- Contact info ---

    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 ---

    director = StreamField(
        [
            ("person", PersonBlock()),
            (
                "person_page",
                PageChooserBlock(
                    page_type="home.HomePersonPage", label="Stránka osoby", icon="user"
                ),
            ),
        ],
        verbose_name="Ředitel",
        use_json_field=True,
        blank=True,
        null=True,
    )
    director_description = RichTextField(verbose_name="Ředitel - popis")

    academic_council = StreamField(
        [
            ("person", PersonBlock()),
            (
                "person_page",
                PageChooserBlock(
                    page_type="home.HomePersonPage", label="Stránka osoby", icon="user"
                ),
            ),
        ],
        verbose_name="Akademická rada",
        use_json_field=True,
        blank=True,
        null=True,
    )
    academic_council_description = RichTextField(verbose_name="Akademická rada - popis")

    controller = StreamField(
        [
            ("person", PersonBlock()),
            (
                "person_page",
                PageChooserBlock(
                    page_type="home.HomePersonPage", label="Stránka osoby", icon="user"
                ),
            ),
        ],
        verbose_name="Kontrolor",
        use_json_field=True,
        blank=True,
        null=True,
    )
    controller_description = RichTextField(verbose_name="Kontrolor - popis")

    council_members = StreamField(
        [
            ("person", PersonBlock()),
            (
                "person_page",
                PageChooserBlock(
                    page_type="home.HomePersonPage", label="Stránka osoby", icon="user"
                ),
            ),
        ],
        verbose_name="Správní rada",
        use_json_field=True,
        blank=True,
        null=True,
    )
    council_members_description = RichTextField(verbose_name="Správní rada - popis")

    volunteers = StreamField(
        [
            ("person", PersonBlock()),
            (
                "person_page",
                PageChooserBlock(
                    page_type="home.HomePersonPage", label="Stránka osoby", icon="user"
                ),
            ),
        ],
        verbose_name="Dobrovolníci",
        use_json_field=True,
        blank=True,
        null=True,
    )
    volunteers_description = RichTextField(verbose_name="Dobrovolníci - popis")

    employees = StreamField(
        [
            ("person", PersonBlock()),
            (
                "person_page",
                PageChooserBlock(
                    page_type="home.HomePersonPage", label="Stránka osoby", icon="user"
                ),
            ),
        ],
        verbose_name="Zaměstnanci",
        use_json_field=True,
        blank=True,
        null=True,
    )
    employees_description = RichTextField(verbose_name="Zaměstnanci - popis")

    subpage_types = [
        "home.HomeArticlesPage",
        "home.HomeEventsPage",
        "home.HomeDocumentsPage",
        "home.HomeVideosPage",
        "home.HomePeoplePage",
    ]

    intro_panels = Page.content_panels + [
        FieldPanel("heading_text", icon="pilcrow"),
        FieldPanel("donation_text", icon="pilcrow"),
        MultiFieldPanel(
            [
                FieldPanel("address", icon="home"),
                FieldPanel("branch", icon="home"),
                FieldPanel("email", icon="pilcrow"),
                FieldPanel("ds_id", icon="mail"),
            ],
            heading="Kontaktní údaje",
        ),
    ]

    people_panels = [
        FieldPanel("director_description", icon="pilcrow"),
        FieldPanel("director", icon="user"),
        FieldPanel("academic_council_description"),
        FieldPanel("academic_council", icon="user"),
        FieldPanel("controller_description", icon="pilcrow"),
        FieldPanel("controller", icon="user"),
        FieldPanel("council_members_description", icon="pilcrow"),
        FieldPanel("council_members", icon="group"),
        FieldPanel("volunteers_description", icon="pilcrow"),
        FieldPanel("volunteers", icon="group"),
        FieldPanel("employees_description", icon="pilcrow"),
        FieldPanel("employees", icon="group"),
    ]

    edit_handler = TabbedInterface(
        [
            ObjectList(intro_panels, heading="Základy"),
            ObjectList(people_panels, heading="Lidé"),
            ObjectList(Page.promote_panels, heading="Propagace"),
        ]
    )

    # Articles

    @property
    def articles_page(self) -> "HomeArticlesPage":
        return HomeArticlesPage.objects.live().first()

    @property
    def latest_articles(self) -> "QuerySet":
        return HomeArticlePage.objects.order_by("-date").live().all()[:3]

    # Events

    @property
    def events_page(self) -> "HomeEventsPage":
        return HomeEventsPage.objects.live().first()

    @property
    def latest_events(self) -> "QuerySet":
        return HomeEventPage.objects.order_by("-date").live().all()[:8]

    # Documents

    @property
    def documents_page(self) -> "HomeDocumentsPage":
        return HomeDocumentsPage.objects.child_of(self).live().first()

    @property
    def latest_documents(self) -> list:
        documents = list(
            HomeDocumentPage.objects.child_of(self.documents_page)
            .order_by("-date")
            .live()
            .all()[:4]
        )

        # Pad documents list so it's always 4 items long
        documents += [None] * (4 - len(documents))

        document_directories = list(
            HomeDocumentsPage.objects.child_of(self.documents_page).live().all()[:4]
        )

        # Replace 0-4 last items in the list with directories
        position_in_documents = 3

        for document_directory in document_directories:
            documents[position_in_documents] = document_directory
            position_in_documents -= 1

        # Then remove the Nones we padded the list with
        return list(filter(lambda document: document is not None, documents))

    # Feed

    @path("feeds/atom/")
    def view_feed(self, request):
        # Avoid circular import
        from .feeds import LatestArticlesFeed  # noqa

        return LatestArticlesFeed()(request, self.articles_page.id)

    class Meta:
        verbose_name = "Domovská stránka"


# --- BEGIN Articles, events, videos and documents ---


class HomeArticlesPage(Page):
    content = RichTextField(verbose_name="Obsah", blank=True, null=True)

    parent_page_type = ["home.HomePage"]
    subpage_types = ["home.HomeArticlePage"]

    content_panels = Page.content_panels + [
        FieldPanel("content", icon="pilcrow"),
    ]

    @property
    def articles(self):
        return HomeArticlePage.objects.live().order_by("-date")

    def get_context(self, request):
        context = super().get_context(request)
        articles = self.articles

        # Filter by tag
        tag = request.GET.get("tag")
        if tag:
            articles = articles.filter(tags__name=tag)
            context["filtered_tag"] = tag

        context["articles"] = articles

        return context