rozsireni o predpovidani posilani

This commit is contained in:
lachtan
2026-06-10 10:54:21 +02:00
parent 10801da03e
commit b0a93dbc15
6 changed files with 337 additions and 11 deletions

View File

@@ -21,6 +21,7 @@ from zoneinfo import ZoneInfo
from croniter import croniter
from db import get_db, init_db, log_operation
from forecast import fires_in_window, format_upcoming, window_for
from random_times import compute_fire_times, minutes_to_hhmm, parse_window
WORKSPACE = Path(__file__).resolve().parent.parent.parent.parent
@@ -430,6 +431,23 @@ def cmd_delivered(args: argparse.Namespace) -> int:
conn.close()
def cmd_upcoming(args: argparse.Namespace) -> int:
"""List scheduled fires in a time window (the plan, not deliveries — see `delivered`)."""
_ensure_db()
conn = get_db(DB_PATH)
try:
now = datetime.now(PRAGUE).replace(tzinfo=None)
start, end = window_for(now, args.date, args.days)
for line in format_upcoming(fires_in_window(conn, start, end)):
print(line)
return 0
except ValueError as exc:
print(json.dumps({"error": str(exc)}), file=sys.stderr)
return 1
finally:
conn.close()
def main() -> None:
parser = argparse.ArgumentParser(description="CRUD for reminders (SQLite backed)")
sub = parser.add_subparsers(dest="command", required=True)
@@ -474,6 +492,10 @@ def main() -> None:
delivered_p = sub.add_parser("delivered", help="List reminders delivered to the user (default: today)")
delivered_p.add_argument("--since", metavar="YYYY-MM-DD", help="List deliveries on/after this date instead of today")
upcoming_p = sub.add_parser("upcoming", help="List scheduled fires in a window (default: rest of today)")
upcoming_p.add_argument("--date", metavar="YYYY-MM-DD", help="Show fires for this whole day")
upcoming_p.add_argument("--days", type=int, metavar="N", help="Show fires for the next N calendar days (incl. today)")
args = parser.parse_args()
dispatch = {
"list": cmd_list,
@@ -483,6 +505,7 @@ def main() -> None:
"enable": cmd_enable,
"disable": cmd_disable,
"delivered": cmd_delivered,
"upcoming": cmd_upcoming,
}
return dispatch[args.command](args)