From b48b7db33393eed3a65ca39cbbdf52c9791b9eec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Bedna=C5=99=C3=ADk?= <jan.bednarik@gmail.com>
Date: Wed, 11 Aug 2021 15:05:50 +0200
Subject: [PATCH] elections2021: Small calendar refactoring

---
 calendar_utils/models.py                      | 21 --------------
 elections2021/models.py                       | 28 +++++++++++++++++++
 .../elections2021_calendar_page.html          |  2 +-
 3 files changed, 29 insertions(+), 22 deletions(-)

diff --git a/calendar_utils/models.py b/calendar_utils/models.py
index 6b219237..53f92e8a 100644
--- a/calendar_utils/models.py
+++ b/calendar_utils/models.py
@@ -26,27 +26,6 @@ class EventsJSONField(models.JSONField):
             for event in value:
                 event["begin"] = arrow.get(event["begin"]).datetime
                 event["end"] = arrow.get(event["end"]).datetime
-
-                event["pir"] = {
-                    "name": None,
-                    "tags": [],
-                    "region": None,
-                }
-
-                pir_name = []
-
-                for word in event["name"].split():
-                    if word.startswith("#"):
-                        event["pir"]["tags"].append(word[1:])
-                    else:
-                        pir_name.append(word)
-
-                if len(pir_name) > 0:
-                    if pir_name[0].endswith(":") and len(pir_name[0]) == 4:
-                        event["pir"]["region"] = pir_name.pop(0)[:-1]
-
-                event["pir"]["name"] = " ".join(pir_name)
-
         return value
 
 
diff --git a/elections2021/models.py b/elections2021/models.py
index 1d69e8b9..84386f9b 100644
--- a/elections2021/models.py
+++ b/elections2021/models.py
@@ -2425,3 +2425,31 @@ class Elections2021CalendarPage(SubpageMixin, MetadataPageMixin, CalendarMixin,
     @property
     def has_calendar(self):
         return self.calendar_id is not None
+
+    def get_context(self, request):
+        context = super().get_context(request)
+
+        future_events = self.calendar.future_events
+        for event in future_events:
+            event["pir"] = {
+                "name": None,
+                "tags": [],
+                "region": None,
+            }
+
+            pir_name = []
+
+            for word in event.get("name", "").split():
+                if word.startswith("#"):
+                    event["pir"]["tags"].append(word[1:])
+                else:
+                    pir_name.append(word)
+
+            if len(pir_name) > 0:
+                if pir_name[0].endswith(":") and len(pir_name[0]) == 4:
+                    event["pir"]["region"] = pir_name.pop(0)[:-1]
+
+            event["pir"]["name"] = " ".join(pir_name)
+
+        context["future_events"] = future_events
+        return context
diff --git a/elections2021/templates/elections2021/elections2021_calendar_page.html b/elections2021/templates/elections2021/elections2021_calendar_page.html
index 23302d60..56d8b84a 100644
--- a/elections2021/templates/elections2021/elections2021_calendar_page.html
+++ b/elections2021/templates/elections2021/elections2021_calendar_page.html
@@ -148,7 +148,7 @@
   </div>
 
 <div class="container container--default pt-8 pb-16 px-0 md:px-1">
-  {% for event in page.calendar.future_events %}
+  {% for event in future_events %}
     {% if not request.GET.tag or request.GET.tag in event.pir.tags %}
       {% if not request.GET.region or request.GET.region == event.pir.region %}
         <div class="grid grid-cols-12 items-center calendar-table-row my-1">
-- 
GitLab