From 04ac613710ec864e99c901c18d820d019539e4e2 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 25 Sep 2017 12:07:37 +0200 Subject: [PATCH] moved make_plot to uploads --- rowers/uploads.py | 73 +++++++++++++++++++++++++++++++++++++++++++++++ rowers/views.py | 56 +++--------------------------------- 2 files changed, 77 insertions(+), 52 deletions(-) create mode 100644 rowers/uploads.py diff --git a/rowers/uploads.py b/rowers/uploads.py new file mode 100644 index 00000000..7cc20942 --- /dev/null +++ b/rowers/uploads.py @@ -0,0 +1,73 @@ +# for actions related to uploads +from django.conf import settings +from django.utils import timezone,translation +from rowers.tasks import ( + handle_sendemail_unrecognized,handle_sendemailnewcomment, + handle_sendemailnewresponse, handle_updatedps, + handle_makeplot,handle_otwsetpower,handle_sendemailtcx, + handle_sendemailcsv + ) + +from rowers.models import GraphImage + +import numpy as np + +from rowers.utils import ( + geo_distance,serialize_list,deserialize_list,uniqify, + str2bool,range_to_color_hex,absolute + ) + + +def make_plot(r,w,f1,f2,plottype,title): + imagename = f1[:-4]+'.png' + fullpathimagename = 'static/plots/'+imagename + + powerperc = 100*np.array([r.pw_ut2, + r.pw_ut1, + r.pw_at, + r.pw_tr,r.pw_an])/r.ftp + + ftp = float(r.ftp) + if w.workouttype in ('water','coastal'): + ftp = ftp*(100.-r.otwslack)/100. + + hrpwrdata = { + 'hrmax':r.max, + 'hrut2':r.ut2, + 'hrut1':r.ut1, + 'hrat':r.at, + 'hrtr':r.tr, + 'hran':r.an, + 'ftp':ftp, + 'powerperc':serialize_list(powerperc), + 'powerzones':serialize_list(r.powerzones), + } + + # make plot - asynchronous task + plotnrs = { + 'timeplot':1, + 'distanceplot':2, + 'pieplot':3, + } + + plotnr = plotnrs[plottype] + if w.workouttype in ('water','coastal'): + plotnr = plotnr+3 + + + if settings.DEBUG: + res = handle_makeplot.delay(f1,f2,title, + hrpwrdata,plotnr, + imagename) + else: + res = queue.enqueue(handle_makeplot,f1,f2, + title,hrpwrdata, + plotnr,imagename) + + + i = GraphImage(workout=w, + creationdatetime=timezone.now(), + filename=fullpathimagename) + i.save() + + return i.id diff --git a/rowers/views.py b/rowers/views.py index 4e0c38e5..e1cc280d 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -49,6 +49,7 @@ from rowers.models import ( ) from rowers.models import FavoriteForm,BaseFavoriteFormSet,SiteAnnouncement from rowers.metrics import rowingmetrics +import rowers.uploads as uploads from django.forms.formsets import formset_factory import StringIO from django.contrib.auth.decorators import login_required,user_passes_test @@ -7772,58 +7773,9 @@ def workout_upload_view(request, response = HttpResponseRedirect(url) w = Workout.objects.get(id=id) - if (make_plot): - imagename = f1[:-4]+'.png' - fullpathimagename = 'static/plots/'+imagename - u = request.user - r = getrower(request.user) - powerperc = 100*np.array([r.pw_ut2, - r.pw_ut1, - r.pw_at, - r.pw_tr,r.pw_an])/r.ftp - - ftp = float(r.ftp) - if w.workouttype in ('water','coastal'): - ftp = ftp*(100.-r.otwslack)/100. - - hrpwrdata = { - 'hrmax':r.max, - 'hrut2':r.ut2, - 'hrut1':r.ut1, - 'hrat':r.at, - 'hrtr':r.tr, - 'hran':r.an, - 'ftp':ftp, - 'powerperc':serialize_list(powerperc), - 'powerzones':serialize_list(r.powerzones), - } - - # make plot - asynchronous task - plotnrs = { - 'timeplot':1, - 'distanceplot':2, - 'pieplot':3, - } - - plotnr = plotnrs[plottype] - if workouttype in ('water','coastal'): - plotnr = plotnr+3 - - - if settings.DEBUG: - res = handle_makeplot.delay(f1,f2,t, - hrpwrdata,plotnr, - imagename) - else: - res = queue.enqueue(handle_makeplot,f1,f2, - t,hrpwrdata, - plotnr,imagename) - - - i = GraphImage(workout=w, - creationdatetime=timezone.now(), - filename=fullpathimagename) - i.save() + r = getrower(request.user) + if (make_plot): + id = uploads.make_plot(r,w,f1,f2,plottype,t) # upload to C2 if (upload_to_c2):