From 3590589eb76969883ae941d0295c9f293706ab70 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 7 Apr 2022 09:27:34 +0200 Subject: [PATCH] fix c2 import --- rowers/dataprep.py | 1 + rowers/tasks.py | 18 +++++++++++------- rowers/views/workoutviews.py | 4 ++++ 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 66f6475f..eb2e3c46 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -2125,6 +2125,7 @@ def new_workout_from_file(r, f2, uploadoptions={'boattype': '1x', 'workouttype': 'rower'}): message = "" + try: fileformat = get_file_type(f2) except (IOError, UnicodeDecodeError): # pragma: no cover diff --git a/rowers/tasks.py b/rowers/tasks.py index 365dab3a..7886c1e3 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -3158,7 +3158,7 @@ def handle_c2_async_workout(alldata, userid, c2token, c2id, delaysec, defaulttim title = '' # Create CSV file name and save data to CSV file - csvfilename = 'media/{code}_{c2id}.csv'.format( + csvfilename = 'media/{code}_{c2id}.csv.gz'.format( code=uuid4().hex[:16], c2id=c2id) startdatetime, starttime, workoutdate, duration, starttimeunix, timezone = utils.get_startdatetime_from_c2data( @@ -3167,7 +3167,7 @@ def handle_c2_async_workout(alldata, userid, c2token, c2id, delaysec, defaulttim s = 'Time zone {timezone}, startdatetime {startdatetime}, duration {duration}'.format( timezone=timezone, startdatetime=startdatetime, duration=duration) - dologging('debuglog.log', s) + dologging('c2_import.log', s) authorizationstring = str('Bearer ' + c2token) headers = {'Authorization': authorizationstring, @@ -3180,9 +3180,9 @@ def handle_c2_async_workout(alldata, userid, c2token, c2id, delaysec, defaulttim return 0 if s.status_code != 200: # pragma: no cover - dologging('debuglog.log', 'No Stroke Data. Status Code {code}'.format( + dologging('c2_import.log', 'No Stroke Data. Status Code {code}'.format( code=s.status_code)) - dologging('debuglog.log', s.text) + dologging('c2_import.log', s.text) has_strokedata = False if not has_strokedata: # pragma: no cover @@ -3192,7 +3192,7 @@ def handle_c2_async_workout(alldata, userid, c2token, c2id, delaysec, defaulttim try: strokedata = pd.DataFrame.from_dict(s.json()['data']) except AttributeError: # pragma: no cover - dologging('debuglog.log', 'No stroke data in stroke data') + dologging('c2_import.log', 'No stroke data in stroke data') return 0 try: @@ -3200,7 +3200,7 @@ def handle_c2_async_workout(alldata, userid, c2token, c2id, delaysec, defaulttim cum_time = res[0] lapidx = res[1] except KeyError: # pragma: no cover - dologging('debuglog.log', 'No time values in stroke data') + dologging('c2_import.log', 'No time values in stroke data') return 0 unixtime = cum_time+starttimeunix @@ -3242,7 +3242,7 @@ def handle_c2_async_workout(alldata, userid, c2token, c2id, delaysec, defaulttim if workouttype == 'bike': # pragma: no cover velo = 1000./pace - dologging('debuglog.log', 'Unix Time Stamp {s}'.format(s=unixtime[0])) + dologging('c2_import.log', 'Unix Time Stamp {s}'.format(s=unixtime[0])) # dologging('debuglog.log',json.dumps(s.json())) df = pd.DataFrame({'TimeStamp (sec)': unixtime, @@ -3270,6 +3270,7 @@ def handle_c2_async_workout(alldata, userid, c2token, c2id, delaysec, defaulttim _ = df.to_csv(csvfilename, index_label='index', compression='gzip') + uploadoptions = { 'secret': UPLOAD_SERVICE_SECRET, 'user': userid, @@ -3289,6 +3290,9 @@ def handle_c2_async_workout(alldata, userid, c2token, c2id, delaysec, defaulttim response = session.post(UPLOAD_SERVICE_URL, json=uploadoptions) if response.status_code != 200: # pragma: no cover + dologging('c2_import.log', + 'Upload API returned status code {code}'.format( + code=response.status_code)) return 0 workoutid = response.json()['id'] diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 2cc2cb83..3da4b04f 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -4593,6 +4593,7 @@ def workout_upload_api(request): message = {'status': 'false', 'message': 'invalid credentials'} return JSONResponse(status=403, data=message) + form = DocumentsForm(post_data) optionsform = TeamUploadOptionsForm(post_data) rowerform = TeamInviteForm(post_data) @@ -4613,6 +4614,7 @@ def workout_upload_api(request): message = {'status': 'false', 'message': 'could not find file'} return JSONResponse(status=400, data=message) + # sync related IDs c2id = post_data.get('c2id', '') @@ -4635,6 +4637,7 @@ def workout_upload_api(request): dologging('debuglog.log', s) + r = None if form.is_valid(): t = form.cleaned_data['title'] @@ -4768,6 +4771,7 @@ def workout_upload_api(request): message = form.errors return JSONResponse(status=400, data=message) + message = {'status': 'true', 'id': w.id} statuscode = 200 if fstr: