From 00acc232598c46219ebd0a2e93976ddac44f7809 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 25 Sep 2017 13:14:56 +0200 Subject: [PATCH] added generic static chart routine --- rowers/urls.py | 23 +++++++---- rowers/views.py | 104 +++++++++++++----------------------------------- 2 files changed, 44 insertions(+), 83 deletions(-) diff --git a/rowers/urls.py b/rowers/urls.py index 3f1ed3c6..7142d49f 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -215,13 +215,22 @@ urlpatterns = [ url(r'^physics$',TemplateView.as_view(template_name='physics.html'),name='physics'), url(r'^partners$',TemplateView.as_view(template_name='partners.html'),name='partners'), url(r'^workout/(?P\d+)/$',views.workout_view), - url(r'^workout/(?P\d+)/addtimeplot$',views.workout_add_timeplot_view), - url(r'^workout/(?P\d+)/addpiechart$',views.workout_add_piechart_view), - url(r'^workout/(?P\d+)/addpowerpiechart$',views.workout_add_power_piechart_view), - url(r'^workout/(?P\d+)/adddistanceplot$',views.workout_add_distanceplot_view), - url(r'^workout/(?P\d+)/adddistanceplot2$',views.workout_add_distanceplot2_view), - url(r'^workout/(?P\d+)/addotwpowerplot$',views.workout_add_otw_powerplot_view), - url(r'^workout/(?P\d+)/addtimeplot2$',views.workout_add_timeplot2_view), + url(r'^workout/(?P\d+)/addtimeplot$',views.workout_add_chart_view, + {'plotnr':'1'}), + url(r'^workout/(?P\d+)/addpiechart$',views.workout_add_chart_view, + {'plotnr':'3'}), + url(r'^workout/(?P\d+)/addpowerpiechart$',views.workout_add_chart_view, + {'plotnr':'13'}), + url(r'^workout/(?P\d+)/adddistanceplot$',views.workout_add_chart_view, + {'plotnr':'2'}), + url(r'^workout/(?P\d+)/adddistanceplot2$',views.workout_add_chart_view, + {'plotnr':'7'}), + url(r'^workout/(?P\d+)/addotwpowerplot$',views.workout_add_chart_view, + {'plotnr':'9'}), + url(r'^workout/(?P\d+)/addtimeplot2$',views.workout_add_chart_view, + {'plotnr':'8'}), + url(r'^workout/(?P\d+)/addstatic/(?P\d+)$',views.workout_add_chart_view), + url(r'^workout/(?P\d+)/addstatic$',views.workout_add_chart_view), url(r'^workout/(?P\d+)/delete$',views.workout_delete_view), url(r'^workout/(?P\d+)/smoothenpace$',views.workout_smoothenpace_view), url(r'^workout/(?P\d+)/undosmoothenpace$',views.workout_undo_smoothenpace_view), diff --git a/rowers/views.py b/rowers/views.py index 07314d08..d2e91f6e 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -6621,7 +6621,31 @@ def workout_edit_view_navionics(request,id=0,message="",successmessage=""): return HttpResponseRedirect(url) +# Generic chart creation +@user_passes_test(ispromember,login_url="/",redirect_field_name=None) +def workout_add_chart_view(request,id,plotnr=1): + try: + w = Workout.objects.get(id=id) + except Workout.DoesNotExist: + raise Http404("Workout doesn't exist") + plotnr = int(plotnr) + + if (checkworkoutuser(request.user,w)==False): + raise PermissionDenied("You are not allowed add plots to this workout") + else: + f1 = w.csvfilename[6:-4] + timestr = strftime("%Y%m%d-%H%M%S") + imagename = f1+timestr+'.png' + u = w.user.user + r = getrower(u) + title = w.name + res = uploads.make_plot(r,w,f1,w.csvfilename,'timeplot',title,plotnr=plotnr, + imagename=imagename) + + + url = "/rowers/workout/"+str(w.id)+"/edit" + return HttpResponseRedirect(url) # Create the chart image with wind corrected pace (OTW) @user_passes_test(ispromember,login_url="/",redirect_field_name=None) @@ -6755,45 +6779,9 @@ def workout_add_distanceplot2_view(request,id): fullpathimagename = 'static/plots/'+imagename u = w.user.user r = getrower(u) - 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 - plotnr = 7 - - if w.workouttype in ('water','coastal'): - plotnr = plotnr+3 - - if settings.DEBUG: - res = handle_makeplot.delay(f1,w.csvfilename, - w.name,hrpwrdata,plotnr,imagename) - else: - res = queue.enqueue(handle_makeplot,f1,w.csvfilename, - w.name,hrpwrdata,plotnr,imagename) + title = w.name + res = uploads.make_plot(r,w,f1,w.csvfilename,'distanceplot',title,plotnr=7,imagename=imagename) - i = GraphImage(workout=w,creationdatetime=timezone.now(), - filename=fullpathimagename) - - i.save() - url = "/rowers/workout/"+str(w.id)+"/edit" return HttpResponseRedirect(url) @@ -6815,44 +6803,8 @@ def workout_add_timeplot2_view(request,id): fullpathimagename = 'static/plots/'+imagename u = w.user.user r = getrower(u) - 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 - plotnr = 8 - - if w.workouttype in ('water','coastal'): - plotnr = plotnr+3 - - if settings.DEBUG: - res = handle_makeplot.delay(f1,w.csvfilename, - w.name,hrpwrdata,plotnr,imagename) - else: - res = queue.enqueue(handle_makeplot,f1,w.csvfilename, - w.name,hrpwrdata,plotnr,imagename) - - i = GraphImage(workout=w,creationdatetime=timezone.now(), - filename=fullpathimagename) - - i.save() + title = w.name + res = uploads.make_plot(r,w,f1,w.csvfilename,'distanceplot',title,plotnr=8,imagename=imagename) url = "/rowers/workout/"+str(w.id)+"/edit" return HttpResponseRedirect(url)