From aade334ff859c9750e694afc8ebc8132532e9787 Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Wed, 22 May 2024 17:02:25 -0400
Subject: [PATCH] feat: handle no date/time/datetime string given

---
 program/utils.py | 29 +++++++++++++++++++++++------
 1 file changed, 23 insertions(+), 6 deletions(-)

diff --git a/program/utils.py b/program/utils.py
index aff93956..5d536037 100644
--- a/program/utils.py
+++ b/program/utils.py
@@ -32,10 +32,16 @@ if typing.TYPE_CHECKING:
     from program.models import Host, Note, Show
 
 
-def parse_datetime(date_string: str) -> datetime:
+def parse_datetime(date_string: str | None) -> datetime | None:
     """
-    parse a datetime string and return a timezone aware datetime object
+    parse a datetime string and return a timezone aware datetime object.
+
+    Returns `None` if no datetime string is given.
     """
+
+    if date_string is None:
+        return None
+
     try:
         parsed_datetime = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
     except ValueError:
@@ -48,18 +54,29 @@ def parse_datetime(date_string: str) -> datetime:
     )
 
 
-def parse_date(date_string: str) -> date:
+def parse_date(date_string: str | None) -> date | None:
     """
-    parse a date string and return a date object
+    parse a date string and return a date object.
+
+    Returns `None` if no date string is given.
     """
+
+    if date_string is None:
+        return None
+
     return datetime.strptime(date_string, "%Y-%m-%d").date()
 
 
-def parse_time(date_string: str) -> time:
+def parse_time(date_string: str | None) -> time | None:
     """
-    parse a time string and return a time object
+    parse a time string and return a time object.
+
+    Returns `None` if no time string is given.
     """
 
+    if date_string is None:
+        return None
+
     if len(date_string) == 5:
         return datetime.strptime(date_string, "%H:%M").time()
     else:
-- 
GitLab