From 944b96eea7ae6fb5b36297557e330daab377ea73 Mon Sep 17 00:00:00 2001 From: Quantum Date: Fri, 12 Apr 2024 21:34:15 -0400 Subject: [PATCH] Store aware times for better interaction with other Django apps --- peeringdb_api/backend.py | 19 +++++++++++++++++++ peeringdb_api/client_adapter.py | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 peeringdb_api/backend.py diff --git a/peeringdb_api/backend.py b/peeringdb_api/backend.py new file mode 100644 index 0000000..9b7fcff --- /dev/null +++ b/peeringdb_api/backend.py @@ -0,0 +1,19 @@ +import zoneinfo + +from django.db.models import DateTimeField, Model +from django.utils import timezone +from django_peeringdb import __version__ # noqa +from django_peeringdb.client_adaptor.backend import Backend as OldBackend + +utc = zoneinfo.ZoneInfo('UTC') + + +class Backend(OldBackend): + def clean(self, obj: Model): + for field in obj._meta.get_fields(): + if isinstance(field, DateTimeField): + value = getattr(obj, field.name) + if timezone.is_naive(value): + setattr(obj, field.name, timezone.make_aware(value, utc)) + + super().clean(obj) diff --git a/peeringdb_api/client_adapter.py b/peeringdb_api/client_adapter.py index f22842e..ceb2b79 100644 --- a/peeringdb_api/client_adapter.py +++ b/peeringdb_api/client_adapter.py @@ -1,4 +1,4 @@ -from django_peeringdb.client_adaptor import backend +from peeringdb_api import backend def load_backend(**kwargs):