From bb5364d021f13f102c20f778b0eaf4e1b5219921 Mon Sep 17 00:00:00 2001 From: Elias Kohout Date: Wed, 19 Jun 2024 15:49:20 +0200 Subject: [PATCH] adding current date as default for cli args --- main.py | 12 +++++------- util/parser.py | 1 - util/str_to_datetime.py | 19 +++++++++++++++++++ util/views.py | 2 +- 4 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 util/str_to_datetime.py diff --git a/main.py b/main.py index cb488cc..6245f27 100755 --- a/main.py +++ b/main.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -from datetime import datetime +from util.str_to_datetime import datetime from model.DataStore import DataStore from model.TimeSlot import TimeSlot @@ -25,8 +25,7 @@ if __name__ == "__main__": print("An event is already running.") else: if args.start is not None: - s = datetime.strptime(args.start, '%d.%m.%y %H:%M') - ds.add_time_slot(TimeSlot(args.name, start=s)) + ds.add_time_slot(TimeSlot(args.name, start=datetime(args.start))) else: ds.add_time_slot(TimeSlot(args.name)) print(f"Started event {args.name}.") @@ -40,8 +39,7 @@ if __name__ == "__main__": raise Exception("Found multiple running event.") else: if args.end is not None: - s = datetime.strptime(args.end, '%d.%m.%y %H:%M') - running[0].end = s + running[0].end = datetime(args.end) else: running[0].end_now() ds.write_update() @@ -60,9 +58,9 @@ if __name__ == "__main__": else: ts = TimeSlot(args.name) if args.start is not None: - ts.start = datetime.strptime(args.start, '%d.%m.%y %H:%M') + ts.start = datetime(args.start) if args.end is not None: - ts.end = datetime.strptime(args.end, '%d.%m.%y %H:%M') + ts.end = datetime(args.end) ds.add_time_slot(ts) ds.write_update() print("The event was added.") diff --git a/util/parser.py b/util/parser.py index 0628781..97b75f0 100644 --- a/util/parser.py +++ b/util/parser.py @@ -28,4 +28,3 @@ def create_parser(): parser_end.add_argument("-e", "--end", help="End datetime") return parser - diff --git a/util/str_to_datetime.py b/util/str_to_datetime.py new file mode 100644 index 0000000..99f277c --- /dev/null +++ b/util/str_to_datetime.py @@ -0,0 +1,19 @@ +from datetime import datetime as dt + + +def datetime(s: str) -> dt: + s = s.strip() + + try: + return dt.strptime(s, '%d.%m.%y %H:%M') + except ValueError: + pass + + try: + tim = dt.strptime(s, '%H:%M').time() + dat = dt.now().date() + return dt.combine(dat, tim) + except ValueError: + pass + + raise ValueError("The given string can not be interpreted as a datetime.") diff --git a/util/views.py b/util/views.py index 7fc56b0..e82d21b 100644 --- a/util/views.py +++ b/util/views.py @@ -1,7 +1,7 @@ from model.TimeSlot import TimeSlot -def convert_to_table(time_slot_list: list[TimeSlot]): +def convert_to_table(time_slot_list: list[TimeSlot]) -> str: widths = [30, 26, 26] r_str = f"+{'-'*(widths[0]+2)}+{'-'*(widths[1]+2)}+{'-'*(widths[2]+2)}+\n"