From 00ab59f0e4a49818b6792a19fe2e0f18e6b65868 Mon Sep 17 00:00:00 2001 From: Valentin GHIRARDI Date: Thu, 22 Jan 2026 20:09:20 +0100 Subject: [PATCH] added datetime tracking --- .env.empty | 1 + app/dater.py | 9 +++++++++ app/handler.py | 2 +- app/logger.py | 6 +++--- app/main.py | 4 ++++ app/server.py | 8 ++++++-- app/utils.py | 11 +++++++++++ compose.yml | 1 + 8 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 app/dater.py create mode 100644 app/utils.py diff --git a/.env.empty b/.env.empty index a5e8a17..a24d615 100644 --- a/.env.empty +++ b/.env.empty @@ -2,3 +2,4 @@ HOST= PORT= CACHE_DURATION= ICS_URL= +TIME_ZONE= diff --git a/app/dater.py b/app/dater.py new file mode 100644 index 0000000..54ea58d --- /dev/null +++ b/app/dater.py @@ -0,0 +1,9 @@ +from ics import Calendar +import utils + +def date_calendar(calendar: Calendar): + time = utils.format_datetime("%d/%m/%Y %H:%M:%S") + + for event in calendar.events: + old_description = f"event.description\n" if event.description else "" + event.description = f"{old_description}Retrieved on: {time}" \ No newline at end of file diff --git a/app/handler.py b/app/handler.py index c06d7ea..72ed733 100644 --- a/app/handler.py +++ b/app/handler.py @@ -57,7 +57,7 @@ def generate_class(response_callback): def do_OPTIONS(self): self._handle_request() - def log_message(self, fmt, *args): + def log_message(self, format, *args): return return Handler \ No newline at end of file diff --git a/app/logger.py b/app/logger.py index ec28121..21a2418 100644 --- a/app/logger.py +++ b/app/logger.py @@ -1,13 +1,13 @@ import sys import threading -from datetime import datetime +import utils _console_lock = threading.Lock() def _log(prefix: str, message: str): - time = datetime.now().strftime("[%H:%M:%S]") + time = utils.format_datetime("%H:%M:%S") with _console_lock: - print(f"{time} {prefix} {message}") + print(f"[{time}] {prefix} {message}") def info(message: str): _log("INFO", message) diff --git a/app/main.py b/app/main.py index 2dbeb0f..6dd186a 100644 --- a/app/main.py +++ b/app/main.py @@ -2,6 +2,7 @@ import signal import sys import os import logger +import utils from server import Server def _handle_exit(sig, frame): @@ -30,10 +31,13 @@ def main(): port = _get_environment_variable("PORT") cache_duration = _get_environment_variable("CACHE_DURATION") ics_url = _get_environment_variable("ICS_URL") + time_zone = _get_environment_variable("TIME_ZONE") port_int = _parse_environment_variable("PORT", port) cache_duration_int = _parse_environment_variable("CACHE_DURATION", cache_duration) + utils.set_time_zone(time_zone) + server = Server(host, port_int, cache_duration_int, ics_url) server.serve() diff --git a/app/server.py b/app/server.py index 0f4bec0..5b54ff5 100644 --- a/app/server.py +++ b/app/server.py @@ -1,5 +1,6 @@ import time import filter +import dater import handler from http.server import HTTPServer import logger @@ -16,10 +17,13 @@ class Server: def _cache_calendar(self): if not self._cached_calendar or self._cached_time + self._cache_duration < time.time(): - self._cached_calendar = grabber.grab_calendar(self._ics_url) - if not self._cached_calendar: + calendar = grabber.grab_calendar(self._ics_url) + if not calendar: return False + dater.date_calendar(calendar) + + self._cached_calendar = calendar self._cached_time = time.time() logger.info("Successfully cached calendar") diff --git a/app/utils.py b/app/utils.py new file mode 100644 index 0000000..a923b39 --- /dev/null +++ b/app/utils.py @@ -0,0 +1,11 @@ +from datetime import datetime +from zoneinfo import ZoneInfo + +_time_zone = "" + +def set_time_zone(time_zone: str): + global _time_zone + _time_zone = time_zone + +def format_datetime(format: str): + return datetime.now(ZoneInfo(_time_zone)).strftime(format) \ No newline at end of file diff --git a/compose.yml b/compose.yml index c65a852..d925e39 100644 --- a/compose.yml +++ b/compose.yml @@ -7,3 +7,4 @@ services: - PORT=${PORT} - CACHE_DURATION=${CACHE_DURATION} - ICS_URL=${ICS_URL} + - TIME_ZONE=${TIME_ZONE}