Private
Public Access
1
0

Merge branch 'release/v22.6.5'

This commit is contained in:
2024-12-26 17:49:54 +01:00
5 changed files with 37 additions and 10 deletions

View File

@@ -1156,7 +1156,8 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
consistencychecks=False,
startdatetime='',
workoutid='',
impeller=False):
impeller=False,
timezone=''):
message = None
@@ -1173,7 +1174,7 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
row = rdata(f2, rower=rr)
startdatetime, startdate, starttime, timezone_str, partofday = get_startdate_time_zone(
r, row, startdatetime=startdatetime)
r, row, startdatetime=startdatetime, timezone=timezone)
if title is None or title == '':
title = 'Workout'
@@ -1463,6 +1464,7 @@ def new_workout_from_file(r, f2,
rpe=-1,
makeprivate=False,
startdatetime='',
timezone='',
notes='',
workoutid='',
oarlockfirmware='',
@@ -1641,6 +1643,7 @@ def new_workout_from_file(r, f2,
workoutsource=workoutsource,
summary=summary,
startdatetime=startdatetime,
timezone=timezone,
rpe=rpe,
inboard=inboard, oarlength=oarlength,
seatnumber=seatnumber, boatname=boatname,

View File

@@ -905,7 +905,7 @@ def clean_df_stats_pl(datadf, workstrokesonly=True, ignorehr=True,
return datadf
def getpartofday(row, r):
def getpartofday(row, r, startdatetime=None, timezone=''):
workoutstartdatetime = row.rowdatetime
try: # pragma: no cover
latavg = row.df[' latitude'].mean()
@@ -932,6 +932,8 @@ def getpartofday(row, r):
workoutstartdatetime = row.rowdatetime
h = workoutstartdatetime.astimezone(pytz.timezone(timezone_str)).hour
if startdatetime is not None:
h = startdatetime.hour
if h < 12: # pragma: no cover
return "Morning"
@@ -1170,7 +1172,10 @@ parsers = {
}
def get_startdate_time_zone(r, row, startdatetime=None):
def get_startdate_time_zone(r, row, startdatetime=None, timezone=''):
preserve_timezone = False
if timezone != '':
preserve_timezone = True
if isinstance(startdatetime, str):
try:
startdatetime = pendulum.parse(startdatetime)
@@ -1184,15 +1189,15 @@ def get_startdate_time_zone(r, row, startdatetime=None):
timezone_str = 'Ect/GMT'
elif startdatetime == '':
startdatetime = row.rowdatetime
else:
startdatetime = row.rowdatetime
#else:
# startdatetime = row.rowdatetime
try:
_ = startdatetime.tzinfo
except AttributeError: # pragma: no cover
startdatetime = row.rowdatetime
partofday = getpartofday(row, r)
partofday = getpartofday(row, r, startdatetime=startdatetime, timezone=timezone)
if startdatetime.tzinfo is None or str(startdatetime.tzinfo) in ['tzutc()', 'Ect/GMT']:
timezone_str = 'UTC'
@@ -1200,6 +1205,8 @@ def get_startdate_time_zone(r, row, startdatetime=None):
startdatetime = timezone.make_aware(startdatetime)
except ValueError: # pragma: no cover
pass
except AttributeError:
pass
try:
latavg = row.df[' latitude'].mean()
@@ -1232,8 +1239,23 @@ def get_startdate_time_zone(r, row, startdatetime=None):
timezone_str = str(startdatetime.tzinfo)
try:
startdatetime = startdatetime.astimezone(pytz.timezone(timezone_str))
if not preserve_timezone:
startdatetime = startdatetime.astimezone(pytz.timezone(timezone_str))
except UnknownTimeZoneError:
try:
offset = timezone_str.strip("(TimeZone('')").split(":")
hours = int(offset[0])
minutes = int(offset[1])
tz_offset = datetime.timedelta(hours=hours, minutes=minutes)
tz = datetime.timezone(tz_offset)
utc_offset = tz.utcoffset(datetime.utcnow()).total_seconds()
for zone in pytz.all_timezones:
if pytz.timezone(zone).utcoffset(datetime.utcnow()).total_seconds() == utc_offset:
timezone_str = zone
break
except Exception as e:
pass
startdatetime = startdatetime.astimezone(pytz.utc)
startdate = startdatetime.strftime('%Y-%m-%d')

View File

@@ -543,7 +543,7 @@ class DataPrepTests(TestCase):
) = dataprep.get_startdate_time_zone(self.r,row,startdatetime=aware)
self.assertEqual(timezone_str,'America/Los_Angeles')
self.assertEqual(partofday,'Morning')
self.assertEqual(partofday,'Evening')
want = arrow.get('2021-06-15 19:55:13.400000-07:00').isoformat()
got = arrow.get(startdatetime).isoformat()
@@ -569,7 +569,7 @@ class DataPrepTests(TestCase):
) = dataprep.get_startdate_time_zone(self.r,row)
self.assertEqual(timezone_str,'America/Los_Angeles')
self.assertEqual(partofday,'Morning')
self.assertEqual(partofday,'Evening')
want = arrow.get('2021-06-15 19:55:13.400000-07:00').isoformat()
got = arrow.get(startdatetime).isoformat()

Binary file not shown.

View File

@@ -4981,6 +4981,7 @@ def workout_upload_api(request):
garminid = post_data.get('garminid','')
workoutid = post_data.get('id','')
startdatetime = post_data.get('startdatetime', '')
timezone = post_data.get('timezone','')
oarlockfirmware = post_data.get('oarlockfirmware', None)
inboard = post_data.get('inboard', None)
oarlength = post_data.get('oarlength', None)
@@ -5079,6 +5080,7 @@ def workout_upload_api(request):
notes=notes,
uploadoptions=post_data,
startdatetime=startdatetime,
timezone=timezone,
oarlockfirmware=oarlockfirmware,
inboard=inboard,
oarlength=oarlength,