diff --git a/rowers/dataprep.py b/rowers/dataprep.py index e738b735..1fc6236d 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -1605,8 +1605,9 @@ def getsmallrowdata_db(columns, ids=[], doclean=True, workstrokesonly=True): data[c] = cdata2 - except KeyError: + except (KeyError, AttributeError): data[c] = 0 + # convert newtons diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 7f1b9af3..cbe08d1e 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -2182,7 +2182,14 @@ def interactive_cum_flex_chart2(theworkouts,promember=0, try: datadf['x1'] = datadf.ix[:,xparam] except KeyError: - datadf['x1'] = datadf['distance'] + try: + datadf['x1'] = datadf['distance'] + except KeyError: + try: + datadf['x1'] = datadf['time'] + except KeyError: + return ['','
No non-zero data in selection
','',''] + try: datadf['y1'] = datadf.ix[:,yparam1] except KeyError: @@ -2198,7 +2205,7 @@ def interactive_cum_flex_chart2(theworkouts,promember=0, else: datadf['y2'] = datadf['y1'] - + if xparam=='distance': xaxmax = datadf['x1'].max() xaxmin = datadf['x1'].min() diff --git a/rowers/models.py b/rowers/models.py index 60dbce2e..91aec132 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -825,7 +825,8 @@ class PlannedSession(models.Model): manager = models.ForeignKey(User) - name = models.CharField(max_length=150,blank=True) + name = models.CharField(max_length=150,blank=True, + verbose_name='Name') comment = models.TextField(max_length=500,blank=True, ) diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index 6168cb56..5b840167 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -79,13 +79,16 @@ def get_session_metrics(ps): distance = [] firstname = [] lastname = [] + completedate = [] + status = [] for r in rowers: rscorev = 0 trimpv = 0 durationv = 0 distancev = 0 - + completedatev = '' + statusv = 0 ws = Workout.objects.filter(user=r,plannedsession=ps) if len(ws) != 0: @@ -94,8 +97,9 @@ def get_session_metrics(ps): durationv += timefield_to_seconds_duration(w.duration) trimpv += dataprep.workout_trimp(w) rscorev += dataprep.workout_rscore(w) - - + + ratio,statusv = is_session_complete_ws(ws,ps) + completedatev = ws[0].date.strftime('%Y-%b-%d') durationv /= 60. trimp.append(int(trimpv)) @@ -104,6 +108,8 @@ def get_session_metrics(ps): rscore.append(int(rscorev)) firstname.append(r.user.first_name) lastname.append(r.user.last_name) + status.append(statusv) + completedate.append(completedatev) thedict = { 'first_name':firstname, @@ -111,19 +117,14 @@ def get_session_metrics(ps): 'duration':duration, 'distance':distance, 'rscore':rscore, - 'trimp':trimp + 'trimp':trimp, + 'completedate':completedate, + 'status':status, } return thedict -def is_session_complete(r,ps): - status = 'not done' - - if r not in ps.rower.all(): - return 0,'not assigned' - - ws = Workout.objects.filter(user=r,plannedsession=ps) - +def is_session_complete_ws(ws,ps): if len(ws)==0: today = date.today() if today > ps.enddate: @@ -195,6 +196,18 @@ def is_session_complete(r,ps): else: return ratio,status + +def is_session_complete(r,ps): + status = 'not done' + + if r not in ps.rower.all(): + return 0,'not assigned' + + ws = Workout.objects.filter(user=r,plannedsession=ps) + + return is_session_complete_ws(ws,ps) + + def rank_results(ps): return 1 diff --git a/rowers/templates/plannedsessions.html b/rowers/templates/plannedsessions.html index ed5fda38..f1252d32 100644 --- a/rowers/templates/plannedsessions.html +++ b/rowers/templates/plannedsessions.html @@ -63,6 +63,7 @@Status: {{ status }}
Percentage complete: {{ ratio }}
| Name | @@ -78,6 +78,8 @@Meters | rScore | TRIMP | +Complete Date | +Status | {{ value|lookup:'distance' }} | {{ value|lookup:'rscore' }} | {{ value|lookup:'trimp' }} | +{{ value|lookup:'completedate' }} | +{{ value|lookup:'status' }} | {% endfor %} diff --git a/rowers/urls.py b/rowers/urls.py index b630c026..85d4a845 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -427,7 +427,10 @@ urlpatterns = [ url(r'^sessions/(?P
|---|