adding testing for timezone stuff
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user