From 3ce72d8541aa8a0c41b554b0cd0bdc39278b5da9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Farella?= Date: Wed, 26 Nov 2025 15:11:15 +0100 Subject: [PATCH 1/2] quick fix for the timezone issue for https://github.com/flask-dashboard/Flask-MonitoringDashboard/issues/543 --- flask_monitoringdashboard/database/custom_graph.py | 6 ++++-- flask_monitoringdashboard/database/request.py | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/flask_monitoringdashboard/database/custom_graph.py b/flask_monitoringdashboard/database/custom_graph.py index d3953bbb6..8dae8c66b 100644 --- a/flask_monitoringdashboard/database/custom_graph.py +++ b/flask_monitoringdashboard/database/custom_graph.py @@ -1,4 +1,4 @@ -from datetime import timedelta +from datetime import timedelta, datetime, timezone from sqlalchemy.orm.exc import NoResultFound @@ -23,7 +23,9 @@ def get_graph_id_from_name(session, name): def add_value(session, graph_id, value): - data = CustomGraphData(graph_id=graph_id, value=value) + data = CustomGraphData(graph_id=graph_id, + value=value, + time=datetime.now(timezone.utc)) session.add(data) diff --git a/flask_monitoringdashboard/database/request.py b/flask_monitoringdashboard/database/request.py index 90ca48ba1..40a4faee6 100644 --- a/flask_monitoringdashboard/database/request.py +++ b/flask_monitoringdashboard/database/request.py @@ -2,7 +2,7 @@ Contains all functions that access a Request object. """ import time - +from datetime import datetime, timezone from sqlalchemy import and_, func from flask_monitoringdashboard.database import Request @@ -42,6 +42,7 @@ def add_request(session, duration, endpoint_id, ip, group_by, status_code): ip=ip, group_by=group_by, status_code=status_code, + time_requested=datetime.now(timezone.utc) ) session.add(request) session.commit() From 1b63afa29294737d59012e56cd726b87b886e4d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Farella?= Date: Mon, 15 Dec 2025 14:49:56 +0100 Subject: [PATCH 2/2] fix for the timezone issue by using a callable --- flask_monitoringdashboard/database/__init__.py | 10 +++++----- flask_monitoringdashboard/database/custom_graph.py | 6 ++---- flask_monitoringdashboard/database/request.py | 3 +-- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/flask_monitoringdashboard/database/__init__.py b/flask_monitoringdashboard/database/__init__.py index e6bd13cea..80ec59af2 100644 --- a/flask_monitoringdashboard/database/__init__.py +++ b/flask_monitoringdashboard/database/__init__.py @@ -72,7 +72,7 @@ class TelemetryUser(Base): times_initialized = Column(Integer, default=1) """For checking the amount of times the app was initialized""" - last_initialized = Column(DateTime, default=datetime.datetime.now(datetime.timezone.utc)) + last_initialized = Column(DateTime, default=lambda: datetime.datetime.now(datetime.timezone.utc)) """Check when was the last time user accessed FMD""" monitoring_consent = Column(Integer, default=1) @@ -93,7 +93,7 @@ class Endpoint(Base): monitor_level = Column(Integer, default=config.monitor_level) """0 - disabled, 1 - performance, 2 - outliers, 3 - profiler + outliers""" - time_added = Column(DateTime, default=datetime.datetime.now(datetime.timezone.utc)) + time_added = Column(DateTime, default=lambda: datetime.datetime.now(datetime.timezone.utc)) """Time when the endpoint was added.""" version_added = Column(String(100), default=config.version) @@ -118,7 +118,7 @@ class Request(Base): duration = Column(Float, nullable=False) """Processing time of the request in milliseconds.""" - time_requested = Column(DateTime, default=datetime.datetime.now(datetime.timezone.utc)) + time_requested = Column(DateTime, default=lambda: datetime.datetime.now(datetime.timezone.utc)) """Moment when the request was handled.""" version_requested = Column(String(100), default=config.version) @@ -225,7 +225,7 @@ class CustomGraph(Base): title = Column(String(250), nullable=False, unique=True) """Title of this graph.""" - time_added = Column(DateTime, default=datetime.datetime.now(datetime.timezone.utc)) + time_added = Column(DateTime, default=lambda: datetime.datetime.now(datetime.timezone.utc)) """When the graph was first added to the dashboard.""" version_added = Column(String(100), default=config.version) @@ -244,7 +244,7 @@ class CustomGraphData(Base): graph = relationship(CustomGraph, backref="data") """Graph for which the data is collected.""" - time = Column(DateTime, default=datetime.datetime.now(datetime.timezone.utc)) + time = Column(DateTime, default=lambda: datetime.datetime.now(datetime.timezone.utc)) """Moment when the data is collected.""" value = Column(Float) diff --git a/flask_monitoringdashboard/database/custom_graph.py b/flask_monitoringdashboard/database/custom_graph.py index 8dae8c66b..d3953bbb6 100644 --- a/flask_monitoringdashboard/database/custom_graph.py +++ b/flask_monitoringdashboard/database/custom_graph.py @@ -1,4 +1,4 @@ -from datetime import timedelta, datetime, timezone +from datetime import timedelta from sqlalchemy.orm.exc import NoResultFound @@ -23,9 +23,7 @@ def get_graph_id_from_name(session, name): def add_value(session, graph_id, value): - data = CustomGraphData(graph_id=graph_id, - value=value, - time=datetime.now(timezone.utc)) + data = CustomGraphData(graph_id=graph_id, value=value) session.add(data) diff --git a/flask_monitoringdashboard/database/request.py b/flask_monitoringdashboard/database/request.py index 40a4faee6..90ca48ba1 100644 --- a/flask_monitoringdashboard/database/request.py +++ b/flask_monitoringdashboard/database/request.py @@ -2,7 +2,7 @@ Contains all functions that access a Request object. """ import time -from datetime import datetime, timezone + from sqlalchemy import and_, func from flask_monitoringdashboard.database import Request @@ -42,7 +42,6 @@ def add_request(session, duration, endpoint_id, ip, group_by, status_code): ip=ip, group_by=group_by, status_code=status_code, - time_requested=datetime.now(timezone.utc) ) session.add(request) session.commit()