1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-08-04 20:55:19 +02:00

Display transportation entries in selected time zone not UTC

This commit is contained in:
Giiid 2025-07-22 02:15:32 +01:00
parent 4e96e529f4
commit 47efae6f91
2 changed files with 18 additions and 1 deletions

View file

@ -1,6 +1,7 @@
from django.utils import timezone from django.utils import timezone
import os import os
from .models import Adventure, AdventureImage, ChecklistItem, Collection, Note, Transportation, Checklist, Visit, Category, Attachment, Lodging from .models import Adventure, AdventureImage, ChecklistItem, Collection, Note, Transportation, Checklist, Visit, Category, Attachment, Lodging
from .utils.timezone_utils import format_datetime_in_selected_timezone
from rest_framework import serializers from rest_framework import serializers
from main.utils import CustomModelSerializer from main.utils import CustomModelSerializer
from users.serializers import CustomUserDetailsSerializer from users.serializers import CustomUserDetailsSerializer
@ -254,6 +255,8 @@ class AdventureSerializer(CustomModelSerializer):
class TransportationSerializer(CustomModelSerializer): class TransportationSerializer(CustomModelSerializer):
distance = serializers.SerializerMethodField() distance = serializers.SerializerMethodField()
start_date_local = serializers.SerializerMethodField()
end_date_local = serializers.SerializerMethodField()
class Meta: class Meta:
model = Transportation model = Transportation
@ -262,7 +265,7 @@ class TransportationSerializer(CustomModelSerializer):
'link', 'date', 'flight_number', 'from_location', 'to_location', 'link', 'date', 'flight_number', 'from_location', 'to_location',
'is_public', 'collection', 'created_at', 'updated_at', 'end_date', 'is_public', 'collection', 'created_at', 'updated_at', 'end_date',
'origin_latitude', 'origin_longitude', 'destination_latitude', 'destination_longitude', 'origin_latitude', 'origin_longitude', 'destination_latitude', 'destination_longitude',
'start_timezone', 'end_timezone', 'distance' # ✅ Add distance here 'start_timezone', 'end_timezone', 'distance', 'start_date_local', 'end_date_local' # ✅ Add distance here
] ]
read_only_fields = ['id', 'created_at', 'updated_at', 'user_id', 'distance'] read_only_fields = ['id', 'created_at', 'updated_at', 'user_id', 'distance']
@ -278,6 +281,12 @@ class TransportationSerializer(CustomModelSerializer):
except ValueError: except ValueError:
return None return None
return None return None
def get_start_date_local(self, obj):
return format_datetime_in_selected_timezone(obj.date, obj.start_timezone)
def get_end_date_local(self, obj):
return format_datetime_in_selected_timezone(obj.end_date, obj.end_timezone)
class LodgingSerializer(CustomModelSerializer): class LodgingSerializer(CustomModelSerializer):

View file

@ -0,0 +1,8 @@
import pytz
def format_datetime_in_selected_timezone(dt, user_tz):
if dt is None and user_tz is None:
return None
tz = pytz.timezone(user_tz)
return dt.astimezone(tz).isoformat()