Merge branch 'release/v18.6.4'
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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']
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user