diff --git a/rowers/alerts.py b/rowers/alerts.py index 86a1716f..ef74ddf0 100644 --- a/rowers/alerts.py +++ b/rowers/alerts.py @@ -3,7 +3,7 @@ from rowers.teams import coach_getcoachees from rowers.dataprep import getsmallrowdata_db, getrowdata_db import datetime import numpy as np - +import math def create_alert(manager, rower, measured, period=7, emailalert=True, reststrokes=False, workouttype='water', boattype='1x', @@ -195,7 +195,7 @@ def alert_get_stats(alert, nperiod=0): # pragma: no cover median = df[alert.measured.metric].median() std = df[alert.measured.metric].std() - return { + data = { 'workouts': workouts.count(), 'startdate': startdate, 'enddate': enddate, @@ -208,6 +208,18 @@ def alert_get_stats(alert, nperiod=0): # pragma: no cover 'standard_dev': std, } + data_clean = {} + + for k in data: + data_clean[k] = data[k] + try: + if math.isnan(data[k]): + data_clean[k] = 0 + except TypeError: + pass + + return data_clean + # run alert report # check alert permission diff --git a/rowers/tasks.py b/rowers/tasks.py index b6236ac4..521e0467 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -408,7 +408,11 @@ def handle_c2_sync(workoutid, url, headers, data, debug=False, **kwargs): s = response.json() c2id = s['data']['id'] - workout = Workout.objects.get(id=workoutid) + try: + workout = Workout.objects.get(id=workoutid) + except Workout.DoesNotExist: + return 0 + workout.uploadedtoc2 = c2id workout.save() @@ -492,7 +496,11 @@ def handle_strava_sync(stravatoken, workoutid, filename, name, activity_type, de failed = True if not failed: - workout = Workout.objects.get(id=workoutid) + try: + workout = Workout.objects.get(id=workoutid) + except Workout.DoesNotExist: + return 0 + workout.uploadedtostrava = res.id workout.save() try: diff --git a/rowers/views/statements.py b/rowers/views/statements.py index 4a1e3f01..f52cfac7 100644 --- a/rowers/views/statements.py +++ b/rowers/views/statements.py @@ -380,7 +380,11 @@ def createShareModel(request, model_id): # pragma: no cover class JSONResponse(HttpResponse): def __init__(self, data, **kwargs): - content = JSONRenderer().render(data) + try: + content = JSONRenderer().render(data) + except ValueError: + content = '' + kwargs['content_type'] = 'application/json' super(JSONResponse, self).__init__(content, **kwargs)