From 47d9cac21a969f9f5d37802da88b52c99228449e Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sat, 8 Feb 2020 17:22:51 +0100 Subject: [PATCH] simple function to upload workouts to user --- rowers/views/workoutviews.py | 93 ++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 5c6cb869..6fbcfaf2 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -4384,6 +4384,99 @@ def workout_toggle_ranking(request,id=0): return response +def workout_add(request): + if request.method != 'POST': + raise PermissionDenied("This view cannot be accessed") + + # check credentials here + + form = DocumentsForm(request.POST,request.FILES) + optionsform = TeamUploadOptionsForm(request.POST) + rowerform = TeamInviteForm(request.POST) + rowerform.fields.pop('email') + if form.is_valid(): + f = request.FILES.get('file',False) + if f: + res = handle_uploaded_file(f) + else: + message = {'message':'no file attached','status':'false'} + return JsonResponse(status=400,data=message) + + t = form.cleaned_data['title'] + offline = True + offline = form.cleaned_data['offline'] + boattype = form.cleaned_data['boattype'] + workouttype = form.cleaned_data['workouttype'] + if rowerform.is_valid(): + u = rowerform.cleaned_data['user'] + r = getrower(u) + else: + message = {'status':'false','message':'invalid user'} + return JSonResponse(status=400,data=message) + + notes = form.cleaned_data['notes'] + if optionsform.is_valid(): + make_plot = optionsform.cleaned_data['make_plot'] + plottype = optionsform.cleaned_data['plottype'] + upload_to_c2 = optionsform.cleaned_data['upload_to_C2'] + upload_to_strava = optionsform.cleaned_data['upload_to_Strava'] + upload_to_st = optionsform.cleaned_data['upload_to_SportTracks'] + upload_to_rk = optionsform.cleaned_data['upload_to_RunKeeper'] + upload_to_ua = optionsform.cleaned_data['upload_to_MapMyFitness'] + upload_to_tp = optionsform.cleaned_data['upload_to_TrainingPeaks'] + makeprivate = optionsform.cleaned_data['makeprivate'] + landingpage = optionsform.cleaned_data['landingpage'] + + uploadoptions = { + 'makeprivate':makeprivate, + 'make_plot':make_plot, + 'plottype':plottype, + 'upload_to_C2':upload_to_c2, + 'upload_to_Strava':upload_to_strava, + 'upload_to_SportTracks':upload_to_st, + 'upload_to_RunKeeper':upload_to_rk, + 'upload_to_MapMyFitness':upload_to_ua, + 'upload_to_TrainingPeaks':upload_to_tp, + 'landingpage':landingpage, + 'boattype': boattype, + 'workouttype': workouttype, + } + + f1 = res[0] + f2 = res[1] + + id, message, f2 = dataprep.new_workout_from_file( + r,f2, + workouttype=workouttype, + workoutsource=workoutsource, + boattype=boattype, + makeprivate=makeprivate, + title = t, + notes=notes, + ) + + if <= 0: + message = {'status':'false','message':'unable to process file'} + return JSonResponse(status=400,data=message) + + w = Workout.objects.get(id=id) + + if make_plot: + res, jobid = uploads.make_plot(r,w,f1,f2,plottype,t) + + if upload_to_c2: + try: + message,id = c2stuff.workout_c2_upload(r.user,w) + except NoTokenError: + pass + + # add other export options + + message = {'status': 'true','id':w.id} + return JSONResponse(status=200,data=message) + + + # This is the main view for processing uploaded files @login_required()