Private
Public Access
1
0

adding testing for timezone stuff

This commit is contained in:
Sander Roosendaal
2021-06-16 18:49:13 +02:00
parent b04a25f7f7
commit 32df0fa9b3
4 changed files with 1892 additions and 50 deletions

View File

@@ -13,7 +13,7 @@ from rowers.models import (
import pytz
import collections
import pendulum
from rowingdata import rowingdata as rrdata
from rowingdata import rower as rrower
@@ -1600,18 +1600,12 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
hrtr=r.tr, hran=r.an, ftp=r.ftp,
powerperc=powerperc, powerzones=r.powerzones)
row = rdata(f2, rower=rr)
if startdatetime != '': # pragma: no cover
row.rowdatetime = arrow.get(startdatetime).datetime
dologging('debuglog.log','Row Date Time (line 1606) = {rowdatetime}'.format(
rowdatetime=row.rowdatetime,
))
startdatetime,startdate,starttime,timezone_str,partofday = get_startdate_time_zone(r,row,startdatetime=startdatetime)
if title is None or title == '':
title = 'Workout'
partofday = getpartofday(row,r)
if partofday is not None:
title = '{partofday} {workouttype}'.format(
@@ -1721,55 +1715,19 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
summary = row.allstats()
if startdatetime != '': # pragma: no cover
workoutstartdatetime = arrow.get(startdatetime).datetime
else:
workoutstartdatetime = row.rowdatetime
workoutstartdatetime = startdatetime
if workoutstartdatetime.tzinfo is None:
timezone_str = 'UTC'
try:
workoutstartdatetime = timezone.make_aware(workoutstartdatetime)
except ValueError:
pass
try:
latavg = row.df[' latitude'].mean()
lonavg = row.df[' longitude'].mean()
tf = TimezoneFinder()
try:
timezone_str = tf.timezone_at(lng=lonavg, lat=latavg)
except (ValueError,OverflowError): # pragma: no cover
timezone_str = 'UTC'
if timezone_str is None: # pragma: no cover
timezone_str = tf.closest_timezone_at(lng=lonavg,
lat=latavg)
if timezone_str is None: # pragma: no cover
timezone_str = r.defaulttimezone
try:
workoutstartdatetime = pytz.timezone(timezone_str).localize(
row.rowdatetime
)
except ValueError:
workoutstartdatetime = workoutstartdatetime.astimezone(
pytz.timezone(timezone_str)
)
except KeyError:
timezone_str = r.defaulttimezone
dologging('debuglog.log','Dataprep line 1763, Workout Startdatetime {workoutstartdatetime}'.format(
dologging('debuglog.log','Dataprep line 1721, Workout Startdatetime {workoutstartdatetime}'.format(
workoutstartdatetime=workoutstartdatetime,
))
duration = totaltime_sec_to_string(totaltime)
workoutdate = workoutstartdatetime.strftime('%Y-%m-%d')
workoutstarttime = workoutstartdatetime.strftime('%H:%M:%S')
workoutdate = startdate
workoutstarttime = starttime
s = 'Dataprep line 1772 workoutdate and time set to {workoutdate} and {workoutstarttime}'.format(
s = 'Dataprep line 1730 workoutdate and time set to {workoutdate} and {workoutstarttime}'.format(
workoutdate=workoutdate,
workoutstarttime=workoutstarttime,
)
@@ -1882,6 +1840,57 @@ parsers = {
'hero': HeroParser,
}
def get_startdate_time_zone(r,row,startdatetime=None):
if startdatetime is not None and startdatetime != '':
timezone_str = pendulum.instance(startdatetime).timezone.name
else:
startdatetime = row.rowdatetime
partofday = getpartofday(row,r)
if startdatetime.tzinfo is None:
timezone_str = 'UTC'
try:
startdatetime = timezone.make_aware(startdatetime)
except ValueError:
pass
try:
latavg = row.df[' latitude'].mean()
lonavg = row.df[' longitude'].mean()
tf = TimezoneFinder()
try:
timezone_str = tf.timezone_at(lng=lonavg, lat=latavg)
except (ValueError,OverflowError): # pragma: no cover
timezone_str = 'UTC'
if timezone_str is None: # pragma: no cover
timezone_str = tf.closest_timezone_at(lng=lonavg,
lat=latavg)
if timezone_str is None: # pragma: no cover
timezone_str = r.defaulttimezone
try:
startdatetime = pytz.timezone(timezone_str).localize(
row.rowdatetime
)
except ValueError:
startdatetime = startdatetime.astimezone(
pytz.timezone(timezone_str)
)
except KeyError:
timezone_str = r.defaulttimezone
else:
timezone_str = str(startdatetime.tzinfo)
startdate = startdatetime.strftime('%Y-%m-%d')
starttime = startdatetime.strftime('%H:%M:%S')
return startdatetime,startdate,starttime,timezone_str,partofday
def parsenonpainsled(fileformat,f2,summary,startdatetime='',empowerfirmware=None,inboard=None,oarlength=None):
try:
if fileformat == 'nklinklogbook' and empowerfirmware is not None: # pragma: no cover