Private
Public Access
1
0

Merge branch 'release/v18.6.4'

This commit is contained in:
Sander Roosendaal
2022-08-19 09:09:32 +02:00
4 changed files with 48 additions and 87 deletions

View File

@@ -82,16 +82,26 @@ import rowers.rowing_workout_metrics_pb2 as metrics_pb2
import rowers.rowing_workout_metrics_pb2_grpc as metrics_pb2_grpc import rowers.rowing_workout_metrics_pb2_grpc as metrics_pb2_grpc
from django.conf import settings from django.conf import settings
SITE_URL = settings.SITE_URL
SITE_URL_DEV = settings.SITE_URL
PROGRESS_CACHE_SECRET = settings.PROGRESS_CACHE_SECRET
SETTINGS_NAME = settings.SETTINGS_NAME
UPLOAD_SERVICE_URL = settings.UPLOAD_SERVICE_URL # extra read of config
UPLOAD_SERVICE_SECRET = settings.UPLOAD_SERVICE_SECRET
NK_API_LOCATION = settings.NK_API_LOCATION SITE_URL = CFG['site_url']
TP_CLIENT_ID = settings.TP_CLIENT_ID SITE_URL_DEV = CFG['site_url']
TP_CLIENT_SECRET = settings.TP_CLIENT_SECRET PROGRESS_CACHE_SECRET = CFG['progress_cache_secret']
SETTINGS_NAME = CFG['settings_name']
try:
UPLOAD_SERVICE_URL = CFG['upload_service_url']
except KeyError: # pragma: no cover
UPLOAD_SERVICE_URL = "http://localhost:8000/rowers/workout/api/upload/"
try:
UPLOAD_SERVICE_SECRET = CFG['upload_service_secret']
except KeyError: # pragma: no cover
UPLOAD_SERVICE_SECRET = "FoYezZWLSyfAVimumpHEeYsJjsNCerxV"
NK_API_LOCATION = CFG["nk_api_location"]
TP_CLIENT_ID = CFG["tp_client_id"]
TP_CLIENT_SECRET = CFG["tp_client_secret"]
from requests_oauthlib import OAuth1, OAuth1Session from requests_oauthlib import OAuth1, OAuth1Session
@@ -1204,7 +1214,10 @@ def handle_calctrimp(id,
if hrtss > 1000: # pragma: no cover if hrtss > 1000: # pragma: no cover
hrtss = 0 hrtss = 0
workout = Workout.objects.get(id=id) try:
workout = Workout.objects.get(id=id)
except Workout.DoesNotExist:
return 0
workout.rscore = int(tss) workout.rscore = int(tss)
workout.normp = int(normp) workout.normp = int(normp)
workout.trimp = int(trimp) workout.trimp = int(trimp)

View File

@@ -125,9 +125,7 @@ def strokedatajson_v2(request, id):
if request.method == 'GET': if request.method == 'GET':
columns = ['spm', 'time', 'hr', 'pace', 'power', 'distance'] columns = ['spm', 'time', 'hr', 'pace', 'power', 'distance']
datadf = dataprep.getsmallrowdata_db(columns, ids=[id]) datadf = dataprep.getsmallrowdata_db(columns, ids=[id])
with open('apilog.log', 'a') as logfile: dologging('apilog.log',request.user.username+"(strokedatajson_v2 GET)")
logfile.write(str(timezone.now())+": ")
logfile.write(request.user.username+"(strokedatajson_v2 GET) \n")
data = datadf.to_json(orient='records') data = datadf.to_json(orient='records')
data2 = json.loads(data) data2 = json.loads(data)
@@ -136,22 +134,16 @@ def strokedatajson_v2(request, id):
return JSONResponse(data2) return JSONResponse(data2)
if request.method == 'POST': if request.method == 'POST':
with open('apilog.log', 'a') as logfile: dologging('apilog.log',request.user.username+" (strokedatajson_v2 POST)")
logfile.write(str(timezone.now())+": ") try:
logfile.write(request.user.username+" (strokedatajson_v2 POST) \n") for d in request.data['data']:
dologging('apilog.log',json.dumps(d))
except KeyError:
try: try:
for d in request.data['data']: for d in request.data['strokedata']:
logfile.write(json.dumps(d)) dologging('apilog.log',json.dumps(d))
logfile.write("\n") except KeyError:
except KeyError: # pragma: no cover dologging('apilog.log','No data in request.data')
try:
for d in request.data['strokedata']:
logfile.write(json.dumps(d))
logfile.write("\n")
except KeyError:
logfile.write("No data in request.data\n")
except (AttributeError, TypeError): # pragma: no cover
logfile.write("No data in request\n")
checkdata, r = dataprep.getrowdata_db(id=row.id) checkdata, r = dataprep.getrowdata_db(id=row.id)
if not checkdata.empty: # pragma: no cover if not checkdata.empty: # pragma: no cover
return HttpResponse("Duplicate Error", status=409) return HttpResponse("Duplicate Error", status=409)
@@ -272,10 +264,7 @@ def strokedatajson_v2(request, id):
starttime = totimestamp(row.startdatetime)+time[0] starttime = totimestamp(row.startdatetime)+time[0]
unixtime = starttime+time unixtime = starttime+time
with open('apilog.log', 'a') as logfile: dologging('apilog.log',"(strokedatajson_v2 POST - data parsed)")
logfile.write(str(arrow.get(starttime).datetime)+": ")
logfile.write(request.user.username +
"(strokedatajson_v2 POST - data parsed) \r\n")
data = pd.DataFrame({'TimeStamp (sec)': unixtime, data = pd.DataFrame({'TimeStamp (sec)': unixtime,
' Horizontal (meters)': distance, ' Horizontal (meters)': distance,
@@ -355,10 +344,7 @@ def strokedatajson_v2(request, id):
_ = uploads.do_sync(row, {}, quick=True) _ = uploads.do_sync(row, {}, quick=True)
with open('apilog.log', 'a') as logfile: dologging('apilog.log'," (strokedatajson_v2 POST completed successfully)")
logfile.write(str(timezone.now())+": ")
logfile.write(request.user.username +
" (strokedatajson_v2 POST completed successfully) \n")
return(JsonResponse( return(JsonResponse(
{"workout public id": encoder.encode_hex(row.id), {"workout public id": encoder.encode_hex(row.id),
@@ -393,15 +379,11 @@ def strokedatajson(request, id=0):
# currently only returns a subset. # currently only returns a subset.
columns = ['spm', 'time', 'hr', 'pace', 'power', 'distance'] columns = ['spm', 'time', 'hr', 'pace', 'power', 'distance']
datadf = dataprep.getsmallrowdata_db(columns, ids=[id]) datadf = dataprep.getsmallrowdata_db(columns, ids=[id])
with open('apilog.log', 'a') as logfile: dologging("apilog.log",request.user.username+"(strokedatajson GET) ")
logfile.write(str(timezone.now())+": ")
logfile.write(request.user.username+"(strokedatajson GET) \n")
return JSONResponse(datadf) return JSONResponse(datadf)
if request.method == 'POST': if request.method == 'POST':
with open('apilog.log', 'a') as logfile: dologging("apilog.log",request.user.username+"(strokedatajson POST)")
logfile.write(str(timezone.now())+": ")
logfile.write(request.user.username+"(strokedatajson POST) \n")
checkdata, r = dataprep.getrowdata_db(id=row.id) checkdata, r = dataprep.getrowdata_db(id=row.id)
if not checkdata.empty: # pragma: no cover if not checkdata.empty: # pragma: no cover
return HttpResponse("Duplicate Error", status=409) return HttpResponse("Duplicate Error", status=409)
@@ -461,9 +443,7 @@ def strokedatajson(request, id=0):
starttime = totimestamp(row.startdatetime)+time[0] starttime = totimestamp(row.startdatetime)+time[0]
unixtime = starttime+time unixtime = starttime+time
with open('apilog.log', 'a') as logfile: dologging("apilog.log",request.user.username+"(POST)")
logfile.write(str(starttime)+": ")
logfile.write(request.user.username+"(POST) \r\n")
data = pd.DataFrame({'TimeStamp (sec)': unixtime, data = pd.DataFrame({'TimeStamp (sec)': unixtime,
' Horizontal (meters)': distance, ' Horizontal (meters)': distance,

View File

@@ -56,7 +56,7 @@ def workout_tp_upload_view(request, id=0):
check_tp_workout_id, check_tp_workout_id,
w, w,
headers['Location']) headers['Location'])
messages.info(request, 'Uploaded to TrainingPeaks') messages.info(request, 'Uploaded to TrainingPeaks')
else: # pragma: no cover # no tcxfile else: # pragma: no cover # no tcxfile
@@ -1316,11 +1316,7 @@ def strava_webhook_view(request):
# logging # logging
t = time.localtime() t = time.localtime()
timestamp = time.strftime('%b-%d-%Y_%H%M', t) timestamp = time.strftime('%b-%d-%Y_%H%M', t)
with open('strava_webhooks.log', 'a') as f: dologging("strava_webhooks.log",request.body)
f.write('\n')
f.write(timestamp)
f.write(' ')
f.write(str(request.body))
# POST - does nothing so far # POST - does nothing so far
data = json.loads(request.body) data = json.loads(request.body)
@@ -1331,11 +1327,7 @@ def strava_webhook_view(request):
_ = data['event_time'] _ = data['event_time']
except KeyError: # pragma: no cover except KeyError: # pragma: no cover
timestamp = time.strftime('%b-%d-%Y_%H%M', t) timestamp = time.strftime('%b-%d-%Y_%H%M', t)
with open('strava_webhooks.log', 'a') as f: dologging("strava_webhooks.log","KeyError line 1330")
f.write('\n')
f.write(timestamp)
f.write(' ')
f.write('KeyError line 1038')
return HttpResponse(status=200) return HttpResponse(status=200)
if object_type == 'activity': if object_type == 'activity':
@@ -1396,11 +1388,7 @@ def strava_webhook_view(request):
updates = data['updates'] updates = data['updates']
stravaid = data['object_id'] stravaid = data['object_id']
except KeyError: # pragma: no cover except KeyError: # pragma: no cover
with open('strava_webhooks.log', 'a') as f: dologging("strava_webhooks.log","KeyError line 1391")
f.write('\n')
f.write(timestamp)
f.write(' ')
f.write('KeyError line 10576')
return HttpResponse(status=200) return HttpResponse(status=200)
try: try:
ws = Workout.objects.filter(uploadedtostrava=stravaid) ws = Workout.objects.filter(uploadedtostrava=stravaid)
@@ -1408,21 +1396,14 @@ def strava_webhook_view(request):
return HttpResponse(status=200) return HttpResponse(status=200)
except Workout.DoesNotExist: # pragma: no cover except Workout.DoesNotExist: # pragma: no cover
timestamp = time.strftime('%b-%d-%Y_%H%M', t) timestamp = time.strftime('%b-%d-%Y_%H%M', t)
with open('strava_webhooks.log', 'a') as f: dologging("strava_webhooks.log","workout not found")
f.write('\n')
f.write(timestamp)
f.write(' ')
f.write('Workout not found')
return HttpResponse(status=200) return HttpResponse(status=200)
try: try:
r = Rower.objects.get(strava_owner_id=strava_owner) r = Rower.objects.get(strava_owner_id=strava_owner)
except Rower.DoesNotExist: # pragma: no cover except Rower.DoesNotExist: # pragma: no cover
timestamp = time.strftime('%b-%d-%Y_%H%M', t) timestamp = time.strftime('%b-%d-%Y_%H%M', t)
with open('strava_webhooks.log', 'a') as f: dologging("strava_webhooks.log","Rower not found")
f.write('\n')
f.write(timestamp)
f.write(' ')
f.write('Rower not found')
return HttpResponse(status=200) return HttpResponse(status=200)
except MultipleObjectsReturned: # pragma: no cover except MultipleObjectsReturned: # pragma: no cover
rs = Rower.objects.filter(strava_owner_id=strava_owner) rs = Rower.objects.filter(strava_owner_id=strava_owner)
@@ -1438,11 +1419,7 @@ def strava_webhook_view(request):
w.workouttype = mytypes.stravamappinginv[value] w.workouttype = mytypes.stravamappinginv[value]
w.save() w.save()
except KeyError: # pragma: no cover except KeyError: # pragma: no cover
with open('strava_webhooks.log', 'a') as f: dologging("strava_webhooks.log","Workout type not found")
f.write('\n')
f.write(timestamp)
f.write(' ')
f.write('Workout type not found: '+str(value))
return HttpResponse(status=200) return HttpResponse(status=200)
return HttpResponse(status=200) return HttpResponse(status=200)
@@ -1457,12 +1434,7 @@ def garmin_summaries_view(request): # pragma: no cover
t = time.localtime() t = time.localtime()
timestamp = time.strftime('%b-%d-%Y_%H%M', t) timestamp = time.strftime('%b-%d-%Y_%H%M', t)
with open('garminlog.log', 'a') as f: dologging("garminlog.log",request.body)
f.write('\n')
f.write(timestamp)
f.write(' ')
f.write(str(request.body))
f.write('\n')
# POST request # POST request
data = json.loads(request.body) data = json.loads(request.body)
activities = data['activities'] activities = data['activities']

View File

@@ -11,11 +11,7 @@ from rowers import credits
@csrf_exempt @csrf_exempt
def braintree_webhook_view(request): def braintree_webhook_view(request):
with open('braintreewebhooks.log', 'a') as f: dologging('braintreewebhooks.log',' /rowers/braintree/')
t = time.localtime()
timestamp = time.strftime('%b-%d-%Y_%H%M', t)
f.write('\n')
f.write(timestamp+' /rowers/braintree/\n')
if request.method == 'POST': if request.method == 'POST':
result = braintreestuff.webhook(request) result = braintreestuff.webhook(request)
if result == 4: # pragma: no cover if result == 4: # pragma: no cover