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