From e67c09d1173e759c14acf11445c2f1c6b8c233b1 Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Wed, 5 Apr 2023 11:05:05 -0400
Subject: [PATCH] Avoid exception when last_date is empty

Cleanup getting values from schedule data
---
 program/services.py | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/program/services.py b/program/services.py
index b3ab7770..295a8458 100644
--- a/program/services.py
+++ b/program/services.py
@@ -339,26 +339,28 @@ def instantiate_upcoming_schedule(
 
     is_repetition = data["is_repetition"]
 
-    # these may not be present in data
+    # default is `False`
     add_business_days_only = (
-        data["default_playlist_id"] if "add_business_days_only" in data else False
+        data["add_business_days_only"] if "add_business_days_only" in data else False
     )
-    add_days_no = data["add_days_no"] if "add_days_no" in data else None
-    by_weekday = data["by_weekday"] if "by_weekday" in data else None
-    default_playlist_id = data["default_playlist_id"] if "default_playlist_id" in data else None
+
+    # default is `None`
+    add_days_no = data.get("add_days_no")
+    by_weekday = data.get("by_weekday")
+    default_playlist_id = data.get("default_playlist_id")
 
     first_date = parse_date(data["first_date"])
     start_time = parse_time(data["start_time"])
     end_time = parse_time(data["end_time"])
 
     # last_date may not be present in data
-    if "last_date" in data:
+    if data.get("last_date") is not None:
         last_date = parse_date(data["last_date"])
     else:
         # If last_date was not set, set it to the end of the year or add x days
         if AUTO_SET_LAST_DATE_TO_END_OF_YEAR:
             year = timezone.now().year
-            last_date = parse_date(f"{year}-12-31")
+            last_date = timezone.datetime(year, 12, 31).date()
         else:
             last_date = first_date + timedelta(days=+AUTO_SET_LAST_DATE_TO_DAYS_IN_FUTURE)
 
-- 
GitLab