From f1795f22a6ea2409fc1c7c0ea921dc530e7625c2 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Thu, 30 May 2024 09:05:17 +0200 Subject: [PATCH] Default calendar date range end to 60 days later. --- plomtask/dating.py | 15 +++++++-------- plomtask/http.py | 6 ++++-- tests/days.py | 4 ++-- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/plomtask/dating.py b/plomtask/dating.py index c55d847..26b3ce3 100644 --- a/plomtask/dating.py +++ b/plomtask/dating.py @@ -11,13 +11,11 @@ def valid_date(date_str: str) -> str: In any case, returns in DATE_FORMAT. """ if date_str == 'today': - date_str = todays_date() + date_str = date_in_n_days(0) elif date_str == 'yesterday': - date = datetime.now() - timedelta(days=1) - date_str = date.strftime(DATE_FORMAT) + date_str = date_in_n_days(-1) elif date_str == 'tomorrow': - date = datetime.now() + timedelta(days=1) - date_str = date.strftime(DATE_FORMAT) + date_str = date_in_n_days(1) try: dt = datetime.strptime(date_str, DATE_FORMAT) except (ValueError, TypeError) as e: @@ -26,6 +24,7 @@ def valid_date(date_str: str) -> str: return dt.strftime(DATE_FORMAT) -def todays_date() -> str: - """Return current date in DATE_FORMAT.""" - return datetime.now().strftime(DATE_FORMAT) +def date_in_n_days(n: int) -> str: + """Return in DATE_FORMAT date from today + n days.""" + date = datetime.now() + timedelta(days=n) + return date.strftime(DATE_FORMAT) diff --git a/plomtask/http.py b/plomtask/http.py index cf7bb08..280b0f5 100644 --- a/plomtask/http.py +++ b/plomtask/http.py @@ -5,7 +5,7 @@ from http.server import HTTPServer from urllib.parse import urlparse, parse_qs from os.path import split as path_split from jinja2 import Environment as JinjaEnv, FileSystemLoader as JinjaFSLoader -from plomtask.dating import todays_date +from plomtask.dating import date_in_n_days from plomtask.days import Day from plomtask.exceptions import HandledException, BadFormatException, \ NotFoundException @@ -113,6 +113,8 @@ class TaskHandler(BaseHTTPRequestHandler): """Show Days from ?start= to ?end=.""" start = self.params.get_str('start') end = self.params.get_str('end') + if not end: + end = date_in_n_days(60) ret = Day.by_date_range_with_limits(self.conn, (start, end), 'id') days, start, end = ret days = Day.with_filled_gaps(days, start, end) @@ -122,7 +124,7 @@ class TaskHandler(BaseHTTPRequestHandler): def do_GET_day(self) -> dict[str, object]: """Show single Day of ?date=.""" - date = self.params.get_str('date', todays_date()) + date = self.params.get_str('date', date_in_n_days(0)) todays_todos = Todo.by_date(self.conn, date) conditions_present = [] enablers_for = {} diff --git a/tests/days.py b/tests/days.py index 4727fac..d34d7ba 100644 --- a/tests/days.py +++ b/tests/days.py @@ -2,7 +2,7 @@ from unittest import TestCase from datetime import datetime from tests.utils import TestCaseWithDB, TestCaseWithServer -from plomtask.dating import todays_date +from plomtask.dating import date_in_n_days from plomtask.days import Day from plomtask.exceptions import BadFormatException @@ -87,7 +87,7 @@ class TestsWithDB(TestCaseWithDB): [day5, day6, day7]) self.check_storage([day1, day2, day3, day6]) # check 'today' is interpreted as today's date - today = Day(todays_date()) + today = Day(date_in_n_days(0)) today.save(self.db_conn) self.assertEqual(Day.by_date_range_filled(self.db_conn, 'today', 'today'), -- 2.30.2