feat: switch all timezone naive datetimes to timezone aware
This commit is contained in:
parent
41fc0a73a5
commit
e22abb383c
30 changed files with 322 additions and 226 deletions
|
@ -1,7 +1,7 @@
|
|||
import logging
|
||||
from abc import abstractmethod
|
||||
from datetime import datetime
|
||||
from typing import Union, List, Optional, Any, Dict
|
||||
from datetime import datetime, timezone
|
||||
from typing import Any, Dict, List, Optional, Union
|
||||
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
|
@ -14,9 +14,9 @@ class AbstractConfiguration(db.Model): # type: ignore
|
|||
|
||||
id: Mapped[int] = mapped_column(db.Integer, primary_key=True)
|
||||
description: Mapped[str]
|
||||
added: Mapped[datetime]
|
||||
updated: Mapped[datetime]
|
||||
destroyed: Mapped[Optional[datetime]]
|
||||
added: Mapped[datetime] = mapped_column(db.DateTime(timezone=True))
|
||||
updated: Mapped[datetime] = mapped_column(db.DateTime(timezone=True))
|
||||
destroyed: Mapped[Optional[datetime]] = mapped_column(db.DateTime(timezone=True), nullable=True)
|
||||
|
||||
@property
|
||||
@abstractmethod
|
||||
|
@ -24,8 +24,8 @@ class AbstractConfiguration(db.Model): # type: ignore
|
|||
raise NotImplementedError()
|
||||
|
||||
def destroy(self) -> None:
|
||||
self.destroyed = datetime.utcnow()
|
||||
self.updated = datetime.utcnow()
|
||||
self.destroyed = datetime.now(tz=timezone.utc)
|
||||
self.updated = datetime.now(tz=timezone.utc)
|
||||
|
||||
@classmethod
|
||||
def csv_header(cls) -> List[str]:
|
||||
|
@ -41,11 +41,11 @@ class AbstractConfiguration(db.Model): # type: ignore
|
|||
|
||||
class Deprecation(db.Model): # type: ignore[name-defined,misc]
|
||||
id: Mapped[int] = mapped_column(db.Integer, primary_key=True)
|
||||
resource_type: Mapped[str] = mapped_column(db.String(50))
|
||||
resource_id: Mapped[int] = mapped_column(db.Integer)
|
||||
deprecated_at: Mapped[datetime] = mapped_column(db.DateTime(), default=datetime.utcnow, nullable=False)
|
||||
resource_type: Mapped[str]
|
||||
resource_id: Mapped[int]
|
||||
deprecated_at: Mapped[datetime] = mapped_column(db.DateTime(timezone=True))
|
||||
meta: Mapped[Optional[Dict[str, Any]]] = mapped_column(db.JSON())
|
||||
reason: Mapped[str] = mapped_column(db.String(), nullable=False)
|
||||
reason: Mapped[str]
|
||||
|
||||
@property
|
||||
def resource(self) -> "AbstractResource":
|
||||
|
@ -58,11 +58,11 @@ class AbstractResource(db.Model): # type: ignore
|
|||
__abstract__ = True
|
||||
|
||||
id: Mapped[int] = mapped_column(db.Integer, primary_key=True)
|
||||
added: Mapped[datetime] = mapped_column(db.DateTime(), default=datetime.utcnow)
|
||||
updated: Mapped[datetime] = mapped_column(db.DateTime(), default=datetime.utcnow)
|
||||
deprecated: Mapped[Optional[datetime]]
|
||||
added: Mapped[datetime] = mapped_column(db.DateTime(timezone=True))
|
||||
updated: Mapped[datetime] = mapped_column(db.DateTime(timezone=True))
|
||||
deprecated: Mapped[Optional[datetime]] = mapped_column(db.DateTime(timezone=True), nullable=True)
|
||||
deprecation_reason: Mapped[Optional[str]]
|
||||
destroyed: Mapped[Optional[datetime]]
|
||||
destroyed: Mapped[Optional[datetime]] = mapped_column(db.DateTime(timezone=True), nullable=True)
|
||||
|
||||
def __init__(self, *,
|
||||
id: Optional[int] = None,
|
||||
|
@ -73,9 +73,9 @@ class AbstractResource(db.Model): # type: ignore
|
|||
destroyed: Optional[datetime] = None,
|
||||
**kwargs: Any) -> None:
|
||||
if added is None:
|
||||
added = datetime.utcnow()
|
||||
added = datetime.now(tz=timezone.utc)
|
||||
if updated is None:
|
||||
updated = datetime.utcnow()
|
||||
updated = datetime.now(tz=timezone.utc)
|
||||
super().__init__(id=id,
|
||||
added=added,
|
||||
updated=updated,
|
||||
|
@ -101,9 +101,9 @@ class AbstractResource(db.Model): # type: ignore
|
|||
"""
|
||||
if self.deprecated is None:
|
||||
logging.info("Deprecating %s (reason=%s)", self.brn, reason)
|
||||
self.deprecated = datetime.utcnow()
|
||||
self.deprecated = datetime.now(tz=timezone.utc)
|
||||
self.deprecation_reason = reason
|
||||
self.updated = datetime.utcnow()
|
||||
self.updated = datetime.now(tz=timezone.utc)
|
||||
if reason not in [d.reason for d in self.deprecations]:
|
||||
new_deprecation = Deprecation(
|
||||
resource_type=type(self).__name__,
|
||||
|
@ -132,8 +132,8 @@ class AbstractResource(db.Model): # type: ignore
|
|||
"""
|
||||
if self.deprecated is None:
|
||||
self.deprecate(reason="destroyed")
|
||||
self.destroyed = datetime.utcnow()
|
||||
self.updated = datetime.utcnow()
|
||||
self.destroyed = datetime.now(tz=timezone.utc)
|
||||
self.updated = datetime.now(tz=timezone.utc)
|
||||
|
||||
@classmethod
|
||||
def csv_header(cls) -> List[str]:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue