From 3adcf58225489a73142c9bb46d4361b908f75879 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org>
Date: Sat, 16 Dec 2023 17:36:28 +0100
Subject: [PATCH] sync styleguide changes, run hooks

---
 main/blocks.py                                |   2 +-
 main/menu.py                                  |  10 +-
 .../0063_alter_mainhomepage_content.py        | 130 +++++++++-
 ...inhomepage_important_item_name_and_more.py | 149 ++++++++++--
 ..._alter_mainhomepage_important_item_name.py |  15 +-
 .../0066_alter_mainhomepage_menu.py           |  44 +++-
 .../0067_alter_mainhomepage_menu_and_more.py  | 100 +++++++-
 ...8_alter_mainhomepage_footer_other_links.py |  35 ++-
 ...069_remove_mainarticlepage_article_type.py |   7 +-
 .../0070_remove_mainarticlespage_perex.py     |   7 +-
 ...71_remove_mainpeoplepage_perex_and_more.py |  25 +-
 .../0072_alter_mainarticlepage_content.py     |  98 +++++++-
 ..._alter_mainarticlepage_content_and_more.py |  60 ++++-
 .../0074_mainpersonpage_primary_group.py      |  15 +-
 ...me_people_mainpersonpage_related_people.py |   9 +-
 .../0076_remove_mainarticlepage_is_black.py   |   7 +-
 .../0077_alter_mainarticlepage_image.py       |  21 +-
 .../0078_alter_mainarticlepage_image.py       |  19 +-
 ..._mainpersonpage_related_people_and_more.py |  15 +-
 ..._mainpersonpage_related_people_and_more.py |  27 ++-
 ..._remove_mainarticlepage_region_and_more.py | 121 +++++++++-
 ...nhomepage_europarl_section_tag_and_more.py |  64 +++--
 ...3_remove_mainprogrampage_perex_and_more.py |  39 ++-
 .../0084_alter_mainprogrampage_program.py     | 223 +++++++++++++++++-
 ...rticlesectiontagged_sectiontag_and_more.py |  76 ++++--
 .../0086_mainarticlepage_section_tags.py      |  17 +-
 .../0087_mainhomepage_main_section_tag.py     |  18 +-
 ...alter_mainhomepage_europarl_section_tag.py |  18 +-
 main/models.py                                |  59 +++--
 main/static/main/pirati-ui.svg                |   2 +-
 .../atoms/containers/container__medium.html   |   2 +-
 .../atoms/containers/container__narrow.html   |   2 +-
 .../atoms/containers/container__wide.html     |   2 +-
 .../main/includes/atoms/grids/grids.html      |   2 +-
 .../main/includes/atoms/text/font_sizes.html  |   2 +-
 .../main/includes/atoms/text/headings.html    |   2 +-
 .../main/includes/atoms/text/paragraph.html   |   2 +-
 .../main/includes/atoms/text/prose.html       |   2 +-
 .../molecules/blocks/message_block.html       |   2 +-
 39 files changed, 1197 insertions(+), 253 deletions(-)

diff --git a/main/blocks.py b/main/blocks.py
index 10d1ef81..9d81fb70 100644
--- a/main/blocks.py
+++ b/main/blocks.py
@@ -315,7 +315,7 @@ class ArticleImageMixin(StructBlock):
     image_source = CharBlock(
         label="Zdroj obrázku",
         help_text="Např. 'europoslankyně Markéta Gregorová'",
-        required=False
+        required=False,
     )
 
     text = RichTextBlock(label="Text")
diff --git a/main/menu.py b/main/menu.py
index 2bc18a55..ab74d03f 100644
--- a/main/menu.py
+++ b/main/menu.py
@@ -1,18 +1,18 @@
 from django.db import models
+from wagtail import blocks
+from wagtail.admin.panels import FieldPanel, MultiFieldPanel
 from wagtail.fields import StreamField
+from wagtail.models import Page
 
 from shared.blocks import MenuItemBlock as MenuItemBlockBase
 from shared.models import MenuMixin as MenuMixinBase
-from wagtail.admin.panels import FieldPanel, MultiFieldPanel
-from wagtail import blocks
-from wagtail.models import Page
 
 
 class MenuItemBlock(MenuItemBlockBase):
     title = blocks.CharBlock(
         label="Titulek",
         help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
-        required=True
+        required=True,
     )
 
     class Meta:
@@ -33,7 +33,7 @@ class MenuMixin(MenuMixinBase):
         help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
         max_length=16,
         blank=True,
-        null=True
+        null=True,
     )
 
     important_item_page = models.ForeignKey(
diff --git a/main/migrations/0063_alter_mainhomepage_content.py b/main/migrations/0063_alter_mainhomepage_content.py
index 98f5a0d4..1ac616de 100644
--- a/main/migrations/0063_alter_mainhomepage_content.py
+++ b/main/migrations/0063_alter_mainhomepage_content.py
@@ -1,22 +1,138 @@
 # Generated by Django 4.1.10 on 2023-12-12 09:31
 
-from django.db import migrations
-import main.blocks
 import wagtail.blocks
 import wagtail.fields
 import wagtail.images.blocks
+from django.db import migrations
 
+import main.blocks
 
-class Migration(migrations.Migration):
 
+class Migration(migrations.Migration):
     dependencies = [
-        ('main', '0062_alter_mainpersonpage_calendar_url'),
+        ("main", "0062_alter_mainpersonpage_calendar_url"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainhomepage',
-            name='content',
-            field=wagtail.fields.StreamField([('carousel', wagtail.blocks.StructBlock([('button_link', wagtail.blocks.URLBlock(label='Odkaz tlačítka')), ('button_text', wagtail.blocks.CharBlock(label='Text tlačítka')), ('image', wagtail.images.blocks.ImageChooserBlock(label='Hlavní obrázek')), ('line_1', wagtail.blocks.TextBlock(label='První řádek')), ('line_2', wagtail.blocks.TextBlock(label='Druhý řádek'))])), ('news', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Nejnovější články se načtou automaticky', label='Titulek')), ('description', wagtail.blocks.TextBlock(label='Popis'))])), ('people', wagtail.blocks.StructBlock([('title_line_1', wagtail.blocks.CharBlock(label='První řádek titulku')), ('title_line_2', wagtail.blocks.CharBlock(label='Druhý řádek titulku')), ('description', wagtail.blocks.TextBlock(label='Popis')), ('list', wagtail.blocks.ListBlock(main.blocks.BoxBlock, label='Boxíky'))])), ('regions', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Články pro regiony se načtou automaticky', label='Titulek'))])), ('boxes', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Nadpis')), ('list', wagtail.blocks.ListBlock(main.blocks.BoxBlock, label='Boxíky')), ('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek pozadí', required=False))]))], blank=True, use_json_field=True, verbose_name='Hlavní obsah'),
+            model_name="mainhomepage",
+            name="content",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "carousel",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "button_link",
+                                    wagtail.blocks.URLBlock(label="Odkaz tlačítka"),
+                                ),
+                                (
+                                    "button_text",
+                                    wagtail.blocks.CharBlock(label="Text tlačítka"),
+                                ),
+                                (
+                                    "image",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        label="Hlavní obrázek"
+                                    ),
+                                ),
+                                (
+                                    "line_1",
+                                    wagtail.blocks.TextBlock(label="První řádek"),
+                                ),
+                                (
+                                    "line_2",
+                                    wagtail.blocks.TextBlock(label="Druhý řádek"),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "news",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Nejnovější články se načtou automaticky",
+                                        label="Titulek",
+                                    ),
+                                ),
+                                (
+                                    "description",
+                                    wagtail.blocks.TextBlock(label="Popis"),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "people",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title_line_1",
+                                    wagtail.blocks.CharBlock(
+                                        label="První řádek titulku"
+                                    ),
+                                ),
+                                (
+                                    "title_line_2",
+                                    wagtail.blocks.CharBlock(
+                                        label="Druhý řádek titulku"
+                                    ),
+                                ),
+                                (
+                                    "description",
+                                    wagtail.blocks.TextBlock(label="Popis"),
+                                ),
+                                (
+                                    "list",
+                                    wagtail.blocks.ListBlock(
+                                        main.blocks.BoxBlock, label="Boxíky"
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "regions",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Články pro regiony se načtou automaticky",
+                                        label="Titulek",
+                                    ),
+                                )
+                            ]
+                        ),
+                    ),
+                    (
+                        "boxes",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("title", wagtail.blocks.CharBlock(label="Nadpis")),
+                                (
+                                    "list",
+                                    wagtail.blocks.ListBlock(
+                                        main.blocks.BoxBlock, label="Boxíky"
+                                    ),
+                                ),
+                                (
+                                    "image",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        label="Obrázek pozadí", required=False
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Hlavní obsah",
+            ),
         ),
     ]
diff --git a/main/migrations/0064_mainhomepage_important_item_name_and_more.py b/main/migrations/0064_mainhomepage_important_item_name_and_more.py
index e83b2b84..00dfd660 100644
--- a/main/migrations/0064_mainhomepage_important_item_name_and_more.py
+++ b/main/migrations/0064_mainhomepage_important_item_name_and_more.py
@@ -1,39 +1,154 @@
 # Generated by Django 4.1.10 on 2023-12-12 10:22
 
-from django.db import migrations, models
 import django.db.models.deletion
-import main.blocks
 import wagtail.blocks
 import wagtail.fields
 import wagtail.images.blocks
+from django.db import migrations, models
 
+import main.blocks
 
-class Migration(migrations.Migration):
 
+class Migration(migrations.Migration):
     dependencies = [
-        ('wagtailcore', '0083_workflowcontenttype'),
-        ('main', '0063_alter_mainhomepage_content'),
+        ("wagtailcore", "0083_workflowcontenttype"),
+        ("main", "0063_alter_mainhomepage_content"),
     ]
 
     operations = [
         migrations.AddField(
-            model_name='mainhomepage',
-            name='important_item_name',
-            field=models.CharField(blank=True, help_text='Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže', max_length=16, null=True, verbose_name='Jméno'),
+            model_name="mainhomepage",
+            name="important_item_name",
+            field=models.CharField(
+                blank=True,
+                help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže",
+                max_length=16,
+                null=True,
+                verbose_name="Jméno",
+            ),
         ),
         migrations.AddField(
-            model_name='mainhomepage',
-            name='important_item_page',
-            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailcore.page', verbose_name='Stránka'),
+            model_name="mainhomepage",
+            name="important_item_page",
+            field=models.ForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.PROTECT,
+                related_name="+",
+                to="wagtailcore.page",
+                verbose_name="Stránka",
+            ),
         ),
         migrations.AddField(
-            model_name='mainhomepage',
-            name='important_item_url',
-            field=models.URLField(blank=True, null=True, verbose_name='Adresa'),
+            model_name="mainhomepage",
+            name="important_item_url",
+            field=models.URLField(blank=True, null=True, verbose_name="Adresa"),
         ),
         migrations.AlterField(
-            model_name='mainhomepage',
-            name='content',
-            field=wagtail.fields.StreamField([('carousel', wagtail.blocks.StructBlock([('line_1', wagtail.blocks.TextBlock(label='První řádek')), ('line_2', wagtail.blocks.TextBlock(label='Druhý řádek'))])), ('news', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Nejnovější články se načtou automaticky', label='Titulek')), ('description', wagtail.blocks.TextBlock(label='Popis'))])), ('people', wagtail.blocks.StructBlock([('title_line_1', wagtail.blocks.CharBlock(label='První řádek titulku')), ('title_line_2', wagtail.blocks.CharBlock(label='Druhý řádek titulku')), ('description', wagtail.blocks.TextBlock(label='Popis')), ('list', wagtail.blocks.ListBlock(main.blocks.BoxBlock, label='Boxíky'))])), ('regions', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Články pro regiony se načtou automaticky', label='Titulek'))])), ('boxes', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Nadpis')), ('list', wagtail.blocks.ListBlock(main.blocks.BoxBlock, label='Boxíky')), ('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek pozadí', required=False))]))], blank=True, use_json_field=True, verbose_name='Hlavní obsah'),
+            model_name="mainhomepage",
+            name="content",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "carousel",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "line_1",
+                                    wagtail.blocks.TextBlock(label="První řádek"),
+                                ),
+                                (
+                                    "line_2",
+                                    wagtail.blocks.TextBlock(label="Druhý řádek"),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "news",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Nejnovější články se načtou automaticky",
+                                        label="Titulek",
+                                    ),
+                                ),
+                                (
+                                    "description",
+                                    wagtail.blocks.TextBlock(label="Popis"),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "people",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title_line_1",
+                                    wagtail.blocks.CharBlock(
+                                        label="První řádek titulku"
+                                    ),
+                                ),
+                                (
+                                    "title_line_2",
+                                    wagtail.blocks.CharBlock(
+                                        label="Druhý řádek titulku"
+                                    ),
+                                ),
+                                (
+                                    "description",
+                                    wagtail.blocks.TextBlock(label="Popis"),
+                                ),
+                                (
+                                    "list",
+                                    wagtail.blocks.ListBlock(
+                                        main.blocks.BoxBlock, label="Boxíky"
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "regions",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Články pro regiony se načtou automaticky",
+                                        label="Titulek",
+                                    ),
+                                )
+                            ]
+                        ),
+                    ),
+                    (
+                        "boxes",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("title", wagtail.blocks.CharBlock(label="Nadpis")),
+                                (
+                                    "list",
+                                    wagtail.blocks.ListBlock(
+                                        main.blocks.BoxBlock, label="Boxíky"
+                                    ),
+                                ),
+                                (
+                                    "image",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        label="Obrázek pozadí", required=False
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Hlavní obsah",
+            ),
         ),
     ]
diff --git a/main/migrations/0065_alter_mainhomepage_important_item_name.py b/main/migrations/0065_alter_mainhomepage_important_item_name.py
index 7f67803a..446c1ab9 100644
--- a/main/migrations/0065_alter_mainhomepage_important_item_name.py
+++ b/main/migrations/0065_alter_mainhomepage_important_item_name.py
@@ -4,15 +4,20 @@ from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0064_mainhomepage_important_item_name_and_more'),
+        ("main", "0064_mainhomepage_important_item_name_and_more"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainhomepage',
-            name='important_item_name',
-            field=models.CharField(blank=True, help_text='Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.', max_length=16, null=True, verbose_name='Jméno'),
+            model_name="mainhomepage",
+            name="important_item_name",
+            field=models.CharField(
+                blank=True,
+                help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
+                max_length=16,
+                null=True,
+                verbose_name="Jméno",
+            ),
         ),
     ]
diff --git a/main/migrations/0066_alter_mainhomepage_menu.py b/main/migrations/0066_alter_mainhomepage_menu.py
index cbc8499e..817c550a 100644
--- a/main/migrations/0066_alter_mainhomepage_menu.py
+++ b/main/migrations/0066_alter_mainhomepage_menu.py
@@ -1,20 +1,52 @@
 # Generated by Django 4.1.10 on 2023-12-12 10:43
 
-from django.db import migrations
 import wagtail.blocks
 import wagtail.fields
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0065_alter_mainhomepage_important_item_name'),
+        ("main", "0065_alter_mainhomepage_important_item_name"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainhomepage',
-            name='menu',
-            field=wagtail.fields.StreamField([('menu_item', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.', label='Titulek', required=True)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]))], blank=True, use_json_field=True, verbose_name='Menu'),
+            model_name="mainhomepage",
+            name="menu",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "menu_item",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
+                                        label="Titulek",
+                                        required=True,
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        label="Stránka", required=False
+                                    ),
+                                ),
+                                (
+                                    "link",
+                                    wagtail.blocks.URLBlock(
+                                        label="Odkaz", required=False
+                                    ),
+                                ),
+                            ]
+                        ),
+                    )
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Menu",
+            ),
         ),
     ]
diff --git a/main/migrations/0067_alter_mainhomepage_menu_and_more.py b/main/migrations/0067_alter_mainhomepage_menu_and_more.py
index e7256296..4ea0adb6 100644
--- a/main/migrations/0067_alter_mainhomepage_menu_and_more.py
+++ b/main/migrations/0067_alter_mainhomepage_menu_and_more.py
@@ -1,30 +1,106 @@
 # Generated by Django 4.1.10 on 2023-12-12 11:35
 
-from django.db import migrations
 import wagtail.blocks
 import wagtail.fields
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0066_alter_mainhomepage_menu'),
+        ("main", "0066_alter_mainhomepage_menu"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainhomepage',
-            name='menu',
-            field=wagtail.fields.StreamField([('menu_item', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.', label='Titulek', required=True)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]))], blank=True, use_json_field=True, verbose_name='Položky'),
+            model_name="mainhomepage",
+            name="menu",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "menu_item",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
+                                        label="Titulek",
+                                        required=True,
+                                    ),
+                                ),
+                                (
+                                    "page",
+                                    wagtail.blocks.PageChooserBlock(
+                                        label="Stránka", required=False
+                                    ),
+                                ),
+                                (
+                                    "link",
+                                    wagtail.blocks.URLBlock(
+                                        label="Odkaz", required=False
+                                    ),
+                                ),
+                            ]
+                        ),
+                    )
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Položky",
+            ),
         ),
         migrations.AlterField(
-            model_name='mainhomepage',
-            name='social_links',
-            field=wagtail.fields.StreamField([('social_links', wagtail.blocks.StructBlock([('text', wagtail.blocks.CharBlock(label='Název')), ('link', wagtail.blocks.URLBlock(label='Odkaz')), ('icon', wagtail.blocks.CharBlock(help_text='Seznam ikon - https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons <br/>Název ikony zadejte bez tečky na začátku', label='Ikona'))]))], blank=True, use_json_field=True, verbose_name='Odkazy na sociální sítě'),
+            model_name="mainhomepage",
+            name="social_links",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "social_links",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("text", wagtail.blocks.CharBlock(label="Název")),
+                                ("link", wagtail.blocks.URLBlock(label="Odkaz")),
+                                (
+                                    "icon",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Seznam ikon - https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons <br/>Název ikony zadejte bez tečky na začátku",
+                                        label="Ikona",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    )
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Odkazy na sociální sítě",
+            ),
         ),
         migrations.AlterField(
-            model_name='mainpersonpage',
-            name='social_links',
-            field=wagtail.fields.StreamField([('social_links', wagtail.blocks.StructBlock([('text', wagtail.blocks.CharBlock(label='Název')), ('link', wagtail.blocks.URLBlock(label='Odkaz')), ('icon', wagtail.blocks.CharBlock(help_text='Seznam ikon - https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons <br/>Název ikony zadejte bez tečky na začátku', label='Ikona'))]))], blank=True, use_json_field=True, verbose_name='Odkazy na sociální sítě'),
+            model_name="mainpersonpage",
+            name="social_links",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "social_links",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("text", wagtail.blocks.CharBlock(label="Název")),
+                                ("link", wagtail.blocks.URLBlock(label="Odkaz")),
+                                (
+                                    "icon",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Seznam ikon - https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons <br/>Název ikony zadejte bez tečky na začátku",
+                                        label="Ikona",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    )
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Odkazy na sociální sítě",
+            ),
         ),
     ]
diff --git a/main/migrations/0068_alter_mainhomepage_footer_other_links.py b/main/migrations/0068_alter_mainhomepage_footer_other_links.py
index 9ec35fbd..6c8ede17 100644
--- a/main/migrations/0068_alter_mainhomepage_footer_other_links.py
+++ b/main/migrations/0068_alter_mainhomepage_footer_other_links.py
@@ -1,21 +1,42 @@
 # Generated by Django 4.1.10 on 2023-12-12 19:02
 
-from django.db import migrations
-import main.blocks
 import wagtail.blocks
 import wagtail.fields
+from django.db import migrations
 
+import main.blocks
 
-class Migration(migrations.Migration):
 
+class Migration(migrations.Migration):
     dependencies = [
-        ('main', '0067_alter_mainhomepage_menu_and_more'),
+        ("main", "0067_alter_mainhomepage_menu_and_more"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainhomepage',
-            name='footer_other_links',
-            field=wagtail.fields.StreamField([('other_links', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek')), ('list', wagtail.blocks.ListBlock(main.blocks.LinkBlock, label='Seznam odkazů s titulkem'))]))], blank=True, use_json_field=True, verbose_name='Odkazy v zápatí webu'),
+            model_name="mainhomepage",
+            name="footer_other_links",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "other_links",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("title", wagtail.blocks.CharBlock(label="Titulek")),
+                                (
+                                    "list",
+                                    wagtail.blocks.ListBlock(
+                                        main.blocks.LinkBlock,
+                                        label="Seznam odkazů s titulkem",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    )
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Odkazy v zápatí webu",
+            ),
         ),
     ]
diff --git a/main/migrations/0069_remove_mainarticlepage_article_type.py b/main/migrations/0069_remove_mainarticlepage_article_type.py
index 93721beb..53c9c1d6 100644
--- a/main/migrations/0069_remove_mainarticlepage_article_type.py
+++ b/main/migrations/0069_remove_mainarticlepage_article_type.py
@@ -4,14 +4,13 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0068_alter_mainhomepage_footer_other_links'),
+        ("main", "0068_alter_mainhomepage_footer_other_links"),
     ]
 
     operations = [
         migrations.RemoveField(
-            model_name='mainarticlepage',
-            name='article_type',
+            model_name="mainarticlepage",
+            name="article_type",
         ),
     ]
diff --git a/main/migrations/0070_remove_mainarticlespage_perex.py b/main/migrations/0070_remove_mainarticlespage_perex.py
index 3b321d69..dde35d93 100644
--- a/main/migrations/0070_remove_mainarticlespage_perex.py
+++ b/main/migrations/0070_remove_mainarticlespage_perex.py
@@ -4,14 +4,13 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0069_remove_mainarticlepage_article_type'),
+        ("main", "0069_remove_mainarticlepage_article_type"),
     ]
 
     operations = [
         migrations.RemoveField(
-            model_name='mainarticlespage',
-            name='perex',
+            model_name="mainarticlespage",
+            name="perex",
         ),
     ]
diff --git a/main/migrations/0071_remove_mainpeoplepage_perex_and_more.py b/main/migrations/0071_remove_mainpeoplepage_perex_and_more.py
index e07b81ca..a682cce5 100644
--- a/main/migrations/0071_remove_mainpeoplepage_perex_and_more.py
+++ b/main/migrations/0071_remove_mainpeoplepage_perex_and_more.py
@@ -1,30 +1,33 @@
 # Generated by Django 4.1.10 on 2023-12-12 22:44
 
-from django.db import migrations
 import wagtail.fields
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0070_remove_mainarticlespage_perex'),
+        ("main", "0070_remove_mainarticlespage_perex"),
     ]
 
     operations = [
         migrations.RemoveField(
-            model_name='mainpeoplepage',
-            name='perex',
+            model_name="mainpeoplepage",
+            name="perex",
         ),
         migrations.AddField(
-            model_name='mainpeoplepage',
-            name='perex_col_1',
-            field=wagtail.fields.RichTextField(default='', verbose_name='Perex - první sloupec'),
+            model_name="mainpeoplepage",
+            name="perex_col_1",
+            field=wagtail.fields.RichTextField(
+                default="", verbose_name="Perex - první sloupec"
+            ),
             preserve_default=False,
         ),
         migrations.AddField(
-            model_name='mainpeoplepage',
-            name='perex_col_2',
-            field=wagtail.fields.RichTextField(default='', verbose_name='Perex - druhý sloupec'),
+            model_name="mainpeoplepage",
+            name="perex_col_2",
+            field=wagtail.fields.RichTextField(
+                default="", verbose_name="Perex - druhý sloupec"
+            ),
             preserve_default=False,
         ),
     ]
diff --git a/main/migrations/0072_alter_mainarticlepage_content.py b/main/migrations/0072_alter_mainarticlepage_content.py
index b0853751..8ddf6672 100644
--- a/main/migrations/0072_alter_mainarticlepage_content.py
+++ b/main/migrations/0072_alter_mainarticlepage_content.py
@@ -1,22 +1,108 @@
 # Generated by Django 4.1.10 on 2023-12-13 20:05
 
-from django.db import migrations
 import wagtail.blocks
 import wagtail.documents.blocks
 import wagtail.fields
 import wagtail.images.blocks
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0071_remove_mainpeoplepage_perex_and_more'),
+        ("main", "0071_remove_mainpeoplepage_perex_and_more"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainarticlepage',
-            name='content',
-            field=wagtail.fields.StreamField([('text', wagtail.blocks.RichTextBlock(template='main/includes/atoms/text/prose_richtext.html')), ('quote', wagtail.blocks.StructBlock([('quote', wagtail.blocks.CharBlock(label='Citace')), ('autor_name', wagtail.blocks.CharBlock(label='Jméno autora'))])), ('download', wagtail.blocks.StructBlock([('file', wagtail.documents.blocks.DocumentChooserBlock(label='Stáhnutelný soubor'))])), ('image_left', wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek')), ('image_source', wagtail.blocks.CharBlock(help_text="Např. 'europoslankyně Markéta Gregorová'", label='Zdroj obrázku')), ('href', wagtail.blocks.URLBlock(label='Odkaz k textu')), ('text', wagtail.blocks.RichTextBlock(label='Text'))])), ('image_right', wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek')), ('image_source', wagtail.blocks.CharBlock(help_text="Např. 'europoslankyně Markéta Gregorová'", label='Zdroj obrázku')), ('href', wagtail.blocks.URLBlock(label='Odkaz k textu')), ('text', wagtail.blocks.RichTextBlock(label='Text'))]))], blank=True, use_json_field=True, verbose_name='Článek'),
+            model_name="mainarticlepage",
+            name="content",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "text",
+                        wagtail.blocks.RichTextBlock(
+                            template="main/includes/atoms/text/prose_richtext.html"
+                        ),
+                    ),
+                    (
+                        "quote",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("quote", wagtail.blocks.CharBlock(label="Citace")),
+                                (
+                                    "autor_name",
+                                    wagtail.blocks.CharBlock(label="Jméno autora"),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "download",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "file",
+                                    wagtail.documents.blocks.DocumentChooserBlock(
+                                        label="Stáhnutelný soubor"
+                                    ),
+                                )
+                            ]
+                        ),
+                    ),
+                    (
+                        "image_left",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "image",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        label="Obrázek"
+                                    ),
+                                ),
+                                (
+                                    "image_source",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Např. 'europoslankyně Markéta Gregorová'",
+                                        label="Zdroj obrázku",
+                                    ),
+                                ),
+                                (
+                                    "href",
+                                    wagtail.blocks.URLBlock(label="Odkaz k textu"),
+                                ),
+                                ("text", wagtail.blocks.RichTextBlock(label="Text")),
+                            ]
+                        ),
+                    ),
+                    (
+                        "image_right",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "image",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        label="Obrázek"
+                                    ),
+                                ),
+                                (
+                                    "image_source",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Např. 'europoslankyně Markéta Gregorová'",
+                                        label="Zdroj obrázku",
+                                    ),
+                                ),
+                                (
+                                    "href",
+                                    wagtail.blocks.URLBlock(label="Odkaz k textu"),
+                                ),
+                                ("text", wagtail.blocks.RichTextBlock(label="Text")),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Článek",
+            ),
         ),
     ]
diff --git a/main/migrations/0073_alter_mainarticlepage_content_and_more.py b/main/migrations/0073_alter_mainarticlepage_content_and_more.py
index 1770f800..e1d84b06 100644
--- a/main/migrations/0073_alter_mainarticlepage_content_and_more.py
+++ b/main/migrations/0073_alter_mainarticlepage_content_and_more.py
@@ -1,31 +1,67 @@
 # Generated by Django 4.1.10 on 2023-12-13 22:27
 
-from django.db import migrations, models
 import wagtail.blocks
 import wagtail.documents.blocks
 import wagtail.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0072_alter_mainarticlepage_content'),
+        ("main", "0072_alter_mainarticlepage_content"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainarticlepage',
-            name='content',
-            field=wagtail.fields.StreamField([('text', wagtail.blocks.RichTextBlock(template='main/includes/atoms/text/prose_richtext.html')), ('quote', wagtail.blocks.StructBlock([('quote', wagtail.blocks.CharBlock(label='Citace')), ('autor_name', wagtail.blocks.CharBlock(label='Jméno autora'))])), ('download', wagtail.blocks.StructBlock([('file', wagtail.documents.blocks.DocumentChooserBlock(label='Stáhnutelný soubor'))]))], blank=True, use_json_field=True, verbose_name='Článek'),
+            model_name="mainarticlepage",
+            name="content",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "text",
+                        wagtail.blocks.RichTextBlock(
+                            template="main/includes/atoms/text/prose_richtext.html"
+                        ),
+                    ),
+                    (
+                        "quote",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("quote", wagtail.blocks.CharBlock(label="Citace")),
+                                (
+                                    "autor_name",
+                                    wagtail.blocks.CharBlock(label="Jméno autora"),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "download",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "file",
+                                    wagtail.documents.blocks.DocumentChooserBlock(
+                                        label="Stáhnutelný soubor"
+                                    ),
+                                )
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Článek",
+            ),
         ),
         migrations.AlterField(
-            model_name='mainpeoplepage',
-            name='perex_col_1',
-            field=models.TextField(verbose_name='Perex - první sloupec'),
+            model_name="mainpeoplepage",
+            name="perex_col_1",
+            field=models.TextField(verbose_name="Perex - první sloupec"),
         ),
         migrations.AlterField(
-            model_name='mainpeoplepage',
-            name='perex_col_2',
-            field=models.TextField(verbose_name='Perex - druhý sloupec'),
+            model_name="mainpeoplepage",
+            name="perex_col_2",
+            field=models.TextField(verbose_name="Perex - druhý sloupec"),
         ),
     ]
diff --git a/main/migrations/0074_mainpersonpage_primary_group.py b/main/migrations/0074_mainpersonpage_primary_group.py
index 8d360854..2887fe94 100644
--- a/main/migrations/0074_mainpersonpage_primary_group.py
+++ b/main/migrations/0074_mainpersonpage_primary_group.py
@@ -4,15 +4,20 @@ from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0073_alter_mainarticlepage_content_and_more'),
+        ("main", "0073_alter_mainarticlepage_content_and_more"),
     ]
 
     operations = [
         migrations.AddField(
-            model_name='mainpersonpage',
-            name='primary_group',
-            field=models.CharField(blank=True, help_text="např. 'Europarlament' nebo 'Sněmovna'", max_length=32, null=True, verbose_name='Kategorie'),
+            model_name="mainpersonpage",
+            name="primary_group",
+            field=models.CharField(
+                blank=True,
+                help_text="např. 'Europarlament' nebo 'Sněmovna'",
+                max_length=32,
+                null=True,
+                verbose_name="Kategorie",
+            ),
         ),
     ]
diff --git a/main/migrations/0075_rename_people_mainpersonpage_related_people.py b/main/migrations/0075_rename_people_mainpersonpage_related_people.py
index e57642f3..6bac1017 100644
--- a/main/migrations/0075_rename_people_mainpersonpage_related_people.py
+++ b/main/migrations/0075_rename_people_mainpersonpage_related_people.py
@@ -4,15 +4,14 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0074_mainpersonpage_primary_group'),
+        ("main", "0074_mainpersonpage_primary_group"),
     ]
 
     operations = [
         migrations.RenameField(
-            model_name='mainpersonpage',
-            old_name='people',
-            new_name='related_people',
+            model_name="mainpersonpage",
+            old_name="people",
+            new_name="related_people",
         ),
     ]
diff --git a/main/migrations/0076_remove_mainarticlepage_is_black.py b/main/migrations/0076_remove_mainarticlepage_is_black.py
index 0603085e..f5f43479 100644
--- a/main/migrations/0076_remove_mainarticlepage_is_black.py
+++ b/main/migrations/0076_remove_mainarticlepage_is_black.py
@@ -4,14 +4,13 @@ from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0075_rename_people_mainpersonpage_related_people'),
+        ("main", "0075_rename_people_mainpersonpage_related_people"),
     ]
 
     operations = [
         migrations.RemoveField(
-            model_name='mainarticlepage',
-            name='is_black',
+            model_name="mainarticlepage",
+            name="is_black",
         ),
     ]
diff --git a/main/migrations/0077_alter_mainarticlepage_image.py b/main/migrations/0077_alter_mainarticlepage_image.py
index a9111c1b..1e316591 100644
--- a/main/migrations/0077_alter_mainarticlepage_image.py
+++ b/main/migrations/0077_alter_mainarticlepage_image.py
@@ -1,20 +1,27 @@
 # Generated by Django 4.1.10 on 2023-12-14 18:08
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('wagtailimages', '0025_alter_image_file_alter_rendition_file'),
-        ('main', '0076_remove_mainarticlepage_is_black'),
+        ("wagtailimages", "0025_alter_image_file_alter_rendition_file"),
+        ("main", "0076_remove_mainarticlepage_is_black"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainarticlepage',
-            name='image',
-            field=models.ForeignKey(blank=True, help_text='Ukazuje se v kartách, které na článek odkazují. Např. na hlavní stránce a stránkách osob.', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailimages.image', verbose_name='Obrázek'),
+            model_name="mainarticlepage",
+            name="image",
+            field=models.ForeignKey(
+                blank=True,
+                help_text="Ukazuje se v kartách, které na článek odkazují. Např. na hlavní stránce a stránkách osob.",
+                null=True,
+                on_delete=django.db.models.deletion.PROTECT,
+                related_name="+",
+                to="wagtailimages.image",
+                verbose_name="Obrázek",
+            ),
         ),
     ]
diff --git a/main/migrations/0078_alter_mainarticlepage_image.py b/main/migrations/0078_alter_mainarticlepage_image.py
index e98b616d..3ec390c5 100644
--- a/main/migrations/0078_alter_mainarticlepage_image.py
+++ b/main/migrations/0078_alter_mainarticlepage_image.py
@@ -1,20 +1,25 @@
 # Generated by Django 4.1.10 on 2023-12-14 18:16
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('wagtailimages', '0025_alter_image_file_alter_rendition_file'),
-        ('main', '0077_alter_mainarticlepage_image'),
+        ("wagtailimages", "0025_alter_image_file_alter_rendition_file"),
+        ("main", "0077_alter_mainarticlepage_image"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainarticlepage',
-            name='image',
-            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='wagtailimages.image', verbose_name='obrázek'),
+            model_name="mainarticlepage",
+            name="image",
+            field=models.ForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.PROTECT,
+                to="wagtailimages.image",
+                verbose_name="obrázek",
+            ),
         ),
     ]
diff --git a/main/migrations/0079_remove_mainpersonpage_related_people_and_more.py b/main/migrations/0079_remove_mainpersonpage_related_people_and_more.py
index c9133781..91da938d 100644
--- a/main/migrations/0079_remove_mainpersonpage_related_people_and_more.py
+++ b/main/migrations/0079_remove_mainpersonpage_related_people_and_more.py
@@ -4,19 +4,20 @@ from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0078_alter_mainarticlepage_image'),
+        ("main", "0078_alter_mainarticlepage_image"),
     ]
 
     operations = [
         migrations.RemoveField(
-            model_name='mainpersonpage',
-            name='related_people',
+            model_name="mainpersonpage",
+            name="related_people",
         ),
         migrations.AddField(
-            model_name='mainpersonpage',
-            name='related_people',
-            field=models.ManyToManyField(to='main.mainpersonpage', verbose_name='Další lidé'),
+            model_name="mainpersonpage",
+            name="related_people",
+            field=models.ManyToManyField(
+                to="main.mainpersonpage", verbose_name="Další lidé"
+            ),
         ),
     ]
diff --git a/main/migrations/0080_remove_mainpersonpage_related_people_and_more.py b/main/migrations/0080_remove_mainpersonpage_related_people_and_more.py
index c2e1caa6..a83560f2 100644
--- a/main/migrations/0080_remove_mainpersonpage_related_people_and_more.py
+++ b/main/migrations/0080_remove_mainpersonpage_related_people_and_more.py
@@ -1,24 +1,35 @@
 # Generated by Django 4.1.10 on 2023-12-14 20:25
 
-from django.db import migrations
 import wagtail.blocks
 import wagtail.fields
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0079_remove_mainpersonpage_related_people_and_more'),
+        ("main", "0079_remove_mainpersonpage_related_people_and_more"),
     ]
 
     operations = [
         migrations.RemoveField(
-            model_name='mainpersonpage',
-            name='related_people',
+            model_name="mainpersonpage",
+            name="related_people",
         ),
         migrations.AddField(
-            model_name='mainpersonpage',
-            name='related_people',
-            field=wagtail.fields.StreamField([('person', wagtail.blocks.PageChooserBlock(label='Detail osoby', page_type=['main.MainPersonPage']))], blank=True, use_json_field=True, verbose_name='Další lidé'),
+            model_name="mainpersonpage",
+            name="related_people",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "person",
+                        wagtail.blocks.PageChooserBlock(
+                            label="Detail osoby", page_type=["main.MainPersonPage"]
+                        ),
+                    )
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Další lidé",
+            ),
         ),
     ]
diff --git a/main/migrations/0081_remove_mainarticlepage_region_and_more.py b/main/migrations/0081_remove_mainarticlepage_region_and_more.py
index 22708bd0..8fcbf468 100644
--- a/main/migrations/0081_remove_mainarticlepage_region_and_more.py
+++ b/main/migrations/0081_remove_mainarticlepage_region_and_more.py
@@ -1,26 +1,129 @@
 # Generated by Django 4.1.10 on 2023-12-14 20:54
 
-from django.db import migrations
-import main.blocks
 import wagtail.blocks
 import wagtail.fields
 import wagtail.images.blocks
+from django.db import migrations
 
+import main.blocks
 
-class Migration(migrations.Migration):
 
+class Migration(migrations.Migration):
     dependencies = [
-        ('main', '0080_remove_mainpersonpage_related_people_and_more'),
+        ("main", "0080_remove_mainpersonpage_related_people_and_more"),
     ]
 
     operations = [
         migrations.RemoveField(
-            model_name='mainarticlepage',
-            name='region',
+            model_name="mainarticlepage",
+            name="region",
         ),
         migrations.AlterField(
-            model_name='mainhomepage',
-            name='content',
-            field=wagtail.fields.StreamField([('carousel', wagtail.blocks.StructBlock([('line_1', wagtail.blocks.TextBlock(label='První řádek')), ('line_2', wagtail.blocks.TextBlock(label='Druhý řádek'))])), ('news', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Nejnovější články se načtou automaticky', label='Titulek')), ('description', wagtail.blocks.TextBlock(label='Popis'))])), ('europarl_news', wagtail.blocks.StructBlock([])), ('people', wagtail.blocks.StructBlock([('title_line_1', wagtail.blocks.CharBlock(label='První řádek titulku')), ('title_line_2', wagtail.blocks.CharBlock(label='Druhý řádek titulku')), ('description', wagtail.blocks.TextBlock(label='Popis')), ('list', wagtail.blocks.ListBlock(main.blocks.BoxBlock, label='Boxíky'))])), ('regions', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Články pro regiony se načtou automaticky', label='Titulek'))])), ('boxes', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Nadpis')), ('list', wagtail.blocks.ListBlock(main.blocks.BoxBlock, label='Boxíky')), ('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek pozadí', required=False))]))], blank=True, use_json_field=True, verbose_name='Hlavní obsah'),
+            model_name="mainhomepage",
+            name="content",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "carousel",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "line_1",
+                                    wagtail.blocks.TextBlock(label="První řádek"),
+                                ),
+                                (
+                                    "line_2",
+                                    wagtail.blocks.TextBlock(label="Druhý řádek"),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "news",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Nejnovější články se načtou automaticky",
+                                        label="Titulek",
+                                    ),
+                                ),
+                                (
+                                    "description",
+                                    wagtail.blocks.TextBlock(label="Popis"),
+                                ),
+                            ]
+                        ),
+                    ),
+                    ("europarl_news", wagtail.blocks.StructBlock([])),
+                    (
+                        "people",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title_line_1",
+                                    wagtail.blocks.CharBlock(
+                                        label="První řádek titulku"
+                                    ),
+                                ),
+                                (
+                                    "title_line_2",
+                                    wagtail.blocks.CharBlock(
+                                        label="Druhý řádek titulku"
+                                    ),
+                                ),
+                                (
+                                    "description",
+                                    wagtail.blocks.TextBlock(label="Popis"),
+                                ),
+                                (
+                                    "list",
+                                    wagtail.blocks.ListBlock(
+                                        main.blocks.BoxBlock, label="Boxíky"
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "regions",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        help_text="Články pro regiony se načtou automaticky",
+                                        label="Titulek",
+                                    ),
+                                )
+                            ]
+                        ),
+                    ),
+                    (
+                        "boxes",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("title", wagtail.blocks.CharBlock(label="Nadpis")),
+                                (
+                                    "list",
+                                    wagtail.blocks.ListBlock(
+                                        main.blocks.BoxBlock, label="Boxíky"
+                                    ),
+                                ),
+                                (
+                                    "image",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        label="Obrázek pozadí", required=False
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Hlavní obsah",
+            ),
         ),
     ]
diff --git a/main/migrations/0082_mainhomepage_europarl_section_tag_and_more.py b/main/migrations/0082_mainhomepage_europarl_section_tag_and_more.py
index 7545494b..efab7235 100644
--- a/main/migrations/0082_mainhomepage_europarl_section_tag_and_more.py
+++ b/main/migrations/0082_mainhomepage_europarl_section_tag_and_more.py
@@ -1,38 +1,72 @@
 # Generated by Django 4.1.10 on 2023-12-14 21:51
 
-from django.db import migrations, models
 import django.db.models.deletion
 import modelcluster.contrib.taggit
 import modelcluster.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('taggit', '0005_auto_20220424_2025'),
-        ('main', '0081_remove_mainarticlepage_region_and_more'),
+        ("taggit", "0005_auto_20220424_2025"),
+        ("main", "0081_remove_mainarticlepage_region_and_more"),
     ]
 
     operations = [
         migrations.AddField(
-            model_name='mainhomepage',
-            name='europarl_section_tag',
-            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='taggit.tag', verbose_name='Tag pro rozdělení - Eurovolby'),
+            model_name="mainhomepage",
+            name="europarl_section_tag",
+            field=models.ForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.PROTECT,
+                related_name="+",
+                to="taggit.tag",
+                verbose_name="Tag pro rozdělení - Eurovolby",
+            ),
         ),
         migrations.CreateModel(
-            name='MainArticleSectionTag',
+            name="MainArticleSectionTag",
             fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('content_object', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='section_tagged_items', to='main.mainarticlepage')),
-                ('tag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_items', to='taggit.tag')),
+                (
+                    "id",
+                    models.AutoField(
+                        auto_created=True,
+                        primary_key=True,
+                        serialize=False,
+                        verbose_name="ID",
+                    ),
+                ),
+                (
+                    "content_object",
+                    modelcluster.fields.ParentalKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="section_tagged_items",
+                        to="main.mainarticlepage",
+                    ),
+                ),
+                (
+                    "tag",
+                    models.ForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="%(app_label)s_%(class)s_items",
+                        to="taggit.tag",
+                    ),
+                ),
             ],
             options={
-                'abstract': False,
+                "abstract": False,
             },
         ),
         migrations.AddField(
-            model_name='mainarticlepage',
-            name='section_tags',
-            field=modelcluster.contrib.taggit.ClusterTaggableManager(blank=True, help_text='Používá se například pro oddělení článků do sekce pro eurovolby. Pokud chceš, aby se články zobrazovaly pouze na hlavní stránce, nepřidávej žádné tagy.', through='main.MainArticleSectionTag', to='taggit.Tag', verbose_name='Tagy pro rozdělení do sekcí'),
+            model_name="mainarticlepage",
+            name="section_tags",
+            field=modelcluster.contrib.taggit.ClusterTaggableManager(
+                blank=True,
+                help_text="Používá se například pro oddělení článků do sekce pro eurovolby. Pokud chceš, aby se články zobrazovaly pouze na hlavní stránce, nepřidávej žádné tagy.",
+                through="main.MainArticleSectionTag",
+                to="taggit.Tag",
+                verbose_name="Tagy pro rozdělení do sekcí",
+            ),
         ),
     ]
diff --git a/main/migrations/0083_remove_mainprogrampage_perex_and_more.py b/main/migrations/0083_remove_mainprogrampage_perex_and_more.py
index ca25e4af..0f6bb3d1 100644
--- a/main/migrations/0083_remove_mainprogrampage_perex_and_more.py
+++ b/main/migrations/0083_remove_mainprogrampage_perex_and_more.py
@@ -1,25 +1,48 @@
 # Generated by Django 4.1.10 on 2023-12-15 12:24
 
-from django.db import migrations
 import wagtail.blocks
 import wagtail.fields
 import wagtail.images.blocks
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0082_mainhomepage_europarl_section_tag_and_more'),
+        ("main", "0082_mainhomepage_europarl_section_tag_and_more"),
     ]
 
     operations = [
         migrations.RemoveField(
-            model_name='mainprogrampage',
-            name='perex',
+            model_name="mainprogrampage",
+            name="perex",
         ),
         migrations.AlterField(
-            model_name='maincontactpage',
-            name='contact_boxes',
-            field=wagtail.fields.StreamField([('item', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek')), ('image', wagtail.images.blocks.ImageChooserBlock(label='Ikona')), ('subtitle', wagtail.blocks.CharBlock(label='Podtitulek'))]))], blank=True, use_json_field=True, verbose_name='Kontaktní boxy'),
+            model_name="maincontactpage",
+            name="contact_boxes",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "item",
+                        wagtail.blocks.StructBlock(
+                            [
+                                ("title", wagtail.blocks.CharBlock(label="Titulek")),
+                                (
+                                    "image",
+                                    wagtail.images.blocks.ImageChooserBlock(
+                                        label="Ikona"
+                                    ),
+                                ),
+                                (
+                                    "subtitle",
+                                    wagtail.blocks.CharBlock(label="Podtitulek"),
+                                ),
+                            ]
+                        ),
+                    )
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Kontaktní boxy",
+            ),
         ),
     ]
diff --git a/main/migrations/0084_alter_mainprogrampage_program.py b/main/migrations/0084_alter_mainprogrampage_program.py
index f89e96f1..765c3580 100644
--- a/main/migrations/0084_alter_mainprogrampage_program.py
+++ b/main/migrations/0084_alter_mainprogrampage_program.py
@@ -1,21 +1,232 @@
 # Generated by Django 4.1.10 on 2023-12-15 13:54
 
-from django.db import migrations
 import wagtail.blocks
 import wagtail.fields
 import wagtail.images.blocks
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0083_remove_mainprogrampage_perex_and_more'),
+        ("main", "0083_remove_mainprogrampage_perex_and_more"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainprogrampage',
-            name='program',
-            field=wagtail.fields.StreamField([('program_group', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('url', wagtail.blocks.URLBlock(label='Odkaz pokrývající celou tuto část', required=False)), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('title', wagtail.blocks.CharBlock(label='Titulek článku programu')), ('text', wagtail.blocks.RichTextBlock(features=['h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 'link', 'document-link', 'image', 'superscript', 'subscript', 'strikethrough', 'blockquote', 'embed'], label='Obsah'))]), label='Jednotlivé články programu'))])), ('program_group_crossroad', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek')), ('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('text', wagtail.blocks.RichTextBlock(label='Krátký text pod nadpisem', required=False)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['main.MainArticlesPage', 'main.MainArticlePage', 'main.MainProgramPage', 'main.MainPeoplePage', 'main.MainPersonPage', 'main.MainSimplePage', 'main.MainContactPage', 'main.MainCrossroadPage'], required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Karty programu'))])), ('program_group_popout', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek části programu')), ('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('name', wagtail.blocks.CharBlock(label='Název')), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek vyskakovacího bloku')), ('content', wagtail.blocks.RichTextBlock(features=['h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 'link', 'document-link', 'image', 'superscript', 'subscript', 'strikethrough', 'blockquote', 'embed'], label='Obsah'))]), label='Jednotlivé bloky programu'))]), label='Kategorie programu'))]))], blank=True, use_json_field=True, verbose_name='Program'),
+            model_name="mainprogrampage",
+            name="program",
+            field=wagtail.fields.StreamField(
+                [
+                    (
+                        "program_group",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "point_list",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "url",
+                                                    wagtail.blocks.URLBlock(
+                                                        label="Odkaz pokrývající celou tuto část",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "icon",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        label="Ikona", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "title",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Titulek článku programu"
+                                                    ),
+                                                ),
+                                                (
+                                                    "text",
+                                                    wagtail.blocks.RichTextBlock(
+                                                        features=[
+                                                            "h3",
+                                                            "h4",
+                                                            "h5",
+                                                            "bold",
+                                                            "italic",
+                                                            "ol",
+                                                            "ul",
+                                                            "hr",
+                                                            "link",
+                                                            "document-link",
+                                                            "image",
+                                                            "superscript",
+                                                            "subscript",
+                                                            "strikethrough",
+                                                            "blockquote",
+                                                            "embed",
+                                                        ],
+                                                        label="Obsah",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Jednotlivé články programu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "program_group_crossroad",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "point_list",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "image",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        label="Obrázek"
+                                                    ),
+                                                ),
+                                                (
+                                                    "title",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Titulek", required=True
+                                                    ),
+                                                ),
+                                                (
+                                                    "text",
+                                                    wagtail.blocks.RichTextBlock(
+                                                        label="Krátký text pod nadpisem",
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "page",
+                                                    wagtail.blocks.PageChooserBlock(
+                                                        label="Stránka",
+                                                        page_type=[
+                                                            "main.MainArticlesPage",
+                                                            "main.MainArticlePage",
+                                                            "main.MainProgramPage",
+                                                            "main.MainPeoplePage",
+                                                            "main.MainPersonPage",
+                                                            "main.MainSimplePage",
+                                                            "main.MainContactPage",
+                                                            "main.MainCrossroadPage",
+                                                        ],
+                                                        required=False,
+                                                    ),
+                                                ),
+                                                (
+                                                    "link",
+                                                    wagtail.blocks.URLBlock(
+                                                        label="Odkaz", required=False
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Karty programu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                    (
+                        "program_group_popout",
+                        wagtail.blocks.StructBlock(
+                            [
+                                (
+                                    "title",
+                                    wagtail.blocks.CharBlock(
+                                        label="Titulek části programu"
+                                    ),
+                                ),
+                                (
+                                    "categories",
+                                    wagtail.blocks.ListBlock(
+                                        wagtail.blocks.StructBlock(
+                                            [
+                                                (
+                                                    "name",
+                                                    wagtail.blocks.CharBlock(
+                                                        label="Název"
+                                                    ),
+                                                ),
+                                                (
+                                                    "icon",
+                                                    wagtail.images.blocks.ImageChooserBlock(
+                                                        label="Ikona", required=False
+                                                    ),
+                                                ),
+                                                (
+                                                    "point_list",
+                                                    wagtail.blocks.ListBlock(
+                                                        wagtail.blocks.StructBlock(
+                                                            [
+                                                                (
+                                                                    "title",
+                                                                    wagtail.blocks.CharBlock(
+                                                                        label="Titulek vyskakovacího bloku"
+                                                                    ),
+                                                                ),
+                                                                (
+                                                                    "content",
+                                                                    wagtail.blocks.RichTextBlock(
+                                                                        features=[
+                                                                            "h3",
+                                                                            "h4",
+                                                                            "h5",
+                                                                            "bold",
+                                                                            "italic",
+                                                                            "ol",
+                                                                            "ul",
+                                                                            "hr",
+                                                                            "link",
+                                                                            "document-link",
+                                                                            "image",
+                                                                            "superscript",
+                                                                            "subscript",
+                                                                            "strikethrough",
+                                                                            "blockquote",
+                                                                            "embed",
+                                                                        ],
+                                                                        label="Obsah",
+                                                                    ),
+                                                                ),
+                                                            ]
+                                                        ),
+                                                        label="Jednotlivé bloky programu",
+                                                    ),
+                                                ),
+                                            ]
+                                        ),
+                                        label="Kategorie programu",
+                                    ),
+                                ),
+                            ]
+                        ),
+                    ),
+                ],
+                blank=True,
+                use_json_field=True,
+                verbose_name="Program",
+            ),
         ),
     ]
diff --git a/main/migrations/0085_mainarticlesectiontagged_sectiontag_and_more.py b/main/migrations/0085_mainarticlesectiontagged_sectiontag_and_more.py
index e72bb821..bb371250 100644
--- a/main/migrations/0085_mainarticlesectiontagged_sectiontag_and_more.py
+++ b/main/migrations/0085_mainarticlesectiontagged_sectiontag_and_more.py
@@ -1,53 +1,87 @@
 # Generated by Django 4.1.10 on 2023-12-15 15:37
 
-from django.db import migrations, models
 import django.db.models.deletion
 import modelcluster.fields
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0084_alter_mainprogrampage_program'),
+        ("main", "0084_alter_mainprogrampage_program"),
     ]
 
     operations = [
         migrations.CreateModel(
-            name='MainArticleSectionTagged',
+            name="MainArticleSectionTagged",
             fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                (
+                    "id",
+                    models.AutoField(
+                        auto_created=True,
+                        primary_key=True,
+                        serialize=False,
+                        verbose_name="ID",
+                    ),
+                ),
             ],
             options={
-                'abstract': False,
+                "abstract": False,
             },
         ),
         migrations.CreateModel(
-            name='SectionTag',
+            name="SectionTag",
             fields=[
-                ('id', models.AutoField(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')),
+                (
+                    "id",
+                    models.AutoField(
+                        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",
+                    ),
+                ),
             ],
             options={
-                'verbose_name': 'Tag pro rozdělení do sekcí',
-                'verbose_name_plural': 'Tagy pro rozdělení do sekcí',
+                "verbose_name": "Tag pro rozdělení do sekcí",
+                "verbose_name_plural": "Tagy pro rozdělení do sekcí",
             },
         ),
         migrations.RemoveField(
-            model_name='mainarticlepage',
-            name='section_tags',
+            model_name="mainarticlepage",
+            name="section_tags",
         ),
         migrations.DeleteModel(
-            name='MainArticleSectionTag',
+            name="MainArticleSectionTag",
         ),
         migrations.AddField(
-            model_name='mainarticlesectiontagged',
-            name='content_object',
-            field=modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='section_tagged_items', to='main.mainarticlepage'),
+            model_name="mainarticlesectiontagged",
+            name="content_object",
+            field=modelcluster.fields.ParentalKey(
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="section_tagged_items",
+                to="main.mainarticlepage",
+            ),
         ),
         migrations.AddField(
-            model_name='mainarticlesectiontagged',
-            name='tag',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_items', to='main.sectiontag'),
+            model_name="mainarticlesectiontagged",
+            name="tag",
+            field=models.ForeignKey(
+                on_delete=django.db.models.deletion.CASCADE,
+                related_name="%(app_label)s_%(class)s_items",
+                to="main.sectiontag",
+            ),
         ),
     ]
diff --git a/main/migrations/0086_mainarticlepage_section_tags.py b/main/migrations/0086_mainarticlepage_section_tags.py
index 6ef93631..72312b24 100644
--- a/main/migrations/0086_mainarticlepage_section_tags.py
+++ b/main/migrations/0086_mainarticlepage_section_tags.py
@@ -1,19 +1,24 @@
 # Generated by Django 4.1.10 on 2023-12-15 15:38
 
-from django.db import migrations
 import modelcluster.contrib.taggit
+from django.db import migrations
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0085_mainarticlesectiontagged_sectiontag_and_more'),
+        ("main", "0085_mainarticlesectiontagged_sectiontag_and_more"),
     ]
 
     operations = [
         migrations.AddField(
-            model_name='mainarticlepage',
-            name='section_tags',
-            field=modelcluster.contrib.taggit.ClusterTaggableManager(blank=True, help_text='Používá se například pro oddělení článků do sekce pro eurovolby. Pokud chceš, aby se články zobrazovaly pouze na hlavní stránce, nepřidávej žádné tagy.', through='main.MainArticleSectionTagged', to='main.SectionTag', verbose_name='Tagy pro rozdělení do sekcí'),
+            model_name="mainarticlepage",
+            name="section_tags",
+            field=modelcluster.contrib.taggit.ClusterTaggableManager(
+                blank=True,
+                help_text="Používá se například pro oddělení článků do sekce pro eurovolby. Pokud chceš, aby se články zobrazovaly pouze na hlavní stránce, nepřidávej žádné tagy.",
+                through="main.MainArticleSectionTagged",
+                to="main.SectionTag",
+                verbose_name="Tagy pro rozdělení do sekcí",
+            ),
         ),
     ]
diff --git a/main/migrations/0087_mainhomepage_main_section_tag.py b/main/migrations/0087_mainhomepage_main_section_tag.py
index ddd23c33..b808d2c0 100644
--- a/main/migrations/0087_mainhomepage_main_section_tag.py
+++ b/main/migrations/0087_mainhomepage_main_section_tag.py
@@ -1,19 +1,25 @@
 # Generated by Django 4.1.10 on 2023-12-15 15:48
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0086_mainarticlepage_section_tags'),
+        ("main", "0086_mainarticlepage_section_tags"),
     ]
 
     operations = [
         migrations.AddField(
-            model_name='mainhomepage',
-            name='main_section_tag',
-            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='main.sectiontag', verbose_name='Tag pro rozdělení - Hlavní stránka'),
+            model_name="mainhomepage",
+            name="main_section_tag",
+            field=models.ForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.PROTECT,
+                related_name="+",
+                to="main.sectiontag",
+                verbose_name="Tag pro rozdělení - Hlavní stránka",
+            ),
         ),
     ]
diff --git a/main/migrations/0088_alter_mainhomepage_europarl_section_tag.py b/main/migrations/0088_alter_mainhomepage_europarl_section_tag.py
index 766c58c4..6c599cc6 100644
--- a/main/migrations/0088_alter_mainhomepage_europarl_section_tag.py
+++ b/main/migrations/0088_alter_mainhomepage_europarl_section_tag.py
@@ -1,19 +1,25 @@
 # Generated by Django 4.1.10 on 2023-12-15 16:19
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
-
     dependencies = [
-        ('main', '0087_mainhomepage_main_section_tag'),
+        ("main", "0087_mainhomepage_main_section_tag"),
     ]
 
     operations = [
         migrations.AlterField(
-            model_name='mainhomepage',
-            name='europarl_section_tag',
-            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='main.sectiontag', verbose_name='Tag pro rozdělení - Eurovolby'),
+            model_name="mainhomepage",
+            name="europarl_section_tag",
+            field=models.ForeignKey(
+                blank=True,
+                null=True,
+                on_delete=django.db.models.deletion.PROTECT,
+                related_name="+",
+                to="main.sectiontag",
+                verbose_name="Tag pro rozdělení - Eurovolby",
+            ),
         ),
     ]
diff --git a/main/models.py b/main/models.py
index 9b7d4299..a1a26f33 100644
--- a/main/models.py
+++ b/main/models.py
@@ -10,7 +10,7 @@ from django.shortcuts import render
 from django.utils import timezone
 from modelcluster.contrib.taggit import ClusterTaggableManager
 from modelcluster.fields import ParentalKey
-from taggit.models import TaggedItemBase, TagBase
+from taggit.models import TagBase, TaggedItemBase
 from wagtail.admin.panels import (
     FieldPanel,
     HelpPanel,
@@ -19,7 +19,7 @@ from wagtail.admin.panels import (
     PageChooserPanel,
     TabbedInterface,
 )
-from wagtail.blocks import RichTextBlock, PageChooserBlock
+from wagtail.blocks import PageChooserBlock, RichTextBlock
 from wagtail.contrib.routable_page.models import RoutablePageMixin, route
 from wagtail.fields import RichTextField, StreamField
 from wagtail.models import Page
@@ -176,7 +176,7 @@ class MainHomePage(
                 FieldPanel("europarl_section_tag"),
                 FieldPanel("main_section_tag"),
             ],
-            heading="Tagy"
+            heading="Tagy",
         ),
     ]
 
@@ -223,8 +223,7 @@ class MainHomePage(
         context = super().get_context(request, args, kwargs)
 
         context["article_data_list"] = (
-            MainArticlePage.objects
-            .filter(
+            MainArticlePage.objects.filter(
                 models.Q(section_tags__isnull=True)
                 | models.Q(section_tags=self.main_section_tag)
             )
@@ -233,9 +232,7 @@ class MainHomePage(
         )
 
         articles_for_article_section = self.materialize_shared_articles_query(
-            self.append_all_shared_articles_query(
-                MainArticlePage.objects.all()
-            )[:8]
+            self.append_all_shared_articles_query(MainArticlePage.objects.all())[:8]
         )
         context["article_main"] = (
             articles_for_article_section[0] if articles_for_article_section else None
@@ -409,8 +406,7 @@ class MainArticlesPage(
 
     def get_article_data_list(self, months_back: int = 1):
         target_date_list = (
-            MainArticlePage.objects
-            .order_by("-date")
+            MainArticlePage.objects.order_by("-date")
             .live()
             .values_list("date", flat=True)
         )
@@ -450,7 +446,9 @@ class MainArticlesPage(
         if get_articles:
             article_timeline_list = self.get_article_data_list(1)
             ctx["article_timeline_list"] = article_timeline_list
-            ctx["show_next_timeline_articles"] = MainArticlePage.objects.live().count() > len(article_timeline_list)
+            ctx[
+                "show_next_timeline_articles"
+            ] = MainArticlePage.objects.live().count() > len(article_timeline_list)
 
             article_list = self.append_all_shared_articles_query(
                 MainArticlePage.objects.all()
@@ -485,13 +483,12 @@ class MainArticlesPage(
         context = {"article_timeline_list": article_list}
         data = {
             "html": render(
-                request, "main/includes/organisms/articles/articles_timeline_list.html", context
+                request,
+                "main/includes/organisms/articles/articles_timeline_list.html",
+                context,
             ).content.decode("utf-8"),
             "last_article": article_list[-1]
-            == MainArticlePage.objects.all()
-            .order_by("-date")
-            .live()
-            .last(),
+            == MainArticlePage.objects.all().order_by("-date").live().last(),
         }
         return JsonResponse(data=data, safe=False)
 
@@ -561,7 +558,7 @@ class MainArticlesPage(
         return {
             "month_number": date_obj.month,
             "month_text": MONTH_NAMES[date_obj.month - 1],
-            "articles": []
+            "articles": [],
         }
 
 
@@ -599,7 +596,10 @@ class MainArticlePage(
     ### FIELDS
     content = StreamField(
         [
-            ("text", RichTextBlock(template="main/includes/atoms/text/prose_richtext.html")),
+            (
+                "text",
+                RichTextBlock(template="main/includes/atoms/text/prose_richtext.html"),
+            ),
             ("quote", blocks.ArticleQuoteBlock()),
             ("download", blocks.ArticleDownloadBlock()),
         ],
@@ -616,9 +616,7 @@ class MainArticlePage(
         verbose_name="Stránka autora (osoby)",
     )
     tags = ClusterTaggableManager(
-        through=MainArticleTag,
-        related_name="tagged_articles",
-        blank=True
+        through=MainArticleTag, related_name="tagged_articles", blank=True
     )
     shared_tags = ClusterTaggableManager(
         verbose_name="Tagy pro sdílení mezi weby",
@@ -789,7 +787,11 @@ class MainPersonPage(
         "Pozice/povolání", max_length=200, blank=True, null=True
     )
     primary_group = models.CharField(
-        "Kategorie", help_text="např. 'Europarlament' nebo 'Sněmovna'", max_length=32, blank=True, null=True
+        "Kategorie",
+        help_text="např. 'Europarlament' nebo 'Sněmovna'",
+        max_length=32,
+        blank=True,
+        null=True,
     )
     perex = models.TextField()
     text = RichTextField()
@@ -805,7 +807,10 @@ class MainPersonPage(
 
     related_people = StreamField(
         [
-            ("person", PageChooserBlock(page_type="main.MainPersonPage", label="Detail osoby"))
+            (
+                "person",
+                PageChooserBlock(page_type="main.MainPersonPage", label="Detail osoby"),
+            )
         ],
         verbose_name="Další lidé",
         blank=True,
@@ -841,9 +846,11 @@ class MainPersonPage(
     def get_context(self, request) -> dict:
         context = super().get_context(request)
 
-        context["article_page_list"] = MainArticlePage.objects.filter(
-            author_page=self.id
-        ).order_by("-date").live()[:3]
+        context["article_page_list"] = (
+            MainArticlePage.objects.filter(author_page=self.id)
+            .order_by("-date")
+            .live()[:3]
+        )
 
         return context
 
diff --git a/main/static/main/pirati-ui.svg b/main/static/main/pirati-ui.svg
index ffc20ecc..c6e3a71a 100644
--- a/main/static/main/pirati-ui.svg
+++ b/main/static/main/pirati-ui.svg
@@ -127,4 +127,4 @@
 <glyph unicode="&#xe976;" glyph-name="price-tags" horiz-adv-x="1280" d="M1232 960h-384c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l476.118 476.118c18.666 18.666 33.94 55.54 33.94 81.94v384c0 26.4-21.6 48-48 48zM992 576c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM128 416l544 544h-80c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l30.058 30.058-416 416z" />
 <glyph unicode="&#xe977;" glyph-name="twitter" horiz-adv-x="1001" d="M596.009 526.629l372.819 433.371h-88.346l-323.718-376.29-258.553 376.29h-298.21l390.983-569.018-390.983-454.457h88.351l341.855 397.375 273.051-397.375h298.21l-405.458 590.103zM475 385.969l-354.815 507.521h135.702l624.636-893.48h-135.702l-269.821 385.959z" />
 <glyph unicode="&#xe99b;" glyph-name="stats-dots" d="M128 64h896v-128h-1024v1024h128zM288 128c-53.020 0-96 42.98-96 96s42.98 96 96 96c2.828 0 5.622-0.148 8.388-0.386l103.192 171.986c-9.84 15.070-15.58 33.062-15.58 52.402 0 53.020 42.98 96 96 96s96-42.98 96-96c0-19.342-5.74-37.332-15.58-52.402l103.192-171.986c2.766 0.238 5.56 0.386 8.388 0.386 2.136 0 4.248-0.094 6.35-0.23l170.356 298.122c-10.536 15.408-16.706 34.036-16.706 54.11 0 53.020 42.98 96 96 96s96-42.98 96-96c0-53.020-42.98-96-96-96-2.14 0-4.248 0.094-6.35 0.232l-170.356-298.124c10.536-15.406 16.706-34.036 16.706-54.11 0-53.020-42.98-96-96-96s-96 42.98-96 96c0 19.34 5.74 37.332 15.578 52.402l-103.19 171.984c-2.766-0.238-5.56-0.386-8.388-0.386s-5.622 0.146-8.388 0.386l-103.192-171.986c9.84-15.068 15.58-33.060 15.58-52.4 0-53.020-42.98-96-96-96z" />
-</font></defs></svg>
\ No newline at end of file
+</font></defs></svg>
diff --git a/main/templates/main/includes/atoms/containers/container__medium.html b/main/templates/main/includes/atoms/containers/container__medium.html
index 5b317076..08b46815 100644
--- a/main/templates/main/includes/atoms/containers/container__medium.html
+++ b/main/templates/main/includes/atoms/containers/container__medium.html
@@ -5,4 +5,4 @@
     mpus purus at lorem. Etiam neque. Cras pede libmpus purus at lorem. Etiam neque. Cras pede libmpus purus at lorem. Etiam neque. Cras pede lib
     mpus purus at lorem. Etiam neque. Cras pede libmpus purus at lorem. Etiam neque. Cras pede libmpus purus at lorem. Etiam neque. Cras pede lib
     bmpus purus at lorem. Etiam neque. Cras pede lib</p>
-</div>
\ No newline at end of file
+</div>
diff --git a/main/templates/main/includes/atoms/containers/container__narrow.html b/main/templates/main/includes/atoms/containers/container__narrow.html
index 21ccdbb8..69e9311a 100644
--- a/main/templates/main/includes/atoms/containers/container__narrow.html
+++ b/main/templates/main/includes/atoms/containers/container__narrow.html
@@ -6,4 +6,4 @@
   mpus purus at lorem. Etiam neque. Cras pede lib
   mpus purus at lorem. Etiam neque. Cras pede libmpus purus at lorem. Etiam neque. Cras pede lib mpus purus at lorem. Etiam neque. Cras pede lib mpus purus at lorem. Etiam neque. Cras pede lib
   </p>
-</div>
\ No newline at end of file
+</div>
diff --git a/main/templates/main/includes/atoms/containers/container__wide.html b/main/templates/main/includes/atoms/containers/container__wide.html
index a172c99d..65335723 100644
--- a/main/templates/main/includes/atoms/containers/container__wide.html
+++ b/main/templates/main/includes/atoms/containers/container__wide.html
@@ -6,4 +6,4 @@
   mpus purus at lorem. Etiam neque. Cras pede lib
   mpus purus at lorem. Etiam neque. Cras pede libmpus purus at lorem. Etiam neque. Cras pede lib mpus purus at lorem. Etiam neque. Cras pede lib mpus purus at lorem. Etiam neque. Cras pede lib
   </p>
-</div>
\ No newline at end of file
+</div>
diff --git a/main/templates/main/includes/atoms/grids/grids.html b/main/templates/main/includes/atoms/grids/grids.html
index 9a3107ad..2f1761d7 100644
--- a/main/templates/main/includes/atoms/grids/grids.html
+++ b/main/templates/main/includes/atoms/grids/grids.html
@@ -109,4 +109,4 @@
       </div>
     </div>
   </div>
-</div>
\ No newline at end of file
+</div>
diff --git a/main/templates/main/includes/atoms/text/font_sizes.html b/main/templates/main/includes/atoms/text/font_sizes.html
index 6d0f2537..92d94a73 100644
--- a/main/templates/main/includes/atoms/text/font_sizes.html
+++ b/main/templates/main/includes/atoms/text/font_sizes.html
@@ -12,4 +12,4 @@
 <span class="text-base">base size</span>
 <span class="text-sm">sm size</span>
 <span class="text-xs">xs size</span>
-</div>
\ No newline at end of file
+</div>
diff --git a/main/templates/main/includes/atoms/text/headings.html b/main/templates/main/includes/atoms/text/headings.html
index 1f03333c..98aafee7 100644
--- a/main/templates/main/includes/atoms/text/headings.html
+++ b/main/templates/main/includes/atoms/text/headings.html
@@ -13,4 +13,4 @@
     <h1 class="head-sm">{{ title }}</h1>
     <h1 class="head-xs">{{ title }}</h1>
   </div>
-</div>
\ No newline at end of file
+</div>
diff --git a/main/templates/main/includes/atoms/text/paragraph.html b/main/templates/main/includes/atoms/text/paragraph.html
index 6545c039..1eeeb059 100644
--- a/main/templates/main/includes/atoms/text/paragraph.html
+++ b/main/templates/main/includes/atoms/text/paragraph.html
@@ -1 +1 @@
-<p>{{ text }}</p>
\ No newline at end of file
+<p>{{ text }}</p>
diff --git a/main/templates/main/includes/atoms/text/prose.html b/main/templates/main/includes/atoms/text/prose.html
index 8a2ea0b6..a389a70e 100644
--- a/main/templates/main/includes/atoms/text/prose.html
+++ b/main/templates/main/includes/atoms/text/prose.html
@@ -1,3 +1,3 @@
 <div class="prose">
   {% include 'main/includes/atoms/text/paragraph.html' with text=text %}
-</div> 
+</div>
diff --git a/main/templates/main/includes/molecules/blocks/message_block.html b/main/templates/main/includes/molecules/blocks/message_block.html
index 02962e07..dd0fad0c 100644
--- a/main/templates/main/includes/molecules/blocks/message_block.html
+++ b/main/templates/main/includes/molecules/blocks/message_block.html
@@ -1,6 +1,6 @@
 <div
     class="px-5 py-4 text-center relative z-30 {% if type == "debug" %}bg-grey-200{% elif type == "info" %}bg-blue-300 text-white{% elif type == "success" %}bg-green-400 text-white{% elif type == "warning" %}bg-yellow-300{% elif type == "error" %}bg-red-600 text-white{% endif %} {% if is_last_child %}drop-shadow-lg{% endif %}"
->    
+>
     <i
         class="ico--{% if type == "debug" %}cog{% elif type == "info" %}info{% elif type == "success" %}checkmark{% elif type == "warning" %}warning{% elif type == "error" %}cross{% endif %} mr-2"
     ></i>
-- 
GitLab