aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fietsboek/util.py41
-rw-r--r--fietsboek/views/upload.py2
2 files changed, 22 insertions, 21 deletions
diff --git a/fietsboek/util.py b/fietsboek/util.py
index aff41fe..ddc4832 100644
--- a/fietsboek/util.py
+++ b/fietsboek/util.py
@@ -127,26 +127,27 @@ def guess_gpx_timezone(gpx):
# Next, we look if there's a "localTime" extension on the track, so we can
# compare the local time to the time.
- for track in gpx.tracks:
- time = times[0]
- local_time = None
- for extension in track.extensions:
- if extension.tag.lower() == 'localtime':
- local_time = datetime.datetime.fromisoformat(
- fix_iso_timestamp(extension.text)).replace(tzinfo=None)
- elif extension.tag.lower() == 'time':
- time = datetime.datetime.fromisoformat(
- fix_iso_timestamp(extension.text)).replace(tzinfo=None)
- if time is not None and local_time is not None:
- # We found a pair that we can use!
- offset = local_time - time
- # With all the time madness, luckily most time zones seem to stick
- # to an offset that is a multiple of 15 minutes (see
- # https://en.wikipedia.org/wiki/List_of_UTC_offsets). We try to
- # round the value to the nearest of 15 minutes, to prevent any
- # funky offsets from happening due to slight clock desyncs.
- offset = round_timedelta_to_multiple(offset, datetime.timedelta(minutes=15))
- return datetime.timezone(offset)
+ if times:
+ for track in gpx.tracks:
+ time = times[0]
+ local_time = None
+ for extension in track.extensions:
+ if extension.tag.lower() == 'localtime':
+ local_time = datetime.datetime.fromisoformat(
+ fix_iso_timestamp(extension.text)).replace(tzinfo=None)
+ elif extension.tag.lower() == 'time':
+ time = datetime.datetime.fromisoformat(
+ fix_iso_timestamp(extension.text)).replace(tzinfo=None)
+ if local_time is not None:
+ # We found a pair that we can use!
+ offset = local_time - time
+ # With all the time madness, luckily most time zones seem to stick
+ # to an offset that is a multiple of 15 minutes (see
+ # https://en.wikipedia.org/wiki/List_of_UTC_offsets). We try to
+ # round the value to the nearest of 15 minutes, to prevent any
+ # funky offsets from happening due to slight clock desyncs.
+ offset = round_timedelta_to_multiple(offset, datetime.timedelta(minutes=15))
+ return datetime.timezone(offset)
# If all else fails, we assume that we are UTC+00:00
return datetime.timezone.utc
diff --git a/fietsboek/views/upload.py b/fietsboek/views/upload.py
index 4f42b80..bbd8f68 100644
--- a/fietsboek/views/upload.py
+++ b/fietsboek/views/upload.py
@@ -104,7 +104,7 @@ def finish_upload(request):
badges = [(False, badge) for badge in badges]
gpx = gpxpy.parse(upload.gpx_data)
timezone = util.guess_gpx_timezone(gpx)
- date = gpx.time or gpx.get_time_bounds().start_time
+ date = gpx.time or gpx.get_time_bounds().start_time or datetime.datetime.now()
date = date.astimezone(timezone)
tz_offset = timezone.utcoffset(date)
track_name = ""