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,6 +1,8 @@
|
|||
import enum
|
||||
from datetime import datetime
|
||||
from typing import List, Any
|
||||
from datetime import datetime, timezone
|
||||
from typing import Any, List
|
||||
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.extensions import db
|
||||
from app.models.activity import Activity
|
||||
|
@ -24,13 +26,13 @@ class AlarmState(enum.Enum):
|
|||
|
||||
|
||||
class Alarm(db.Model): # type: ignore
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
target = db.Column(db.String(255), nullable=False)
|
||||
aspect = db.Column(db.String(255), nullable=False)
|
||||
alarm_state = db.Column(db.Enum(AlarmState), default=AlarmState.UNKNOWN, nullable=False)
|
||||
state_changed = db.Column(db.DateTime(), nullable=False)
|
||||
last_updated = db.Column(db.DateTime(), nullable=False)
|
||||
text = db.Column(db.String(255), nullable=False)
|
||||
id: Mapped[int] = mapped_column(db.Integer, primary_key=True)
|
||||
target: Mapped[str]
|
||||
aspect: Mapped[str]
|
||||
alarm_state: Mapped[AlarmState] = mapped_column(default=AlarmState.UNKNOWN)
|
||||
state_changed: Mapped[datetime] = mapped_column(db.DateTime(timezone=True))
|
||||
last_updated: Mapped[datetime] = mapped_column(db.DateTime(timezone=True))
|
||||
text: Mapped[str]
|
||||
|
||||
@classmethod
|
||||
def csv_header(cls) -> List[str]:
|
||||
|
@ -40,11 +42,8 @@ class Alarm(db.Model): # type: ignore
|
|||
return [getattr(self, x) for x in self.csv_header()]
|
||||
|
||||
def update_state(self, state: AlarmState, text: str) -> None:
|
||||
if self.alarm_state is None:
|
||||
self.alarm_state = AlarmState.UNKNOWN
|
||||
|
||||
if self.alarm_state != state or self.state_changed is None:
|
||||
self.state_changed = datetime.utcnow()
|
||||
self.state_changed = datetime.now(tz=timezone.utc)
|
||||
activity = Activity(activity_type="alarm_state",
|
||||
text=f"[{self.aspect}] {state.emoji} Alarm state changed from "
|
||||
f"{self.alarm_state.name} to {state.name} on {self.target}: {text}.")
|
||||
|
@ -56,4 +55,4 @@ class Alarm(db.Model): # type: ignore
|
|||
db.session.add(activity)
|
||||
self.alarm_state = state
|
||||
self.text = text
|
||||
self.last_updated = datetime.utcnow()
|
||||
self.last_updated = datetime.now(tz=timezone.utc)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue