made everything work with async
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user