diff --git a/calendar_utils/models.py b/calendar_utils/models.py
index e5840399fd259aacb4b28bd1866e08643a6887f6..6d11e7b71982b4862161879e68559cbbecd1a837 100644
--- a/calendar_utils/models.py
+++ b/calendar_utils/models.py
@@ -7,6 +7,9 @@ from django.core.serializers.json import DjangoJSONEncoder
 from django.core.validators import URLValidator, ValidationError
 from django.db import models
 from icalevents import icalevents
+from wagtail.admin.panels import FieldPanel
+from wagtail.models import Page
+from wagtailmetadata.models import MetadataPageMixin
 
 from .parser import process_event_list
 
@@ -85,6 +88,13 @@ class CalendarMixin(models.Model):
     calendar = models.ForeignKey(
         Calendar, null=True, blank=True, on_delete=models.PROTECT
     )
+    calendar_page = models.ForeignKey(
+        "calendar_utils.CalendarPage",
+        verbose_name="Stránka s kalendářem",
+        on_delete=models.PROTECT,
+        null=True,
+        blank=True,
+    )
 
     class Meta:
         abstract = True
@@ -143,3 +153,35 @@ class CalendarMixin(models.Model):
             self.calendar = None
 
         super().save(*args, **kwargs)
+
+
+class CalendarPage(SubpageMixin, MetadataPageMixin, CalendarMixin, Page):
+    """
+    Page for displaying full calendar
+    """
+
+    calendar_url = models.URLField(
+        "URL kalendáře ve formátu iCal", blank=False, null=True
+    )
+
+    ### PANELS
+
+    content_panels = Page.content_panels + [
+        FieldPanel("calendar_url"),
+    ]
+
+    ### RELATIONS
+
+    parent_page_types = [
+        "district.DistrictCenterPage",
+        "district.DistrictHomePage",
+        "elections2021.Elections2021CalendarPage",
+        "senat_campaign.SenatCampaignHomePage",
+        "uniweb.UniwebHomePage",
+    ]
+    subpage_types = []
+
+    ### OTHERS
+
+    class Meta:
+        verbose_name = "Stránka s kalendářem"
diff --git a/district/models.py b/district/models.py
index 48f3269fb18b94398ef66c44f243b544d6a71868..9f14489f16e8b7ca65e5309305aed5b6d4fd22a3 100644
--- a/district/models.py
+++ b/district/models.py
@@ -274,7 +274,13 @@ class DistrictHomePage(
             [
                 FieldPanel("region_map_button_text"),
                 FieldPanel("calendar_button_text"),
-                FieldPanel("calendar_url"),
+                MultiFieldPanel(
+                    [
+                        FieldPanel("calendar_url"),
+                        PageChooserPanel("calendar_page"),
+                    ],
+                    "Kalendář",
+                ),
             ],
             gettext_lazy("Nastavení lišty s kalendářem a mapou"),
         ),
@@ -306,6 +312,7 @@ class DistrictHomePage(
         "district.DistrictProgramPage",
         "district.DistrictInteractiveProgramPage",
         "district.DistrictGeoFeatureCollectionPage",
+        "calendar_utils.CalendarPage",
     ]
 
     ### OTHERS
@@ -1295,7 +1302,14 @@ class DistrictCenterPage(
         FieldPanel("background_photo"),
         FieldPanel("text"),
         FieldPanel("content"),
-        FieldPanel("calendar_url"),
+        MultiFieldPanel(
+            [
+                FieldPanel("calendar_url"),
+                PageChooserPanel("calendar_page"),
+            ],
+            "Kalendář",
+        ),
+        PageChooserPanel("calendar_page"),
         FieldPanel("sidebar_content"),
     ]
 
@@ -1306,7 +1320,7 @@ class DistrictCenterPage(
     ### RELATIONS
 
     parent_page_types = ["district.DistrictHomePage"]
-    subpage_types = []
+    subpage_types = ["calendar_utils.CalendarPage"]
 
     ### OTHERS
 
diff --git a/elections2021/models.py b/elections2021/models.py
index dc170d52e6da7aecffde474b4fef1a5b56975dc2..6ffdb58acf185eb536256b839879f5ef9d728c7d 100644
--- a/elections2021/models.py
+++ b/elections2021/models.py
@@ -2576,7 +2576,13 @@ class Elections2021CalendarPage(SubpageMixin, MetadataPageMixin, CalendarMixin,
 
     content_panels = Page.content_panels + [
         FieldPanel("photo"),
-        FieldPanel("calendar_url"),
+        MultiFieldPanel(
+            [
+                FieldPanel("calendar_url"),
+                PageChooserPanel("calendar_page"),
+            ],
+            "Kalendář",
+        ),
     ]
 
     promote_panels = [
@@ -2600,7 +2606,7 @@ class Elections2021CalendarPage(SubpageMixin, MetadataPageMixin, CalendarMixin,
     ### RELATIONS
 
     parent_page_types = ["elections2021.Elections2021HomePage"]
-    subpage_types = []
+    subpage_types = ["calendar_utils.CalendarPage"]
 
     ### OTHERS
 
diff --git a/senat_campaign/models.py b/senat_campaign/models.py
index 01dc34c54dc703156df80f586ef037cb13a03bd8..8086e7324872fcc222b7d29d22b5116e8a3ccea6 100644
--- a/senat_campaign/models.py
+++ b/senat_campaign/models.py
@@ -7,6 +7,7 @@ from wagtail.admin.panels import (
     FieldPanel,
     HelpPanel,
     MultiFieldPanel,
+    PageChooserPanel,
     PublishingPanel,
 )
 from wagtail.documents.blocks import DocumentChooserBlock
@@ -187,7 +188,13 @@ class SenatCampaignHomePage(
             ],
             heading="Sociální sítě",
         ),
-        FieldPanel("calendar_url"),
+        MultiFieldPanel(
+            [
+                FieldPanel("calendar_url"),
+                PageChooserPanel("calendar_page"),
+            ],
+            "Kalendář",
+        ),
         FieldPanel("donations_url"),
         FieldPanel("matomo_id"),
         FieldPanel("title_suffix"),
@@ -203,6 +210,7 @@ class SenatCampaignHomePage(
         "senat_campaign.SenatCampaignNewsIndexPage",
         "senat_campaign.SenatCampaignProgramPage",
         "senat_campaign.SenatCampaignCookiesPage",
+        "calendar_utils.CalendarPage",
     ]
 
     ### OTHERS
diff --git a/uniweb/models.py b/uniweb/models.py
index f60e3bd41bf0e8a54f9583f47871008d99f60dbc..3d419da6e6d96cef5cfd51a55eff502f747a0e10 100644
--- a/uniweb/models.py
+++ b/uniweb/models.py
@@ -14,6 +14,7 @@ from wagtail.admin.panels import (
     InlinePanel,
     MultiFieldPanel,
     ObjectList,
+    PageChooserPanel,
     TabbedInterface,
 )
 from wagtail.contrib.forms.models import AbstractForm, AbstractFormField
@@ -380,7 +381,13 @@ class UniwebHomePage(
             ],
             "nastavení webu",
         ),
-        FieldPanel("calendar_url"),
+        MultiFieldPanel(
+            [
+                FieldPanel("calendar_url"),
+                PageChooserPanel("calendar_page"),
+            ],
+            "Kalendář",
+        ),
         MultiFieldPanel(
             [
                 FieldPanel("hide_footer"),
@@ -414,6 +421,7 @@ class UniwebHomePage(
         "uniweb.UniwebArticlesIndexPage",
         "uniweb.UniwebFormPage",
         "uniweb.UniwebPeoplePage",
+        "calendar_utils.CalendarPage",
     ]
 
     ### OTHERS