Private
Public Access
1
0

work in progress - need to convert course time to datetime

This commit is contained in:
Sander Roosendaal
2018-02-22 17:46:17 +01:00
parent d09f35f785
commit 083f91914c
3 changed files with 44 additions and 18 deletions

View File

@@ -9,6 +9,7 @@ from django.db import IntegrityError
import uuid import uuid
from django.conf import settings from django.conf import settings
import geocoder
from matplotlib import path from matplotlib import path
import xml.etree.ElementTree as et import xml.etree.ElementTree as et
@@ -186,8 +187,6 @@ def kmltocourse(f):
return get_polygons(polygonpms) return get_polygons(polygonpms)
from geopy.geocoders import Nominatim
geolocator = Nominatim()
def createcourse( def createcourse(
@@ -203,16 +202,17 @@ def createcourse(
j = 0 j = 0
for point in p['points']: for point in p['points']:
if i==0 and j==0: if i==0 and j==0:
try: latitude = point['latitude']
loc = geolocator.reverse((point['latitude'],point['longitude'])) longitude = point['longitude']
country = loc.raw['address']['country'] g = geocoder.google([latitude,longitude],method='reverse')
if isinstance(country,unicode): if g.ok:
country = country.encode('utf8') address = g.raw['address_components']
elif isinstance(country, str): country = 'unknown'
country = country.decode('utf8') for a in address:
except GeocoderInsufficientPrivileges: if 'country' in a['types']:
country = "Unknown Country" country = a['long_name']
else:
country = 'unknown'
c.country = country c.country = country
c.save() c.save()
obj = GeoPoint( obj = GeoPoint(
@@ -227,7 +227,20 @@ def createcourse(
return c return c
def coursetime_paths(data,paths): def coursetime_first(data,paths):
entrytime = data['time'].max()
coursecompleted = False
try:
entrytime = time_in_path(data,paths[0],maxmin='max')
coursecompleted = True
except InvalidTrajectoryError:
entrytime = data['time'].max()
coursecompleted = False
return entrytime, coursecompleted
def coursetime_paths(data,paths,finalmaxmin='min'):
entrytime = data['time'].max() entrytime = data['time'].max()
coursecompleted = False coursecompleted = False
@@ -239,9 +252,8 @@ def coursetime_paths(data,paths):
# end - just the Finish polygon # end - just the Finish polygon
if len(paths) == 1: if len(paths) == 1:
try: try:
entrytime = time_in_path(data,paths[0],maxmin='min') entrytime = time_in_path(data,paths[0],maxmin=finalmaxmin)
coursecompleted = True coursecompleted = True
print entrytime
except InvalidTrajectoryError: except InvalidTrajectoryError:
entrytime = data['time'].max() entrytime = data['time'].max()
coursecompleted = False coursecompleted = False
@@ -252,7 +264,6 @@ def coursetime_paths(data,paths):
time = time_in_path(data, paths[0]) time = time_in_path(data, paths[0])
data = data[data['time']>time] data = data[data['time']>time]
data['time'] = data['time']-time data['time'] = data['time']-time
print time
timenext, coursecompleted = coursetime_paths(data,paths[1:]) timenext, coursecompleted = coursetime_paths(data,paths[1:])
return time+timenext, coursecompleted return time+timenext, coursecompleted
except InvalidTrajectoryError: except InvalidTrajectoryError:
@@ -293,7 +304,9 @@ def get_time_course(ws,course):
paths.append(path) paths.append(path)
coursetimeseconds,coursecompleted = coursetime_paths(rowdata,paths) coursetimeseconds,coursecompleted = coursetime_paths(rowdata,paths)
coursetimefirst,firstcompleted = coursetime_first(
rowdata,paths)
print 'course time?',coursetimeseconds coursetimeseconds = coursetimeseconds-coursetimefirst
return coursetimeseconds,coursecompleted return coursetimeseconds,coursecompleted

View File

@@ -121,6 +121,7 @@ def get_session_metrics(ps):
completedatev = '' completedatev = ''
durationv /= 60. durationv /= 60.
trimp.append(int(trimpv)) trimp.append(int(trimpv))
duration.append(int(durationv)) duration.append(int(durationv))
distance.append(int(distancev)) distance.append(int(distancev))

View File

@@ -12664,8 +12664,20 @@ def plannedsession_view(request,id=0,rowerid=0,
'time': w.duration, 'time': w.duration,
'type': w.workouttype, 'type': w.workouttype,
} }
if ps.sessiontype == 'coursetest':
coursetimeseconds,coursecompleted = courses.get_time_course(ws,ps.course)
intsecs = int(coursetimeseconds)
microsecs = int(1.e6*(coursetimeseconds-intsecs))
wdict['time'] = datetime.timedelta(
seconds=intsecs,
microseconds=microsecs
)
ranking.append(wdict) ranking.append(wdict)
# if coursetest, need to reorder the ranking
return render(request,'plannedsessionview.html', return render(request,'plannedsessionview.html',
{ {