diff --git a/api/ovdashboard_api/core/calevent.py b/api/ovdashboard_api/core/calevent.py index c22bbca..b3844db 100644 --- a/api/ovdashboard_api/core/calevent.py +++ b/api/ovdashboard_api/core/calevent.py @@ -6,16 +6,26 @@ Caches events using `timed_alru_cache`. import functools import logging -from datetime import datetime +from datetime import UTC, datetime from typing import Annotated, Self -from pydantic import BaseModel, ConfigDict, StringConstraints +from pydantic import AfterValidator, BaseModel, ConfigDict, StringConstraints from vobject.base import Component _logger = logging.getLogger(__name__) type StrippedStr = Annotated[str, StringConstraints(strip_whitespace=True)] +def make_utc(v: datetime) -> datetime: + if v.tzinfo is None: + return v.replace(tzinfo=UTC) + + return v + + +type UTCDateTime = Annotated[datetime, AfterValidator(make_utc)] + + @functools.total_ordering class CalEvent(BaseModel): """ @@ -31,8 +41,8 @@ class CalEvent(BaseModel): summary: StrippedStr = "" description: StrippedStr = "" - dtstart: datetime = datetime.now() - dtend: datetime = datetime.now() + dtstart: UTCDateTime = datetime.now(UTC) + dtend: UTCDateTime = datetime.now(UTC) def __lt__(self, other: Self) -> bool: """ diff --git a/api/ovdashboard_api/core/dav/caldav.py b/api/ovdashboard_api/core/dav/caldav.py index 3a0acb7..8ac5108 100644 --- a/api/ovdashboard_api/core/dav/caldav.py +++ b/api/ovdashboard_api/core/dav/caldav.py @@ -1,5 +1,5 @@ import logging -from datetime import datetime, timedelta +from datetime import UTC, datetime, timedelta from typing import cast from asyncify import asyncify @@ -69,7 +69,7 @@ class CalDAV: _logger.info(f"downloading {calendar_name!r} ...") dt_start = datetime.combine( - datetime.now().date(), + datetime.now(UTC).date(), datetime.min.time(), ) dt_end = dt_start + timedelta(days=cfg.calendar.future_days) diff --git a/api/pyproject.toml b/api/pyproject.toml index d1381c3..eec1a63 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -3,7 +3,7 @@ authors = ["Jörn-Michael Miehe "] description = "" include = ["ovdashboard_api/skel/*"] name = "ovdashboard_api" -version = "0.2.0" +version = "0.2.1" [tool.poetry.dependencies] Markdown = "^3.5.1" @@ -25,8 +25,8 @@ webdavclient3 = "^3.14.6" black = "^23.11.0" flake8 = "^6.1.0" flake8-isort = "^6.1.1" -types-cachetools = "^5.3.0.7" pytest = "^7.4.3" +types-cachetools = "^5.3.0.7" [tool.poetry.scripts] ovdashboard-api = "ovdashboard_api.main:main" diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index 808f819..f24f864 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -11,7 +11,7 @@ services: - "127.0.0.1:6379:6379" app: - image: code.yavook.de/oekzident.de/ovdashboard:0.2.0 + image: code.yavook.de/oekzident.de/ovdashboard:0.2.1 restart: always pull_policy: always depends_on: diff --git a/deploy/install.sh b/deploy/install.sh index 0250a6d..32e3562 100644 --- a/deploy/install.sh +++ b/deploy/install.sh @@ -5,7 +5,7 @@ ######### # env setup -ovd_version="0.2.0" +ovd_version="0.2.1" export DEBIAN_FRONTEND="noninteractive" set -e diff --git a/ui/package.json b/ui/package.json index 24a6284..acca596 100644 --- a/ui/package.json +++ b/ui/package.json @@ -1,6 +1,6 @@ { "name": "ovdashboard-ui", - "version": "0.2.0", + "version": "0.2.1", "private": true, "scripts": { "serve": "vue-cli-service serve",