Private
Public Access
1
0

made everything work with async

This commit is contained in:
Sander Roosendaal
2018-05-17 18:19:42 +02:00
parent b6c67f7e2b
commit 4f8bdf1543
5 changed files with 137 additions and 15 deletions

View File

@@ -1,6 +1,7 @@
# Python
from django.utils import timezone
from datetime import datetime
import datetime as dt
from datetime import timedelta
from datetime import date
import time
@@ -18,7 +19,7 @@ queuehigh = django_rq.get_queue('low')
from rowers.models import (
Rower, Workout,Team,
GeoCourse, TrainingMicroCycle,TrainingMesoCycle,TrainingMacroCycle,
TrainingPlan,PlannedSession,VirtualRaceResult
TrainingPlan,PlannedSession,VirtualRaceResult,CourseTestResult
)
import metrics
@@ -61,6 +62,17 @@ def add_workouts_plannedsession(ws,ps,r):
w.save()
result += 1
comments.append('Attached workout %i to session' % w.id)
if ps.sessiontype == 'coursetest':
record = CourseTestResult(
userid=w.user.id,
plannedsession=ps,
duration=dt.time(0,0),
coursecompleted=False,
)
record.save()
job = myqueue(queue,handle_check_race_course,w.csvfilename,
w.id,ps.course.id,record.id,
mode='coursetest')
else:
errors.append('Workout %i did not match session dates' % w.id)
@@ -273,7 +285,68 @@ def is_session_complete_ws(ws,ps):
if not completiondate:
completiondate = ws.reverse()[0].date
return ratio,'partial',completiondate
elif ps.sessiontype in ['coursetest','race']:
elif ps.sessiontype == 'race':
vs = VirtualRaceResult.objects.filter(race=ps)
wids = [w.id for w in ws]
for record in vs:
if record.workoutid in wids:
if record.coursecompleted:
ratio = record.distance/ps.sessionvalue
return ratio,'completed',completiondate
if ps.course:
(
coursetime,
coursemeters,
coursecompleted
) = courses.get_time_course(ws,ps.course)
if coursecompleted:
return 1.0,'completed',completiondate
else:
return ratio,'partial',completiondate
else:
if ps.criterium == 'exact':
if ratio == 1.0:
return ratio,'completed',completiondate
else:
if not completiondate:
completiondate = ws.reverse()[0].date
return ratio,'partial',completiondate
elif ps.criterium == 'minimum':
if ratio >= 1.0:
return ratio,'completed',completiondate
else:
if not completiondate:
completiondate = ws.reverse()[0].date
return ratio,'partial',completiondate
else:
if ratio>cratiomin and ratio<cratiomax:
return ratio,'completed',completiondate
else:
return ratio,'partial',completiondate
elif ps.sessiontype == 'coursetest':
vs = CourseTestResult.objects.filter(plannedsession=ps)
wids = [w.id for w in ws]
for record in vs:
if record.workoutid in wids:
if record.coursecompleted:
ratio = record.distance/ps.sessionvalue
return ratio,'completed',completiondate
# we're still here - no record, need to create one
if ws:
record = CourseTestResult(
userid=ws[0].user.id,
plannedsession=ps,
duration=dt.time(0,0),
coursecompleted=False,
)
record.save()
job = myqueue(queue,handle_check_race_course,ws[0].csvfilename,
ws[0].id,ps.course.id,record.id,
mode='coursetest')
if ps.course:
(
coursetime,