improved session completion date
This commit is contained in:
@@ -104,7 +104,8 @@ def get_session_metrics(ps):
|
||||
completedatev = ''
|
||||
statusv = 0
|
||||
|
||||
ws = Workout.objects.filter(user=r,plannedsession=ps)
|
||||
ws = Workout.objects.filter(user=r,plannedsession=ps).order_by("date")
|
||||
|
||||
if len(ws) != 0:
|
||||
for w in ws:
|
||||
distancev += w.distance
|
||||
@@ -112,8 +113,11 @@ def get_session_metrics(ps):
|
||||
trimpv += dataprep.workout_trimp(w)
|
||||
rscorev += dataprep.workout_rscore(w)[0]
|
||||
|
||||
ratio,statusv = is_session_complete_ws(ws,ps)
|
||||
completedatev = ws[0].date.strftime('%Y-%m-%d')
|
||||
ratio,statusv,completiondate = is_session_complete_ws(ws,ps)
|
||||
try:
|
||||
completedatev = completiondate.strftime('%Y-%m-%d')
|
||||
except AttributeError:
|
||||
completedatev = ''
|
||||
durationv /= 60.
|
||||
|
||||
trimp.append(int(trimpv))
|
||||
@@ -139,16 +143,35 @@ def get_session_metrics(ps):
|
||||
return thedict
|
||||
|
||||
def is_session_complete_ws(ws,ps):
|
||||
ws = ws.order_by("date")
|
||||
if len(ws)==0:
|
||||
today = date.today()
|
||||
if today > ps.enddate:
|
||||
status = 'missed'
|
||||
ratio = 0
|
||||
return ratio,status
|
||||
return ratio,status,None
|
||||
else:
|
||||
return 0,'not done'
|
||||
return 0,'not done',None
|
||||
|
||||
value = ps.sessionvalue
|
||||
if ps.sessionunit == 'min':
|
||||
value *= 60.
|
||||
elif ps.sessionunit == 'km':
|
||||
value *= 1000.
|
||||
|
||||
cratiomin = 1
|
||||
cratiomax = 1
|
||||
if ps.criterium == 'none':
|
||||
if ps.sessiontype == 'session':
|
||||
cratiomin = 0.8
|
||||
cratiomax = 1.2
|
||||
else:
|
||||
cratiomin = 0.9167
|
||||
cratiomax = 1.0833
|
||||
|
||||
|
||||
score = 0
|
||||
completiondate = None
|
||||
for w in ws:
|
||||
if ps.sessionmode == 'distance':
|
||||
score += w.distance
|
||||
@@ -161,12 +184,8 @@ def is_session_complete_ws(ws,ps):
|
||||
elif ps.sessionmode == 'rScore':
|
||||
rscore = dataprep.workout_rscore(w)[0]
|
||||
score += rscore
|
||||
|
||||
value = ps.sessionvalue
|
||||
if ps.sessionunit == 'min':
|
||||
value *= 60.
|
||||
elif ps.sessionunit == 'km':
|
||||
value *= 1000.
|
||||
if not completiondate and score>=cratiomin*value:
|
||||
completiondate = w.date
|
||||
|
||||
ratio = score/float(value)
|
||||
|
||||
@@ -175,49 +194,47 @@ def is_session_complete_ws(ws,ps):
|
||||
if ps.sessiontype in ['session','cycletarget']:
|
||||
if ps.criterium == 'exact':
|
||||
if ratio == 1.0:
|
||||
return ratio,'completed'
|
||||
return ratio,'completed',completiondate
|
||||
else:
|
||||
return ratio,'partial'
|
||||
return ratio,'partial',completiondate
|
||||
elif ps.criterium == 'minimum':
|
||||
if ratio >= 1.0:
|
||||
return ratio,'completed'
|
||||
return ratio,'completed',completiondate
|
||||
else:
|
||||
return ratio,'partial'
|
||||
return ratio,'partial',completiondate
|
||||
else:
|
||||
if ratio>0.8 and ratio<1.2 and ps.sessiontype=='session':
|
||||
return ratio,'completed'
|
||||
elif ratio>0.9167 and ratio<1.0833 and ps.sessiontype=='cycletarget':
|
||||
return ratio,'completed'
|
||||
if ratio>cratiomin and ratio<cratiomax:
|
||||
return ratio,'completed',completiondate
|
||||
else:
|
||||
return ratio,'partial'
|
||||
return ratio,'partial',completiondate
|
||||
elif ps.sessiontype == 'test':
|
||||
if ratio==1.0:
|
||||
return ratio,'completed'
|
||||
return ratio,'completed',completiondate
|
||||
else:
|
||||
return ratio,'partial'
|
||||
return ratio,'partial',completiondate
|
||||
elif ps.sessiontype == 'challenge':
|
||||
if ps.criterium == 'exact':
|
||||
if ratio == 1.0:
|
||||
return ratio,'completed'
|
||||
return ratio,'completed',completiondate
|
||||
else:
|
||||
return ratio,'partial'
|
||||
return ratio,'partial',completiondate
|
||||
elif ps.criterium == 'minimum':
|
||||
if ratio > 1.0:
|
||||
return ratio,'completed'
|
||||
return ratio,'completed',completiondate
|
||||
else:
|
||||
return ratio,'partial'
|
||||
return ratio,'partial',completiondate
|
||||
else:
|
||||
return ratio,'partial'
|
||||
return ratio,'partial',completiondate
|
||||
|
||||
else:
|
||||
return ratio,status
|
||||
return ratio,status,completiondate
|
||||
|
||||
|
||||
def is_session_complete(r,ps):
|
||||
status = 'not done'
|
||||
|
||||
if r not in ps.rower.all():
|
||||
return 0,'not assigned'
|
||||
return 0,'not assigned',None
|
||||
|
||||
ws = Workout.objects.filter(user=r,plannedsession=ps)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user