From 40669b8f08780de3df8b5b71a6cf5d0a7cf20258 Mon Sep 17 00:00:00 2001 From: Xevion Date: Fri, 1 Nov 2024 16:36:47 -0500 Subject: [PATCH] Fix human_readable not handling UTC dates properly, add types-pytz --- .vscode/settings.json | 33 ++++++++++++++++----------------- backend/linkpulse/app.py | 8 ++++++-- backend/poetry.lock | 13 ++++++++++++- backend/pyproject.toml | 1 + 4 files changed, 35 insertions(+), 20 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index df7e92c..fa42c98 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,18 +1,17 @@ { - "cSpell.words": [ - "apscheduler", - "bpython", - "Callsite", - "excepthook", - "inmemory", - "linkpulse", - "migratehistory", - "Nixpacks", - "starlette", - "structlog", - "timestamper" - ], - "python.analysis.extraPaths": [ - "./backend/" - ] -} \ No newline at end of file + "cSpell.words": [ + "apscheduler", + "bpython", + "Callsite", + "excepthook", + "inmemory", + "linkpulse", + "migratehistory", + "Nixpacks", + "pytz", + "starlette", + "structlog", + "timestamper" + ], + "python.analysis.extraPaths": ["./backend/"] +} diff --git a/backend/linkpulse/app.py b/backend/linkpulse/app.py index 9696b1f..3e99593 100644 --- a/backend/linkpulse/app.py +++ b/backend/linkpulse/app.py @@ -4,11 +4,12 @@ import random from collections import defaultdict from contextlib import asynccontextmanager from dataclasses import dataclass, field -from datetime import datetime +from datetime import datetime, timezone from typing import AsyncIterator from asgi_correlation_id import CorrelationIdMiddleware import human_readable +import pytz from apscheduler.schedulers.background import BackgroundScheduler # type: ignore from apscheduler.triggers.interval import IntervalTrigger # type: ignore from dotenv import load_dotenv @@ -195,7 +196,10 @@ async def get_ips(request: Request, response: Response): "ips": [ responses.SeenIP( ip=hide_ip(ip.ip) if ip.ip != user_ip else ip.ip, - last_seen=human_readable.date_time(ip.last_seen), + last_seen=human_readable.date_time( + value=pytz.utc.localize(ip.last_seen), + when=datetime.now(timezone.utc), + ), count=ip.count, ) for ip in latest_ips diff --git a/backend/poetry.lock b/backend/poetry.lock index 62ff562..15f9c5c 100644 --- a/backend/poetry.lock +++ b/backend/poetry.lock @@ -1027,6 +1027,17 @@ files = [ {file = "types_psycopg2-2.9.21.20241019-py3-none-any.whl", hash = "sha256:44d091e67732d16a941baae48cd7b53bf91911bc36888652447cf1ef0c1fb3f6"}, ] +[[package]] +name = "types-pytz" +version = "2024.2.0.20241003" +description = "Typing stubs for pytz" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-pytz-2024.2.0.20241003.tar.gz", hash = "sha256:575dc38f385a922a212bac00a7d6d2e16e141132a3c955078f4a4fd13ed6cb44"}, + {file = "types_pytz-2024.2.0.20241003-py3-none-any.whl", hash = "sha256:3e22df1336c0c6ad1d29163c8fda82736909eb977281cb823c57f8bae07118b7"}, +] + [[package]] name = "typing-extensions" version = "4.12.2" @@ -1115,4 +1126,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.12" -content-hash = "301e6babf2c3116cc910e1269a8d05d734fc9e8c8a80cd67767b331227c2a72d" +content-hash = "a0cc32861b71da789edc5df54e79239d6cca81cb3d14984a1306a3f92735589f" diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 7aa4009..750b518 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -31,6 +31,7 @@ asgi-correlation-id = "^4.3.4" [tool.poetry.group.dev.dependencies] memory-profiler = "^0.61.0" bpython = "^0.24" +types-pytz = "^2024.2.0.20241003" [build-system] requires = ["poetry-core"]