diff --git a/src/common/dates.py b/src/common/dates.py index c599abb2..3ceb0384 100644 --- a/src/common/dates.py +++ b/src/common/dates.py @@ -112,6 +112,10 @@ def today_at_midnight() -> datetime.datetime: """Create a datetime object with today's date, at midnight.""" return datetime.datetime.now(tz=datetime.timezone.utc).replace(hour=0, minute=0, second=0, microsecond=0) +def today_at_end_of_day() -> datetime.datetime: + """Create a datetime object with today's date, at the end of the day.""" + return datetime.datetime.now(tz=datetime.timezone.utc).replace(hour=23, minute=59, second=59, microsecond=999999) + def today() -> datetime.date: """Create a date object with today's date.""" return datetime.datetime.now(tz=datetime.timezone.utc).date() diff --git a/src/common/releasedata.py b/src/common/releasedata.py index 5c061696..02784198 100644 --- a/src/common/releasedata.py +++ b/src/common/releasedata.py @@ -7,7 +7,7 @@ from pathlib import Path from types import TracebackType from typing import Optional, Type -from . import endoflife +from . import dates, endoflife SRC_DIR = Path('src') DATA_DIR = Path('releases') @@ -182,6 +182,10 @@ class ProductData: def declare_version(self, version_name: str, versions_date: datetime) -> None: self.updated = True + if versions_date > dates.today_at_end_of_day(): + logging.warning(f"skipping declaration of version {version_name} with future date {versions_date} for {self}") + return + if version_name in self.versions and self.versions[version_name].date() != versions_date: logging.info(f"overwriting {version_name} ({self.get_version(version_name).date()} -> {versions_date}) for {self}") self.versions[version_name].replace_date(versions_date)