From 33e185912e7d55c7e0bfe74e889e231281e6e5bf Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 11 May 2017 08:47:42 +0200 Subject: [PATCH 1/7] some error checking in interactive plot --- rowers/interactiveplots.py | 17 +++++++++++++---- rowers/views.py | 7 ++++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index e17bd3e4..f79b9ce2 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -997,11 +997,20 @@ def interactive_cum_flex_chart2(theworkouts,promember=0, if datadf.empty: return ['','

No non-zero data in selection

','',''] - - datadf['x1'] = datadf.ix[:,xparam] - datadf['y1'] = datadf.ix[:,yparam1] + + try: + datadf['x1'] = datadf.ix[:,xparam] + except KeyError: + datadf['x1'] = datadf['distance'] + try: + datadf['y1'] = datadf.ix[:,yparam1] + except KeyError: + datadf['y1'] = datadf['pace'] if yparam2 != 'None': - datadf['y2'] = datadf.ix[:,yparam2] + try: + datadf['y2'] = datadf.ix[:,yparam2] + except KeyError: + datadf['y2'] = datadf['y1'] else: datadf['y2'] = datadf['y1'] diff --git a/rowers/views.py b/rowers/views.py index 950491c1..4663ea85 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -76,6 +76,10 @@ from rowsandall_app.settings import ( TP_CLIENT_ID,TP_REDIRECT_URI,TP_CLIENT_KEY,TP_CLIENT_SECRET, ) +from rowers.tasks_standalone import addcomment2 +from django.contrib import messages +from async_messages import messages as a_messages + import requests import json from rest_framework.renderers import JSONRenderer @@ -2182,9 +2186,6 @@ def workout_forcecurve_view(request,id=0,workstrokesonly=False): 'teams':get_my_teams(request.user), }) -from rowers.tasks_standalone import addcomment2 -#from django.contrib import messages -from async_messages import messages # Test asynchronous tasking and messaging @login_required() def workout_test_task_view(request,id=0): From 80ebb912552265287772f513cee27b0c6eba2398 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 11 May 2017 09:21:07 +0200 Subject: [PATCH 2/7] messages for upload --- rowers/c2stuff.py | 6 +-- rowers/runkeeperstuff.py | 6 +-- rowers/sporttracksstuff.py | 4 +- rowers/stravastuff.py | 6 +-- rowers/tpstuff.py | 6 +-- rowers/underarmourstuff.py | 4 +- rowers/views.py | 78 ++++++++++++++++++++++++++------------ 7 files changed, 68 insertions(+), 42 deletions(-) diff --git a/rowers/c2stuff.py b/rowers/c2stuff.py index 745ca19f..2a2021e5 100644 --- a/rowers/c2stuff.py +++ b/rowers/c2stuff.py @@ -541,7 +541,7 @@ def process_callback(request): # Uploading workout def workout_c2_upload(user,w): - response = 'trying C2 upload' + message = 'trying C2 upload' thetoken = c2_open(user) r = Rower.objects.get(user=user) @@ -565,7 +565,7 @@ def workout_c2_upload(user,w): response = requests.post(url,headers=headers,data=json.dumps(data)) if (response.status_code == 409 ): - message = "Duplicate error" + message = "Concept2 Duplicate error" w.uploadedtoc2 = -1 c2id = -1 w.save() @@ -581,7 +581,7 @@ def workout_c2_upload(user,w): c2id = 0 else: - message = "You are not authorized to upload this workout" + message = "You are not authorized to upload this workout to Concept2" c2id = 0 return message,c2id diff --git a/rowers/runkeeperstuff.py b/rowers/runkeeperstuff.py index bcc0edee..2d025ce4 100644 --- a/rowers/runkeeperstuff.py +++ b/rowers/runkeeperstuff.py @@ -319,7 +319,7 @@ def get_userid(access_token): return str(res) def workout_runkeeper_upload(user,w): - message = "" + message = "Uploading to Runkeeper" rkid = 0 r = w.user @@ -332,7 +332,7 @@ def workout_runkeeper_upload(user,w): if (checkworkoutuser(user,w)): data = createrunkeeperworkoutdata(w) if not data: - message = "Data error" + message = "Data error in Runkeeper Upload" rkid = 0 return message, rkid @@ -357,7 +357,7 @@ def workout_runkeeper_upload(user,w): rkuri = geturifromid(thetoken,rkid) w.uploadedtorunkeeper = rkid w.save() - return '',rkid + return 'Successfully synchronized to Runkeeper',rkid else: s = response message = "Something went wrong in workout_runkeeper_upload_view: %s - %s" % (s.reason,s.text) diff --git a/rowers/sporttracksstuff.py b/rowers/sporttracksstuff.py index 053f6915..629f166e 100644 --- a/rowers/sporttracksstuff.py +++ b/rowers/sporttracksstuff.py @@ -319,7 +319,7 @@ def getidfromresponse(response): def workout_sporttracks_upload(user,w): - message = "" + message = "Uploading to SportTracks" stid = 0 # ready to upload. Hurray r = w.user @@ -353,7 +353,7 @@ def workout_sporttracks_upload(user,w): stid = getidfromresponse(response) w.uploadedtosporttracks = stid w.save() - return '',stid + return 'Successfully synced to SportTracks',stid else: s = response message = "Something went wrong in workout_sporttracks_upload_view: %s" % s.reason diff --git a/rowers/stravastuff.py b/rowers/stravastuff.py index 270ff2cd..75fdc740 100644 --- a/rowers/stravastuff.py +++ b/rowers/stravastuff.py @@ -275,7 +275,7 @@ def handle_stravaexport(f2,workoutname,stravatoken,description=''): message = 'Workout successfully synchronized to Strava' except: res = 0 - + message = 'Strava upload timed out' # description doesn't work yet. Have to wait for stravalib to update @@ -289,7 +289,7 @@ def handle_stravaexport(f2,workoutname,stravatoken,description=''): def workout_strava_upload(user,w): - message = "" + message = "Uploading to Strava" stravaid=-1 r = Rower.objects.get(user=user) res = -1 @@ -322,7 +322,7 @@ def workout_strava_upload(user,w): os.remove(tcxfile) except WindowsError: pass - message = '' + message = mes stravaid = res return message,stravaid else: diff --git a/rowers/tpstuff.py b/rowers/tpstuff.py index 7331a512..efff14bb 100644 --- a/rowers/tpstuff.py +++ b/rowers/tpstuff.py @@ -283,7 +283,6 @@ def uploadactivity(access_token,filename,description='', with open("media/tperrors.log","a") as errorlog: errorlog.write(str(resp.status_code)) errorlog.write("\r\n") - print "noot" timestr = strftime("%Y%m%d-%H%M%S") errorlog.write(timestr+"\r\n") errorlog.write("\r\n") @@ -296,14 +295,13 @@ def uploadactivity(access_token,filename,description='', errorlog.write("\r\n") return 0,resp.reason,resp.status_code,headers else: - print resp.json() return resp.json()[0]["Id"],"ok",200,"" return 0 def workout_tp_upload(user,w): - message = "" + message = "Uploading to TrainingPeaks" tpid = 0 r = w.user @@ -333,7 +331,7 @@ def workout_tp_upload(user,w): tpid = res w.save() os.remove(tcxfile) - return '',tpid + return 'Successfully synchronized to TrainingPeaks',tpid else: # no tcxfile message = "Upload to TrainingPeaks failed" diff --git a/rowers/underarmourstuff.py b/rowers/underarmourstuff.py index 6dfbbc97..277b72bb 100644 --- a/rowers/underarmourstuff.py +++ b/rowers/underarmourstuff.py @@ -401,7 +401,7 @@ def get_userid(access_token): return res def workout_ua_upload(user,w): - message = "" + message = "Uploading to MapMyFitness" uaid = 0 r = w.user @@ -438,7 +438,7 @@ def workout_ua_upload(user,w): uaid = getidfromresponse(response) w.uploadedtounderarmour = uaid w.save() - return '',uaid + return 'Successfully synchronized with MapMyFitness',uaid else: s = response message = "Something went wrong in workout_underarmour_upload_view: %s - %s" % (s.reason,s.text) diff --git a/rowers/views.py b/rowers/views.py index 4663ea85..b549e456 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -5855,61 +5855,89 @@ def workout_upload_view(request,message="", # upload to C2 if (upload_to_c2): try: - c2message,c2id = c2stuff.workout_c2_upload(request.user,w) + message,id = c2stuff.workout_c2_upload(request.user,w) except C2NoTokenError: - pass + id = 0 + message = "Something went wrong with the Concept2 sync" + if id>1: + messages.info(request,message) + else: + messages.error(request,message) + if (upload_to_strava): try: - stravamessage,stravaid = stravastuff.workout_strava_upload( + message,id = stravastuff.workout_strava_upload( request.user,w ) except StravaNoTokenError: - pass - + id = 0 + message = "Please connect to Strava first" + if id>1: + messages.info(request,message) + else: + messages.error(request,message) + if (upload_to_st): try: - stmessage,stid = sporttracksstuff.workout_sporttracks_upload( + message,id = sporttracksstuff.workout_sporttracks_upload( request.user,w ) except SportTracksNoTokenError: - pass + message = "Please connect to SportTracks first" + id = 0 + if id>1: + messages.info(request,message) + else: + messages.error(request,message) if (upload_to_rk): try: - rkmessage,rkid = runkeeperstuff.workout_runkeeper_upload( + message,id = runkeeperstuff.workout_runkeeper_upload( request.user,w ) except RunKeeperNoTokenError: - pass + message = "Please connect to Runkeeper first" + id = 0 + + if id>1: + messages.info(request,message) + else: + messages.error(request,message) + if (upload_to_ua): try: - uamessage,uaid = underarmourstuff.workout_ua_upload( + message,id = underarmourstuff.workout_ua_upload( request.user,w ) except UnderArmourNoTokenError: - pass + message = "Please connect to MapMyFitness first" + id = 0 + + if id>1: + messages.info(request,message) + else: + messages.error(request,message) + if (upload_to_tp): try: - tpmessage,tpid = tpstuff.workout_tp_upload( + message,id = tpstuff.workout_tp_upload( request.user,w ) except TPNoTokenError: - pass - - if message: - url = reverse(workout_edit_view, - kwargs={ - 'message':message, - 'id':w.id, - }) + message = "Please connect to TrainingPeaks first" + id = 0 - else: - url = reverse(workout_edit_view, - kwargs = { - 'id':w.id, - }) + if id>1: + messages.info(request,message) + else: + messages.error(request,message) + + url = reverse(workout_edit_view, + kwargs = { + 'id':w.id, + }) return HttpResponseRedirect(url) else: response = render(request, From bbe9ae4770aecee5ab34ffe4eb33a6ba05845de0 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 11 May 2017 10:27:38 +0200 Subject: [PATCH 3/7] completely mmigrated to django messages --- rowers/urls.py | 35 +-- rowers/views.py | 633 +++++++++++++++++++++--------------------------- 2 files changed, 271 insertions(+), 397 deletions(-) diff --git a/rowers/urls.py b/rowers/urls.py index ac183622..30419327 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -115,18 +115,11 @@ urlpatterns = [ url(r'^404/$', TemplateView.as_view(template_name='404.html'),name='404'), url(r'^400/$', TemplateView.as_view(template_name='400.html'),name='400'), url(r'^403/$', TemplateView.as_view(template_name='403.html'),name='403'), - url(r'^imports/s/(?P\w+.*)/$', TemplateView.as_view(template_name='imports.html'), name='imports'), url(r'^imports/$', TemplateView.as_view(template_name='imports.html'), name='imports'), - url(r'^list-workouts/c/(?P\w+.*)/$',views.workouts_view), - url(r'^list-workouts/s/(?P\w+.*)/$',views.workouts_view), - url(r'^list-workouts/c/(?P\w+.*)/s/(?P\w+.*)$',views.workouts_view), url(r'^list-workouts/team/(?P\d+)/(?P\w+.*)/(?P\w+.*)$',views.workouts_view), url(r'^list-workouts/team/(?P\d+)/$',views.workouts_view), url(r'^list-workouts/(?P\w+.*)/(?P\w+.*)$',views.workouts_view), url(r'^list-workouts/$',views.workouts_view), - url(r'^team-compare-select/c/(?P\w+.*)/$',views.team_comparison_select), - url(r'^team-compare-select/s/(?P\w+.*)/$',views.team_comparison_select), - url(r'^team-compare-select/c/(?P\w+.*)/s/(?P\w+.*)$',views.team_comparison_select), url(r'^team-compare-select/team/(?P\d+)/(?P\w+.*)/(?P\w+.*)$',views.team_comparison_select), url(r'^team-compare-select/team/(?P\d+)/$',views.team_comparison_select), url(r'^team-compare-select/(?P\w+.*)/(?P\w+.*)$',views.team_comparison_select), @@ -158,19 +151,12 @@ urlpatterns = [ url(r'^graph/(\d+)/$',views.graph_show_view), url(r'^graph/(\d+)/deleteconfirm$',views.graph_delete_confirm_view), url(r'^graph/(\d+)/delete$',views.graph_delete_view), - url(r'^workout/upload/team/s/(?P\w+.*)/c/(?P\w+.*)/$',views.team_workout_upload_view), - url(r'^workout/upload/team/c/(?P\w+.*)/$',views.team_workout_upload_view), - url(r'^workout/upload/team/s/(?P\w+.*)/$',views.team_workout_upload_view), url(r'^workout/upload/team/$',views.team_workout_upload_view), url(r'^workout/upload/$',views.workout_upload_view), - url(r'^workout/upload/c/(?P\w+.*)$',views.workout_upload_view), url(r'^workout/(?P\d+)/histo$',views.workout_histo_view), url(r'^workout/(?P\d+)/task$',views.workout_test_task_view), url(r'^workout/(?P\d+)/forcecurve$',views.workout_forcecurve_view), url(r'^workout/(?P\d+)/unsubscribe$',views.workout_unsubscribe_view), - url(r'^workout/(?P\d+)/export/c/(?P\w+.*)/s/(?P\w+.*)$',views.workout_export_view), - url(r'^workout/(?P\d+)/export/c/(?P\w+.*)$',views.workout_export_view), - url(r'^workout/(?P\d+)/export/s/(?P\w+.*)$',views.workout_export_view), url(r'^workout/(?P\d+)/export$',views.workout_export_view), url(r'^workout/(?P\d+)/comment$',views.workout_comment_view), url(r'^workout/(\d+)/emailtcx$',views.workout_tcxemail_view), @@ -178,28 +164,19 @@ urlpatterns = [ url(r'^workout/compare/(\d+)/$',views.workout_comparison_list), url(r'^workout/compare2/(?P\d+)/(?P\d+)/(?P\w+.*)/(?P\w+.*)/$',views.workout_comparison_view), url(r'^workout/compare/(?P\d+)/(?P\d+-\d+-\d+)/(?P\w+.*)$',views.workout_comparison_list), - url(r'^workout/(?P\d+)/export/c/(?P\w+.*)/s/(?P\w+.*)$',views.workout_edit_view), - url(r'^workout/(?P\d+)/edit/c/(?P.+.*)$',views.workout_edit_view), - url(r'^workout/(?P\d+)/edit/s/(?P.+.*)$',views.workout_edit_view), url(r'^workout/(?P\d+)/edit$',views.workout_edit_view), url(r'^workout/(?P\d+)/setprivate$',views.workout_setprivate_view), url(r'^workout/(?P\d+)/makepublic$',views.workout_makepublic_view), - url(r'^workout/(?P\d+)/advanced/c/(?P.+.*)$',views.workout_advanced_view), - url(r'^workout/(?P\d+)/advanced/s/(?P.+.*)$',views.workout_advanced_view), url(r'^workout/(?P\d+)/geeky$',views.workout_geeky_view), url(r'^workout/(\d+)/advanced$',views.workout_advanced_view), url(r'^workout/(\d+)/stats$',views.workout_stats_view), url(r'^workout/(\d+)/otwsetpower$',views.workout_otwsetpower_view), url(r'^workout/(\d+)/interactiveotwplot$',views.workout_otwpowerplot_view), url(r'^workout/(\d+)/wind$',views.workout_wind_view), - url(r'^workout/(?P\d+)/wind/c/(?P\w+.*)$',views.workout_wind_view), - url(r'^workout/(?P\d+)/wind/s/(?P\w+.*)$',views.workout_wind_view), url(r'^workout/(?P\d+)/darkskywind$',views.workout_downloadwind_view), url(r'^workout/(?P\d+)/metar/(?P\w+)$',views.workout_downloadmetar_view), url(r'^workout/(\d+)/stream$',views.workout_stream_view), - url(r'^workout/(?P\d+)/stream/c/(?P\w+.*)$',views.workout_stream_view), url(r'^workout/(\d+)/crewnerdsummary$',views.workout_crewnerd_summary_view), - url(r'^workout/(?P\d+)/editintervals/(?P\w+.*)$',views.workout_summary_edit_view), url(r'^workout/(\d+)/editintervals$',views.workout_summary_edit_view), url(r'^workout/(\d+)/restore$',views.workout_summary_restore_view), url(r'^workout/(\d+)/interactiveplot$',views.workout_biginteractive_view), @@ -222,7 +199,6 @@ urlpatterns = [ url(r'^workout/(\d+)/delete$',views.workout_delete_view), url(r'^workout/(\d+)/smoothenpace$',views.workout_smoothenpace_view), url(r'^workout/(\d+)/undosmoothenpace$',views.workout_undo_smoothenpace_view), - url(r'^workout/c2import/c/(?P\w+.*)$',views.workout_c2import_view), url(r'^workout/c2import/$',views.workout_c2import_view), url(r'^workout/stravaimport/$',views.workout_stravaimport_view), url(r'^workout/c2import/(\d+)/$',views.workout_getc2workout_view), @@ -242,14 +218,8 @@ urlpatterns = [ url(r'^workout/(\d+)/underarmouruploadw/$',views.workout_underarmour_upload_view), url(r'^workout/(\d+)/tpuploadw/$',views.workout_tp_upload_view), url(r'^multi-compare$',views.multi_compare_view), - url(r'^me/teams/c/(?P\w+.*)/s/(?P\w+.*)$',views.rower_teams_view), - url(r'^me/teams/s/(?P\w+.*)$',views.rower_teams_view), - url(r'^me/teams/c/(?P\w+.*)$',views.rower_teams_view), - url(r'^team/(?P\d+)/s/(?P\w+.*)/c/(?P\w+.*)$',views.team_view), url(r'^me/teams/$',views.rower_teams_view), - url(r'^team/(?P\d+)/c/(?P\w+.*)$',views.team_view), - url(r'^team/(?P\d+)/s/(?P\w+.*)$',views.team_view), - url(r'^team/(\d+)/$',views.team_view), + url(r'^team/(?P\d+)/$',views.team_view), url(r'^team/(\d+)/edit$',views.team_edit_view), url(r'^team/(\d+)/leaveconfirm/$',views.team_leaveconfirm_view), url(r'^team/(\d+)/leave/$',views.team_leave_view), @@ -262,13 +232,10 @@ urlpatterns = [ url(r'^me/invitation/(\d+)/revoke$',views.invitation_revoke_view), url(r'^me/invitation/$',views.rower_invitations_view), url(r'^me/invitation/(\w+.*)/$',views.rower_invitations_view), - url(r'^me/request/c/(?P\w+.*)/$',views.manager_requests_view), url(r'^me/request/(\d+)/revoke',views.request_revoke_view), url(r'^me/request/(\d+)/reject',views.request_reject_view), url(r'^me/request/(\w+.*)/$',views.manager_requests_view), url(r'^me/request/$',views.manager_requests_view), - url(r'^me/edit/c/(?P\w+.*)$',views.rower_edit_view), - url(r'^me/edit/s/(?P\w+.*)$',views.rower_edit_view), url(r'^me/edit/$',views.rower_edit_view), url(r'^me/edit/(.+.*)/$',views.rower_edit_view), url(r'^me/c2authorize/$',views.rower_c2_authorize), diff --git a/rowers/views.py b/rowers/views.py index b549e456..f1fd8ce9 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -1057,10 +1057,10 @@ def workout_tcxemail_view(request,id=0): tcxfile = stravastuff.createstravaworkoutdata(w) if tcxfile == 0: message = "Something went wrong (TCX export)" + messages.error(request,message) url = reverse(workout_export_view, kwargs = { 'id':str(w.id), - 'message':message, }) return HttpResponseRedirect(url) if settings.DEBUG and tcxfile: @@ -1074,10 +1074,10 @@ def workout_tcxemail_view(request,id=0): r.user.email,tcxfile) successmessage = "The TCX file was sent to you per email" + messages.info(request,successmessage) url = reverse(workout_export_view, kwargs = { 'id':str(w.id), - 'successmessage':successmessage, }) except: successmessage = "" @@ -1087,20 +1087,20 @@ def workout_tcxemail_view(request,id=0): timestr = strftime("%Y%m%d-%H%M%S") errorlog.write(timestr+errorstring+"\r\n") + messages.error(request,message) url = reverse(workout_export_view, kwargs = { 'id':str(w.id), - 'message':message, }) response = HttpResponseRedirect(url) else: message = "You are not allowed to export this workout" + messages.error(request,message) url = reverse(workout_export_view, kwargs = { 'id':str(w.id), - 'message':message, }) response = HttpResponseRedirect(url) @@ -1128,19 +1128,19 @@ def workout_csvemail_view(request,id=0): r.user.email,csvfile) successmessage = "The CSV file was sent to you per email" + messages.info(request,successmessage) url = reverse(workout_export_view, kwargs = { 'id':str(w.id), - 'successmessage':successmessage, }) response = HttpResponseRedirect(url) else: message = "You are not allowed to export this workout" + messages.error(request,message) url = reverse(workout_export_view, kwargs = { 'id':str(w.id), - 'message':message, }) response = HttpResponseRedirect(url) @@ -1176,38 +1176,29 @@ def workout_tp_upload_view(request,id=0): os.remove(tcxfile) except WindowsError: pass - url = reverse(workout_export_view, - kwargs = { - 'id':str(w.id), - 'message':message, - }) + + messages.error(request,message) else: # res != 0 w.uploadedtotp = res w.save() os.remove(tcxfile) - url = reverse(workout_export_view, - kwargs = { - 'id':str(w.id), - 'successmessage':'Uploaded to TP', - }) + messages.info(request,'Uploaded to TrainingPeaks') else: # no tcxfile message = "Upload to TrainingPeaks failed" w.uploadedtotp = -1 w.save() - url = reverse(workout_export_view, - kwargs = { - 'id':str(w.id), - 'message':message, - }) + messages.error(request,message) + else: # not allowed to upload message = "You are not allowed to export this workout to TP" - url = reverse(workout_export_view, - kwargs = { - 'id':str(w.id), - 'message':message, - }) + messages.error(request,message) + + url = reverse(workout_export_view, + kwargs = { + 'id':str(w.id), + }) return HttpResponseRedirect(url) @@ -1322,16 +1313,13 @@ def workout_c2_upload_view(request,id=0): return HttpResponseRedirect("/rowers/me/c2authorize/") if message: - url = reverse(workout_export_view, - kwargs = { - 'message':str(message), - 'id':str(w.id), - }) - else: - url = reverse(workout_export_view, - kwargs = { - 'id':str(w.id), - }) + messages.error(request,message) + + + url = reverse(workout_export_view, + kwargs = { + 'id':str(w.id), + }) return HttpResponseRedirect(url) @@ -1356,9 +1344,9 @@ def workout_runkeeper_upload_view(request,id=0): data = runkeeperstuff.createrunkeeperworkoutdata(w) if not data: message = "Data error" + messages.error(request,message) url = reverse(workout_export_view, kwargs = { - 'message':str(message), 'id':str(w.id), }) return HttpResponseRedirect(url) @@ -1386,13 +1374,14 @@ def workout_runkeeper_upload_view(request,id=0): else: s = response message = "Something went wrong in workout_runkeeper_upload_view: %s - %s" % (s.reason,s.text) + messages.error(request,message) else: message = "You are not authorized to upload this workout" + messages.error(request,message) url = reverse(workout_export_view, kwargs = { - 'message':str(message), 'id':str(w.id), }) @@ -1420,9 +1409,9 @@ def workout_underarmour_upload_view(request,id=0): # return HttpResponse(json.dumps(data)) if not data: message = "Data error" + messages.error(request,message) url = reverse(workout_export_view, kwargs = { - 'message':str(message), 'id':str(w.id), }) return HttpResponseRedirect(url) @@ -1454,10 +1443,10 @@ def workout_underarmour_upload_view(request,id=0): else: message = "You are not authorized to upload this workout" - + messages.error(request,message) + url = reverse(workout_export_view, kwargs = { - 'message':str(message), 'id':str(w.id), }) @@ -1484,9 +1473,9 @@ def workout_sporttracks_upload_view(request,id=0): data = sporttracksstuff.createsporttracksworkoutdata(w) if not data: message = "Data error" + messages.error(request,message) url = reverse(workout_export_view, kwargs = { - 'message':str(message), 'id':str(w.id), }) return HttpResponseRedirect(url) @@ -1518,9 +1507,10 @@ def workout_sporttracks_upload_view(request,id=0): else: message = "You are not authorized to upload this workout" + messages.error(request,message) + url = reverse(workout_export_view, kwargs = { - 'message':str(message), 'id':str(w.id), }) @@ -1646,12 +1636,12 @@ def rower_c2_token_refresh(request): r.save() successmessage = "Tokens refreshed. Good to go" - message = "" + messages.info(request,successmessage) else: - successmessage = "" message = "Something went wrong (refreshing tokens). Please reauthorize:" + messages.error(request,successmessage) - return imports_view(request,successmessage=successmessage,message=message) + return imports_view(request) # Underarmour token refresh. URL for manual refresh. Not visible to users @login_required() @@ -1756,10 +1746,11 @@ def rower_process_callback(request): # The imports page @login_required() def imports_view(request,successmessage="",message=""): + messages.info(request,successmessage) + messages.error(request,message) return render(request,"imports.html", - {'successmessage': successmessage, - 'message': message, - 'teams':get_my_teams(request.user), + { + 'teams':get_my_teams(request.user), }) # Just for testing purposes @@ -2633,7 +2624,7 @@ def rankings_view(request,theuser=0, cpredictions.append(a) - + messages.error(request,message) return render(request, 'rankings.html', {'rankingworkouts':theworkouts, 'interactiveplot':script, @@ -2646,7 +2637,6 @@ def rankings_view(request,theuser=0, 'deltaform':deltaform, 'id': theuser, 'theuser':uu, - 'message':message, 'startdate':startdate, 'enddate':enddate, 'teams':get_my_teams(request.user), @@ -2672,17 +2662,17 @@ def workout_recalcsummary_view(request,id=0): row.summary = rowdata.allstats() row.save() successmessage = "Summary Updated" + messages.info(request,successmessage) url = reverse(workout_edit_view, kwargs = { 'id':str(id), - 'successmessage':str(successmessage), }) else: message = "Something went wrong. Could not update summary" + messages.error(request,message) url = reverse(workout_edit_view, kwargs = { 'id':str(id), - 'message':str(message), }) return HttpResponseRedirect(url) @@ -2712,11 +2702,11 @@ def workout_makepublic_view(request,id, message = "Workout set to public. Your followers and team members will see it" - + messages.info(request,message) + url = reverse(workout_edit_view, kwargs = { 'id':str(id), - 'successmessage':str(message), }) return HttpResponseRedirect(url) @@ -2742,11 +2732,11 @@ def workout_setprivate_view(request,id, row.team.remove(team) message = "Workout set to private. Only you will see it" - + messages.info(request,message) + url = reverse(workout_edit_view, kwargs = { 'id':str(id), - 'successmessage':str(message), }) return HttpResponseRedirect(url) @@ -2826,11 +2816,12 @@ def team_comparison_select(request, form.fields["workouts"].queryset = workouts chartform = ChartParamChoiceForm(initial={'teamid':theteam.id}) + + messages.info(request,successmessage) + messages.error(request,message) return render(request, 'team_compare_select.html', {'workouts': workouts, - 'message': message, - 'successmessage':successmessage, 'dateform':dateform, 'startdate':startdate, 'enddate':enddate, @@ -3006,10 +2997,11 @@ def workouts_view(request,message='',successmessage='', "-id" ) + messages.info(request,successmessage) + messages.error(request,message) + return render(request, 'list_workouts.html', {'workouts': workouts, - 'message': message, - 'successmessage':successmessage, 'dateform':dateform, 'startdate':startdate, 'enddate':enddate, @@ -3082,6 +3074,8 @@ def workout_comparison_list(request,id=0,message='',successmessage='', except Workout.DoesNotExist: raise Http404("Workout doesn't exist") + messages.error(request,message) + messages.info(request,successmessage) return render(request, 'comparison_list.html', {'id':id, @@ -3089,8 +3083,6 @@ def workout_comparison_list(request,id=0,message='',successmessage='', 'workouts': workouts, 'last_name':u.last_name, 'first_name':u.first_name, - 'message': message, - 'successmessage':successmessage, 'dateform':dateform, 'startdate':startdate, 'enddate':enddate, @@ -3162,15 +3154,16 @@ def workout_fusion_list(request,id=0,message='',successmessage='', except Workout.DoesNotExist: raise Http404("Workout doesn't exist") - + + messages.info(request,successmessage) + messages.error(request,message) + return render(request, 'fusion_list.html', {'id':id, 'workout':row, 'workouts': workouts, 'last_name':u.last_name, 'first_name':u.first_name, - 'message': message, - 'successmessage':successmessage, 'dateform':dateform, 'startdate':startdate, 'enddate':enddate, @@ -3314,20 +3307,20 @@ def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""): row.save() os.remove(fname) successmessage = "CrewNerd summary added" + messages.info(request,successmessage) url = reverse(workout_edit_view, kwargs = { 'id':str(id), - 'successmessage':str(successmessage), }) return HttpResponseRedirect(url) except: os.remove(fname) message = "Something went wrong (workout_crewnerd_summary_view)" + messages.error(request,message) url = reverse(workout_edit_view, kwargs = { 'id':str(id), - 'message':str(message), }) return HttpResponseRedirect(url) else: @@ -3391,16 +3384,20 @@ def workout_downloadwind_view(request,id=0, row.save() rowdata.add_wind(windspeed,windbearing) rowdata.write_csv(f1,gzip=True) - - kwargs = {'successmessage':str(message), - 'id':str(id)} + + messages.info(request,message) + + kwargs = { + 'id':str(id)} url = reverse(workout_wind_view,kwargs=kwargs) response = HttpResponseRedirect(url) except KeyError: message = "No latitude/longitude data" - kwargs = {'message':str(message), - 'id':str(id)} + messages.error(request,message) + kwargs = { + 'id':str(id) + } url = reverse(workout_wind_view,kwargs=kwargs) response = HttpResponseRedirect(url) @@ -3455,16 +3452,19 @@ def workout_downloadmetar_view(request,id=0, row.save() rowdata.add_wind(windspeed,windbearing) rowdata.write_csv(f1,gzip=True) - - kwargs = {'successmessage':str(message), + messages.info(request,message) + + kwargs = { 'id':str(id)} url = reverse(workout_wind_view,kwargs=kwargs) response = HttpResponseRedirect(url) except KeyError: message = "No latitude/longitude data" - kwargs = {'message':str(message), - 'id':str(id)} + messages.error(request,message) + kwargs = { + 'id':str(id) + } url = reverse(workout_wind_view,kwargs=kwargs) response = HttpResponseRedirect(url) @@ -3551,8 +3551,10 @@ def workout_wind_view(request,id=0,message="",successmessage=""): else: message = "Invalid Form" - kwargs = {'message':str(message), - 'id':str(id)} + messages.error(request,message) + kwargs = { + 'id':str(id) + } url = reverse(workout_wind_view,kwargs=kwargs) response = HttpResponseRedirect(url) @@ -3574,11 +3576,13 @@ def workout_wind_view(request,id=0,message="",successmessage=""): gmscript = "" gmdiv = "No GPS data available" + + messages.info(request,successmessage) + messages.error(request,message) + return render(request, 'windedit.html', {'workout':row, - 'message': message, - 'successmessage': successmessage, 'teams':get_my_teams(request.user), 'interactiveplot':script, 'form':form, @@ -3633,8 +3637,9 @@ def workout_stream_view(request,id=0,message="",successmessage=""): else: message = "Invalid Form" - kwargs = {'message':str(message), - 'id':str(id)} + messages.error(request,message) + kwargs = { + 'id':str(id)} url = reverse(workout_wind_view,kwargs=kwargs) response = HttpResponseRedirect(url) @@ -3646,12 +3651,12 @@ def workout_stream_view(request,id=0,message="",successmessage=""): script = res[0] div = res[1] + messages.info(request,successmessage) + messages.error(request,message) return render(request, 'streamedit.html', {'workout':row, - 'message': message, 'teams':get_my_teams(request.user), - 'successmessage': successmessage, 'interactiveplot':script, 'form':form, 'the_div':div}) @@ -3721,8 +3726,9 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""): successmessage = "Your calculations have been submitted. You will receive an email when they are done." - kwargs = {'successmessage':str(successmessage), - 'id':str(id)} + messages.info(request,successmessage) + kwargs = { + 'id':str(id)} url = reverse(workout_advanced_view,kwargs=kwargs) response = HttpResponseRedirect(url) @@ -3730,20 +3736,21 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""): else: message = "Invalid Form" - kwargs = {'message':str(message), - 'id':str(id)} + messages.error(request,message) + kwargs = { + 'id':str(id)} url = reverse(workout_otwsetpower_view,kwargs=kwargs) response = HttpResponseRedirect(url) else: form = AdvancedWorkoutForm(instance=row) + messages.error(request,message) + messages.info(request,successmessage) return render(request, 'otwsetpower.html', {'workout':row, 'teams':get_my_teams(request.user), - 'message': message, - 'successmessage': successmessage, 'form':form, }) @@ -3778,14 +3785,15 @@ def workout_geeky_view(request,id=0,message="",successmessage=""): div = res[1] except ValueError: pass - + + messages.error(request,message) + messages.info(request,successmessage) + if row.workouttype=='water': return render(request, 'otwgeeky.html', {'workout':row, 'teams':get_my_teams(request.user), - 'message': message, - 'successmessage': successmessage, 'interactiveplot':script, 'the_div':div}) else: @@ -3793,8 +3801,6 @@ def workout_geeky_view(request,id=0,message="",successmessage=""): 'advancededit.html', {'workout':row, 'teams':get_my_teams(request.user), - 'message': message, - 'successmessage': successmessage, 'interactiveplot':script, 'the_div':div}) @@ -4099,14 +4105,16 @@ def workout_advanced_view(request,id=0,message="",successmessage=""): div = res[1] except ValueError: pass - + + messages.error(request,message) + messages.info(request,successmessage) + + if row.workouttype=='water': return render(request, 'advancedotw.html', {'workout':row, 'teams':get_my_teams(request.user), - 'message': message, - 'successmessage': successmessage, 'interactiveplot':script, 'the_div':div}) else: @@ -4114,8 +4122,6 @@ def workout_advanced_view(request,id=0,message="",successmessage=""): 'advancededit.html', {'workout':row, 'teams':get_my_teams(request.user), - 'message': message, - 'successmessage': successmessage, 'interactiveplot':script, 'the_div':div}) @@ -4434,13 +4440,15 @@ def workout_biginteractive_view(request,id=0,message="",successmessage=""): res = interactive_bar_chart(id,promember=promember) script = res[0] div = res[1] - + + messages.error(request,message) + messages.info(request,successmessage) + + return render(request, 'biginteractive1.html', {'workout':row, 'teams':get_my_teams(request.user), - 'message': message, - 'successmessage': successmessage, 'interactiveplot':script, 'the_div':div, 'promember':promember, @@ -4476,13 +4484,13 @@ def workout_otwpowerplot_view(request,id=0,message="",successmessage=""): script = res[0] div = res[1] - + messages.error(request,message) + messages.info(request,successmessage) + return render(request, 'otwinteractive.html', {'workout':row, 'teams':get_my_teams(request.user), - 'message': message, - 'successmessage': successmessage, 'interactiveplot':script, 'the_div':div, 'mayedit':mayedit}) @@ -4523,20 +4531,21 @@ def workout_export_view(request,id=0, message="", successmessage=""): if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) - else: - return render(request, - 'export.html', - {'workout':row, - 'teams':get_my_teams(request.user), - 'message':message, - 'successmessage':successmessage, - 'c2userid':c2userid, - 'rkuserid':rkuserid, - }) + messages.error(request,message) + messages.info(request,successmessage) + + return render(request, + 'export.html', + {'workout':row, + 'teams':get_my_teams(request.user), + 'c2userid':c2userid, + 'rkuserid':rkuserid, + }) # @login_required() @@ -4558,14 +4567,15 @@ def workout_unsubscribe_view(request,id=0): form = WorkoutCommentForm() - message = 'You have been unsubscribed from new comment notifications for this workout' + successmessage = 'You have been unsubscribed from new comment notifications for this workout' + messages.info(request,successmessage) + return render(request, 'workout_comments.html', {'workout':w, 'teams':get_my_teams(request.user), 'comments':comments, - 'successmessage':message, 'form':form, }) @@ -4723,10 +4733,10 @@ def workout_edit_view(request,id=0,message="",successmessage=""): r.write_csv(row.csvfilename,gzip=True) dataprep.update_strokedata(id,r.df) successmessage = "Changes saved" + messages.info(request,successmessage) url = reverse(workout_edit_view, kwargs = { 'id':str(row.id), - 'successmessage':str(successmessage), }) response = HttpResponseRedirect(url) else: @@ -4778,6 +4788,8 @@ def workout_edit_view(request,id=0,message="",successmessage=""): gmscript = "" gmdiv = "" + messages.error(request,message) + messages.info(request,successmessage) # render page if (len(g)<=3): @@ -4786,8 +4798,6 @@ def workout_edit_view(request,id=0,message="",successmessage=""): 'workout':row, 'teams':get_my_teams(request.user), 'graphs1':g[0:3], - 'message': message, - 'successmessage': successmessage, 'gmscript': gmscript, 'gmdiv': gmdiv, }) @@ -4799,8 +4809,6 @@ def workout_edit_view(request,id=0,message="",successmessage=""): 'workout':row, 'graphs1':g[0:3], 'graphs2':g[3:6], - 'message': message, - 'successmessage': successmessage, 'gmscript': gmscript, 'gmdiv': gmdiv, }) @@ -5215,13 +5223,11 @@ def workout_stravaimport_view(request,message=""): s = "Token doesn't exist. Need to authorize" return HttpResponseRedirect("/rowers/me/stravaauthorize/") message = "Something went wrong in workout_stravaimport_view" + messages.error(request,message) if settings.DEBUG: return HttpResponse(res) else: - url = reverse(workouts_view, - kwargs = { - 'message': str(message) - }) + url = reverse(workouts_view) return HttpResponseRedirect(url) else: data = res.json() @@ -5229,7 +5235,6 @@ def workout_stravaimport_view(request,message=""): return render(request,'strava_list_import.html', {'data':data, 'teams':get_my_teams(request.user), - 'message':message, }) return HttpResponse(res) @@ -5245,13 +5250,12 @@ def workout_runkeeperimport_view(request,message=""): s = "Token doesn't exist. Need to authorize" return HttpResponseRedirect("/rowers/me/runkeeperauthorize/") message = "Something went wrong in workout_runkeeperimport_view" + messages.error(request,message) + if settings.DEBUG: return HttpResponse(res) else: - url = reverse(workouts_view, - kwargs = { - 'message': str(message) - }) + url = reverse(workouts_view) return HttpResponseRedirect(url) else: workouts = [] @@ -5268,7 +5272,6 @@ def workout_runkeeperimport_view(request,message=""): return render(request,'runkeeper_list_import.html', {'workouts':workouts, 'teams':get_my_teams(request.user), - 'message':message, }) return HttpResponse(res) @@ -5284,13 +5287,11 @@ def workout_underarmourimport_view(request,message=""): s = "Token doesn't exist. Need to authorize" return HttpResponseRedirect("/rowers/me/underarmourauthorize/") message = "Something went wrong in workout_underarmourimport_view" + messages.error(request,message) if settings.DEBUG: return HttpResponse(res) else: - url = reverse(workouts_view, - kwargs = { - 'message': str(message) - }) + url = reverse(workouts_view) return HttpResponseRedirect(url) else: workouts = [] @@ -5319,7 +5320,6 @@ def workout_underarmourimport_view(request,message=""): return render(request,'underarmour_list_import.html', {'workouts':workouts, 'teams':get_my_teams(request.user), - 'message':message, }) return HttpResponse(res) @@ -5335,13 +5335,11 @@ def workout_sporttracksimport_view(request,message=""): s = "Token doesn't exist. Need to authorize" return HttpResponseRedirect("/rowers/me/sporttracksauthorize/") message = "Something went wrong in workout_sporttracksimport_view" + messages.error(request,message) if settings.DEBUG: return HttpResponse(res) else: - url = reverse(workouts_view, - kwargs = { - 'message': str(message) - }) + url = reverse(workouts_view) return HttpResponseRedirect(url) else: workouts = [] @@ -5359,7 +5357,6 @@ def workout_sporttracksimport_view(request,message=""): return render(request,'sporttracks_list_import.html', {'workouts':workouts, 'teams':get_my_teams(request.user), - 'message':message, }) return HttpResponse(res) @@ -5378,13 +5375,11 @@ def c2listdebug_view(request,message=""): if (res.status_code != 200): message = "Something went wrong in workout_c2import_view (C2 token renewal)" + messages.error(request,message) if settings.DEBUG: return HttpResponse(res) else: - url = reverse(workouts_view, - kwargs = { - 'message': str(message) - }) + url = reverse(workouts_view) return HttpResponseRedirect(url) else: workouts = [] @@ -5406,7 +5401,7 @@ def c2listdebug_view(request,message=""): 'c2_list_import2.html', {'workouts':workouts, 'teams':get_my_teams(request.user), - 'message':message}) + }) # List of workouts available on Concept2 logbook - for import @login_required() @@ -5420,13 +5415,11 @@ def workout_c2import_view(request,message=""): if (res.status_code != 200): message = "Something went wrong in workout_c2import_view (C2 token refresh)" + messages.error(request,message) if settings.DEBUG: return HttpResponse(res) else: - url = reverse(workouts_view, - kwargs = { - 'message': str(message) - }) + url = reverse(workouts_view) return HttpResponseRedirect(url) else: workouts = [] @@ -5448,7 +5441,7 @@ def workout_c2import_view(request,message=""): 'c2_list_import2.html', {'workouts':workouts, 'teams':get_my_teams(request.user), - 'message':message}) + }) # Import a workout from Strava @login_required() @@ -5471,16 +5464,13 @@ def workout_getstravaworkout_view(request,stravaid): w.uploadedtostrava=stravaid w.save() if message: - url = reverse(workout_edit_view, - kwargs = { - 'message':message, - 'id':id, - }) - else: - url = reverse(workout_edit_view, - kwargs = { - 'id':id, - }) + messages.error(request,message) + + + url = reverse(workout_edit_view, + kwargs = { + 'id':id, + }) return HttpResponseRedirect(url) @@ -5496,16 +5486,12 @@ def workout_getrunkeeperworkout_view(request,runkeeperid): thetoken = runkeeper_open(request.user) w.save() if message: - url = reverse(workout_edit_view, - kwargs = { - 'id':id, - 'message':message, - }) - else: - url = reverse(workout_edit_view, - kwargs = { - 'id':id, - }) + messages.error(request,message) + + url = reverse(workout_edit_view, + kwargs = { + 'id':id, + }) return HttpResponseRedirect(url) # Imports a workout from Underarmour @@ -5519,16 +5505,12 @@ def workout_getunderarmourworkout_view(request,underarmourid): w.uploadedtounderarmour=underarmourid w.save() if message: - url = reverse(workout_edit_view, - kwargs = { - 'id':id, - 'message':message, - }) - else: - url = reverse(workout_edit_view, - kwargs = { - 'id':id, - }) + messages.error(request,message) + + url = reverse(workout_edit_view, + kwargs = { + 'id':id, + }) return HttpResponseRedirect(url) @@ -5541,25 +5523,19 @@ def workout_getsporttracksworkout_view(request,sporttracksid): id,message = add_workout_from_stdata(request.user,sporttracksid,data) if id==0: - url = reverse(workouts_view, - kwargs = { - 'message':message, - }) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) w = Workout.objects.get(id=id) w.uploadedtosporttracks=sporttracksid w.save() if message: - url = reverse(workout_edit_view, - kwargs = { - 'id':id, - 'message':message, - }) - else: - url = reverse(workout_edit_view, - kwargs = { - 'id':id, - }) + messages.error(request,message) + + url = reverse(workout_edit_view, + kwargs = { + 'id':id, + }) return HttpResponseRedirect(url) # Imports a workout from Concept2 @@ -5585,10 +5561,8 @@ def workout_getc2workout_view(request,c2id): res2 = c2stuff.get_c2_workout_strokes(request.user,c2id) else: message = "This workout does not have any stroke data associated with it" - url = reverse(workout_c2import_view, - kwargs={ - 'message':message, - }) + messages.error(request,message) + url = reverse(workout_c2import_view) return HttpResponseRedirect(url) # We have stroke data @@ -5631,42 +5605,29 @@ def workout_getc2workout_view(request,c2id): dataprep.update_strokedata(w.id,rowdata.df) if message: - url = reverse(workout_edit_view, - kwargs = { - 'message':message, - 'id':id, - }) - else: - url = reverse(workout_edit_view, - kwargs = { - 'id':id, - }) + messages.error(request,message) + + url = reverse(workout_edit_view, + kwargs = { + 'id':id, + }) return HttpResponseRedirect(url) else: # message = json.loads(s.text)['message'] message = json.loads(res2.text)['message'] - url = reverse(workout_c2import_view, - kwargs={ - 'message':message, - }) - return HttpResponseRedirect(url) + messages.error(request,message) - url = reverse(workout_c2import_view, - kwargs={ - 'message':message, - }) + url = reverse(workout_c2import_view) return HttpResponseRedirect(url) else: message = "Received error code from Concept2" + messages.error(request,message) if settings.DEBUG: return HttpResponse(res) else: - url = reverse(workout_c2import_view, - kwargs={ - 'message':message, - }) + url = reverse(workout_c2import_view) return HttpResponseRedirect(url) # This is the main view for processing uploaded files @@ -5789,16 +5750,12 @@ def workout_upload_view(request,message="", return response else: if message: - url = reverse(workout_edit_view, - kwargs = { - 'id':id, - 'message':message, - }) - else: - url = reverse(workout_edit_view, - kwargs = { - 'id':id, - }) + messages.error(request,message) + + url = reverse(workout_edit_view, + kwargs = { + 'id':id, + }) response = HttpResponseRedirect(url) w = Workout.objects.get(id=id) @@ -5945,7 +5902,7 @@ def workout_upload_view(request,message="", {'form':form, 'teams':get_my_teams(request.user), 'optionsform': optionsform, - 'message':message}) + }) return response else: @@ -5955,7 +5912,7 @@ def workout_upload_view(request,message="", {'form':form, 'teams':get_my_teams(request.user), 'optionsform': optionsform, - 'message':message}) + }) # This is the main view for processing uploaded files @user_passes_test(iscoachmember,login_url="/",redirect_field_name=None) @@ -5995,14 +5952,14 @@ def team_workout_upload_view(request,message="", r = Rower.objects.get(user=u) else: message = 'Please select a rower' + messages.error(request,message) + messages.info(request,successmessage) response = render(request, 'team_document_form.html', {'form':form, 'teams':get_my_teams(request.user), 'optionsform': optionsform, 'rowerform': rowerform, - 'message':message, - 'successmessage':successmessage, }) return response @@ -6041,19 +5998,10 @@ def team_workout_upload_view(request,message="", return response else: - if message: - successmessage = "The workout was added to the user's account" - url = reverse(team_workout_upload_view, - kwargs = { - 'message':message, - 'successmessage':successmessage, - }) - else: - successmessage = "The workout was added to the user's account" - url = reverse(team_workout_upload_view, - kwargs = { - 'successmessage':successmessage, - }) + successmessage = "The workout was added to the user's account" + messages.info(request,successmessage) + + url = reverse(team_workout_upload_view) response = HttpResponseRedirect(url) w = Workout.objects.get(id=id) @@ -6108,14 +6056,13 @@ def team_workout_upload_view(request,message="", else: + response = render(request, 'team_document_form.html', {'form':form, 'teams':get_my_teams(request.user), 'optionsform': optionsform, 'rowerform': rowerform, - 'message':message, - 'successmessage':successmessage, }) return response @@ -6130,8 +6077,6 @@ def team_workout_upload_view(request,message="", 'teams':get_my_teams(request.user), 'optionsform': optionsform, 'rowerform':rowerform, - 'message':message, - 'successmessage':successmessage, }) @@ -6163,10 +6108,9 @@ def workout_delete_view(request,id=0): # files are removed by pre-delete in models.py row.delete() - url = reverse(workouts_view,kwargs={ - 'successmessage': "Workout deleted", - } - ) + messages.info(request,'Workout deleted') + url = reverse(workouts_view) + return HttpResponseRedirect(url) except Workout.DoesNotExist: @@ -6201,12 +6145,9 @@ def graph_delete_view(request,id=0): raise PermissionDenied("You are not allowed to delete this graph") else: img.delete() - - url = reverse(workouts_view,kwargs={ - 'successmessage': "Graph deleted", - } - - ) + messages.info(request,'Graph deleted') + + url = reverse(workouts_view) return HttpResponseRedirect(url) except GraphImage.DoesNotExist: @@ -6307,12 +6248,12 @@ def workout_summary_restore_view(request,id,message="",successmessage=""): pass - url = reverse(workout_summary_edit_view,kwargs={ - 'id':id, - 'successmessage': "Original Interval Data Restored", - } - - ) + messages.info(request,'Original Interval Data Restored') + url = reverse(workout_summary_edit_view, + kwargs={ + 'id':id, + } + ) return HttpResponseRedirect(url) # Fuse two workouts @@ -6342,18 +6283,15 @@ def workout_fusion_view(request,id1=0,id2=1): title='Fused data', parent=w1) if message != None: - url = reverse(workout_edit_view, - kwargs={ - 'message':message, - 'id':idnew, - }) + messages.error(request,message) else: successmessage = 'Data fused' - url = reverse(workout_edit_view, - kwargs={ - 'successmessage':successmessage, - 'id':idnew, - }) + messages.info(request,message) + + url = reverse(workout_edit_view, + kwargs={ + 'id':idnew, + }) return HttpResponseRedirect(url) else: @@ -6570,8 +6508,6 @@ def workout_summary_edit_view(request,id,message="",successmessage="" 'teams':get_my_teams(request.user), 'intervalstats':intervalstats, 'nrintervals':nrintervals, - 'message': message, - 'successmessage': successmessage, 'interactiveplot':script, 'the_div':div, 'intervalstring':s, @@ -6622,11 +6558,13 @@ def rower_favoritecharts_view(request): FavoriteChart.objects.filter(user=r).delete() FavoriteChart.objects.bulk_create(new_instances) successmessage = "You have updated your favorites" + messages.info(request,message) if len(new_instances)==0: FavoriteChartFormSet=formset_factory(FavoriteForm,formset=BaseFavoriteFormSet,extra=1) favorites_formset = FavoriteChartFormSet() except IntegrityError: message = "something went wrong" + messages.error(request,message) else: favorites_formset = FavoriteChartFormSet(initial=favorites_data) @@ -6634,9 +6572,7 @@ def rower_favoritecharts_view(request): context = { 'favorites_formset':favorites_formset, - 'message':message, 'teams':get_my_teams(request.user), - 'successmessage':successmessage, } @@ -6671,6 +6607,7 @@ def rower_edit_view(request,message=""): r.rest = max(min(rest,250),10) r.save() successmessage = "Your Heart Rate data were changed" + messages.info(request,successmessage) form = RowerForm(instance=r) powerform = RowerPowerForm(instance=r) powerzonesform = RowerPowerZonesForm(instance=r) @@ -6684,7 +6621,6 @@ def rower_edit_view(request,message=""): 'rower':r, 'accountform':accountform, 'userform':userform, - 'successmessage':successmessage, }) except Rower.DoesNotExist: message = "Funny. This user doesn't exist." @@ -6781,6 +6717,7 @@ def rower_edit_view(request,message=""): r.powerzones = powerzones r.save() successmessage = "Your Power Zone data were changed" + messages.info(request,successmessage) form = RowerForm(instance=r) accountform = AccountRowerForm(instance=r) userform = UserForm(instance=request.user) @@ -6794,11 +6731,11 @@ def rower_edit_view(request,message=""): 'userform':userform, 'accountform':accountform, 'rower':r, - 'successmessage':successmessage, }) except Rower.DoesNotExist: message = "Funny. This user doesn't exist." - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) response = HttpResponseRedirect(url) return response else: @@ -6844,6 +6781,7 @@ def rower_edit_view(request,message=""): accountform = AccountRowerForm(instance=r) userform = UserForm(instance=u) successmessage = 'Account Information changed' + messages.info(request,successmessage) return render(request, 'rower_form.html', {'form':form, 'teams':get_my_teams(request.user), @@ -6852,7 +6790,6 @@ def rower_edit_view(request,message=""): 'accountform':accountform, 'userform':userform, 'rower':r, - 'successmessage':successmessage, }) else: form = RowerForm(instance=r) @@ -7096,7 +7033,7 @@ def strokedatajson(request,id): import teams @login_required() -def team_view(request,id=0,message='',successmessage=''): +def team_view(request,id=0): ismember = 0 hasrequested = 0 r = Rower.objects.get(user=request.user) @@ -7139,15 +7076,13 @@ def team_view(request,id=0,message='',successmessage=''): ismember = 1 - + return render(request, 'team.html', { 'team':t, 'teams':get_my_teams(request.user), 'members':members, 'inviteform':inviteform, - 'message':message, - 'successmessage':successmessage, 'ismember':ismember, 'hasrequested':hasrequested, }) @@ -7203,6 +7138,8 @@ def rower_teams_view(request,message='',successmessage=''): clubsize = teams.count_invites(request.user)+teams.count_club_members(request.user) max_clubsize = r.clubsize + messages.info(request,successmessage) + messages.error(request,message) return render(request, 'teams.html', { 'teams':ts, @@ -7214,8 +7151,6 @@ def rower_teams_view(request,message='',successmessage=''): 'requests':requests, 'myrequests':myrequests, 'form':form, - 'message':message, - 'successmessage':successmessage, 'myinvites':myinvites, }) @@ -7223,15 +7158,13 @@ def rower_teams_view(request,message='',successmessage=''): def invitation_revoke_view(request,id): res,text = teams.revoke_invite(request.user,id) if res: + messages.info(request,text) successmessage = text - url = reverse(rower_teams_view,kwargs={ - 'successmessage':successmessage - }) else: message = text - url = reverse(rower_teams_view,kwargs={ - 'message':message - }) + messages.error(request,text) + + url = reverse(rower_teams_view) return HttpResponseRedirect(url) @@ -7241,15 +7174,11 @@ def manager_member_drop_view(request,teamid,userid, rower = Rower.objects.get(user__id=userid) res, text = teams.mgr_remove_member(teamid,request.user,rower) if res: - successmessage = text - url = reverse(rower_teams_view,kwargs={ - 'successmessage':successmessage - }) + messages.info(request,text) else: - message = text - url = reverse(rower_teams_view,kwargs={ - 'message':message - }) + messages.error(request,text) + + url = reverse(rower_teams_view) return HttpResponseRedirect(url) @@ -7278,17 +7207,12 @@ def team_requestmembership_view(request,teamid,userid): res,text = teams.create_request(t,userid) if res: - successmessage = text - url = reverse(team_view,kwargs={ - 'id':teamid, - 'successmessage': successmessage, - }) - + messages.info(request,text) else: - message = text - url = reverse(team_view,kwargs={ - 'id':teamid, - 'message': message, + messages.error(request,text) + + url = reverse(team_view,kwargs={ + 'id':int(teamid), }) @@ -7299,15 +7223,12 @@ def request_revoke_view(request,id=0): res,text = teams.revoke_request(request.user,id) if res: - successmessage = text - url = reverse(rower_teams_view,kwargs={ - 'successmessage':successmessage, - }) + messages.info(request,text) + else: - message = text - url = reverse(rower_teams_view,kwargs={ - 'message':message, - }) + messages.error(request,text) + + url = reverse(rower_teams_view) return HttpResponseRedirect(url) @@ -7316,15 +7237,11 @@ def request_reject_view(request,id=0): res,text = teams.reject_request(request.user,id) if res: - successmessage = text - url = reverse(rower_teams_view,kwargs={ - 'successmessage':successmessage, - }) + messages.info(request,text) else: - message = text - url = reverse(rower_teams_view,kwargs={ - 'message':message, - }) + messages.error(request,text) + + url = reverse(rower_teams_view) return HttpResponseRedirect(url) @@ -7333,15 +7250,11 @@ def invitation_reject_view(request,id=0): res,text = teams.reject_invitation(request.user,id) if res: - successmessage = text - url = reverse(rower_teams_view,kwargs={ - 'successmessage':successmessage, - }) + messages.info(request,text) else: - message = text - url = reverse(rower_teams_view,kwargs={ - 'message':message, - }) + messages.error(request,text) + + url = reverse(rower_teams_view) return HttpResponseRedirect(url) @@ -7352,17 +7265,15 @@ def rower_invitations_view(request,code=None,message='',successmessage=''): teams.remove_expired_invites() res,text = teams.process_invite_code(request.user,code) if res: - successmessage = text + messages.info(request,text) teamid=res url = reverse(team_view,kwargs={ 'id':teamid, - 'successmessage': successmessage, }) else: - message = text - url = reverse(rower_teams_view,kwargs={ - 'message':message, - }) + messages.error(request,text) + + url = reverse(rower_teams_view) return HttpResponseRedirect(url) @@ -7389,19 +7300,15 @@ def team_edit_view(request,id=0): res,message=teams.update_team(t,name,manager,private,notes, viewing) if res: - url = reverse(team_view, - kwargs={ - 'id':id, - 'successmessage':message - } - ) + messages.info(request,message) else: - url = reverse(team_view, - kwargs={ - 'id':id, - 'message':message - } - ) + messages.error(request,message) + + url = reverse(team_view, + kwargs={ + 'id':id, + } + ) response = HttpResponseRedirect(url) return response From 514e54e81493a2a064513b00140a97479189dc86 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 11 May 2017 11:03:17 +0200 Subject: [PATCH 4/7] bug fixes after testing --- rowers/tests.py | 3 +- rowers/views.py | 145 ++++++++++++++++++++++++++++-------------------- 2 files changed, 88 insertions(+), 60 deletions(-) diff --git a/rowers/tests.py b/rowers/tests.py index 7eb5a4b2..8ddbfaed 100644 --- a/rowers/tests.py +++ b/rowers/tests.py @@ -702,7 +702,8 @@ class ViewTest(TestCase): f.close() - self.assertRedirects(response, expected_url='/rowers/workout/upload/c/This%20C2%20logbook%20summary%20does%20not%20contain%20stroke%20data.%20Please%20download%20the%20Export%20Stroke%20Data%20file%20from%20the%20workout%20details%20on%20the%20C2%20logbook.', + self.assertRedirects(response, + expected_url='/rowers/workout/upload/', status_code=302,target_status_code=200) self.assertEqual(response.status_code, 200) diff --git a/rowers/views.py b/rowers/views.py index f1fd8ce9..66c88176 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -1229,7 +1229,7 @@ def workout_strava_upload_view(request,id=0): r.stravatoken, description=w.notes+'\n from '+w.workoutsource+' via rowsandall.com') if res==0: - message = mes + messages.error(request,mes) w.uploadedtostrava = -1 w.save() try: @@ -1248,7 +1248,8 @@ def workout_strava_upload_view(request,id=0): w.save() os.remove(tcxfile) url = "/rowers/workout/"+str(w.id)+"/edit" - successmessage = mes + + messages.info(request,mes) except: with open("media/stravaerrors.log","a") as errorlog: errorstring = str(sys.exc_info()[0]) @@ -1256,8 +1257,10 @@ def workout_strava_upload_view(request,id=0): errorlog.write(timestr+errorstring+"\r\n") errorlog.write("views.py line 826\r\n") message = 'Error: '+errorstring + messages.error(request,message) else: message = "Strava Upload error" + messages.error(request,message) w.uploadedtostrava = -1 w.save() url = reverse(workout_export_view, @@ -1275,6 +1278,7 @@ def workout_strava_upload_view(request,id=0): response = HttpResponseRedirect(url) except ActivityUploadFailed as e: message = "Strava Upload error: %s" % e + messages.error(request,message) w.uploadedtostrava = -1 w.save() os.remove(tcxfile) @@ -1283,16 +1287,6 @@ def workout_strava_upload_view(request,id=0): 'id':str(w.id), }) response = HttpResponseRedirect(url) - # except TimeoutExceeded as e: - # w.uploadedtostrava = -1 - # w.save() - # url = reverse(workout_export_view, - # kwargs = { - # 'id':str(w.id), - # 'message':'Strava Upload attempted. No response within 10 seconds. You may be OK. Check on Strava', - # }) - # response = HttpResponseRedirect(url) - return response @@ -1363,6 +1357,7 @@ def workout_runkeeper_upload_view(request,id=0): # check for duplicate error first if (response.status_code == 409 ): message = "Duplicate error" + messages.error(request,message) w.uploadedtorunkeeper = -1 w.save() elif (response.status_code == 201 or response.status_code==200): @@ -1429,6 +1424,7 @@ def workout_underarmour_upload_view(request,id=0): # check for duplicate error first if (response.status_code == 409 ): message = "Duplicate error" + messages.error(request,message) w.uploadedtounderarmour = -1 w.save() elif (response.status_code == 201 or response.status_code==200): @@ -1440,7 +1436,7 @@ def workout_underarmour_upload_view(request,id=0): else: s = response message = "Something went wrong in workout_underarmour_upload_view: %s - %s" % (s.reason,s.text) - + messages.error(request,message) else: message = "You are not authorized to upload this workout" messages.error(request,message) @@ -1491,6 +1487,7 @@ def workout_sporttracks_upload_view(request,id=0): # check for duplicate error first if (response.status_code == 409 ): message = "Duplicate error" + messages.error(request,message) w.uploadedtosporttracks = -1 w.save() elif (response.status_code == 201 or response.status_code==200): @@ -1503,11 +1500,10 @@ def workout_sporttracks_upload_view(request,id=0): else: s = response message = "Something went wrong in workout_sporttracks_upload_view: %s" % s.reason - + messages.error(request,message) else: message = "You are not authorized to upload this workout" - - messages.error(request,message) + messages.error(request,message) url = reverse(workout_export_view, kwargs = { @@ -1664,7 +1660,8 @@ def rower_underarmour_token_refresh(request): r.save() successmessage = "Tokens refreshed. Good to go" - return imports_view(request,successmessage=successmessage) + messages.info(request,successmessage) + return imports_view(request) # TrainingPeaks token refresh. URL for manual refresh. Not visible to users @@ -1687,7 +1684,8 @@ def rower_tp_token_refresh(request): r.save() successmessage = "Tokens refreshed. Good to go" - return imports_view(request,successmessage=successmessage) + messages.info(request,successmessage) + return imports_view(request) # SportTracks token refresh. URL for manual refresh. Not visible to users @@ -1710,7 +1708,8 @@ def rower_sporttracks_token_refresh(request): r.save() successmessage = "Tokens refreshed. Good to go" - return imports_view(request,successmessage=successmessage) + messages.info(request,successmessage) + return imports_view(request) # Concept2 Callback @@ -1721,13 +1720,15 @@ def rower_process_callback(request): res = c2stuff.get_token(code) except MultiValueDictKeyError: message = "The resource owner or authorization server denied the request" - return imports_view(request,message=message) + messages.error(request,message) + return imports_view(request) access_token = res[0] if access_token == 0: message = res[1] message += ' Contact info@rowsandall.com if this behavior persists.' - return imports_view(request,message=message) + messages.error(request,message) + return imports_view(request) expires_in = res[1] refresh_token = res[2] @@ -1741,7 +1742,8 @@ def rower_process_callback(request): r.save() successmessage = "Tokens stored. Good to go" - return imports_view(request,successmessage=successmessage) + messages.info(request,successmessage) + return imports_view(request) # The imports page @login_required() @@ -1757,8 +1759,8 @@ def imports_view(request,successmessage="",message=""): @login_required() def test_reverse_view(request): successmessage = "Tokens stored. Good to go" - - return imports_view(request,successmessage=successmessage) + messages.info(request,successmessage) + return imports_view(request) # dummy @login_required() @@ -1776,7 +1778,8 @@ def rower_process_stravacallback(request): except MultiValueDictKeyError: message = "access error" - return imports_view(request,message=message) + messages.error(reqeust,message) + return imports_view(request) res = stravastuff.get_token(code) @@ -1789,10 +1792,12 @@ def rower_process_stravacallback(request): r.save() successmessage = "Tokens stored. Good to go" - return imports_view(request,successmessage=successmessage) + messages.info(request,successmessage) + return imports_view(request) else: message = "Something went wrong with the Strava authorization" - return imports_view(request,message=message) + messages.error(request,message) + return imports_view(request) # Process Runkeeper callback @login_required() @@ -1806,7 +1811,8 @@ def rower_process_runkeepercallback(request): r.save() successmessage = "Tokens stored. Good to go" - return imports_view(request,successmessage=successmessage) + messages.info(request,successmessage) + return imports_view(request) # Process SportTracks callback @login_required() @@ -1828,7 +1834,8 @@ def rower_process_sporttrackscallback(request): r.save() successmessage = "Tokens stored. Good to go" - return imports_view(request,successmessage=successmessage) + messages.info(request,successmessage) + return imports_view(request) # Process Underarmour callback @login_required() @@ -1850,7 +1857,8 @@ def rower_process_underarmourcallback(request): r.save() successmessage = "Tokens stored. Good to go" - return imports_view(request,successmessage=successmessage) + messages.info(request,successmessage) + return imports_view(request) # Process TrainingPeaks callback @login_required() @@ -1872,7 +1880,8 @@ def rower_process_tpcallback(request): r.save() successmessage = "Tokens stored. Good to go" - return imports_view(request,successmessage=successmessage) + messages.info(request,successmessage) + return imports_view(request) # Process Own API callback - for API testing purposes @login_required() @@ -2652,7 +2661,8 @@ def workout_recalcsummary_view(request,id=0): if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) @@ -2688,7 +2698,8 @@ def workout_makepublic_view(request,id, if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) @@ -2721,7 +2732,8 @@ def workout_setprivate_view(request,id, if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) @@ -3226,7 +3238,8 @@ def workout_undo_smoothenpace_view(request,id=0,message="",successmessage=""): if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) @@ -3257,7 +3270,8 @@ def workout_smoothenpace_view(request,id=0,message="",successmessage=""): if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) @@ -3351,7 +3365,8 @@ def workout_downloadwind_view(request,id=0, f1 = row.csvfilename if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) @@ -3418,7 +3433,8 @@ def workout_downloadmetar_view(request,id=0, f1 = row.csvfilename if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) @@ -3483,7 +3499,8 @@ def workout_wind_view(request,id=0,message="",successmessage=""): if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) @@ -3603,7 +3620,8 @@ def workout_stream_view(request,id=0,message="",successmessage=""): if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) @@ -3671,7 +3689,8 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""): if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) @@ -3768,7 +3787,8 @@ def workout_geeky_view(request,id=0,message="",successmessage=""): if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) @@ -4018,7 +4038,8 @@ def workout_stats_view(request,id=0,message="",successmessage=""): datadf,row = dataprep.getrowdata_db(id=id) if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to see the stats of this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) datadf = dataprep.clean_df_stats(datadf,workstrokesonly=workstrokesonly) @@ -4088,7 +4109,8 @@ def workout_advanced_view(request,id=0,message="",successmessage=""): if (checkworkoutuser(request.user,row)==False): message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) return HttpResponseRedirect(url) @@ -4741,7 +4763,8 @@ def workout_edit_view(request,id=0,message="",successmessage=""): response = HttpResponseRedirect(url) else: message = "You are not allowed to change this workout" - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) response = HttpResponseRedirect(url) @@ -5448,8 +5471,8 @@ def workout_c2import_view(request,message=""): def workout_getstravaworkout_view(request,stravaid): res = stravastuff.get_strava_workout(request.user,stravaid) if not res[0]: - message = res[1] - return imports_view(request,message=message) + messages.error(res[1]) + return imports_view(request) strokedata = res[1] data = res[0] @@ -5632,7 +5655,7 @@ def workout_getc2workout_view(request,c2id): # This is the main view for processing uploaded files @login_required() -def workout_upload_view(request,message="", +def workout_upload_view(request, uploadoptions={ 'makeprivate':False, 'make_plot':False, @@ -5738,14 +5761,14 @@ def workout_upload_view(request,message="", title = t, notes='') if not id: - url = reverse(workout_upload_view, - args=[str(message)]) + messages.error(request,message) + url = reverse(workout_upload_view) response = HttpResponseRedirect(url) return response elif id == -1: message = 'The zip archive will be processed in the background. The files in the archive will only be uploaded without the extra actions. You will receive email when the workouts are ready.' - url = reverse(workout_upload_view, - args=[str(message)]) + messages.info(request,message) + url = reverse(workout_upload_view) response = HttpResponseRedirect(url) return response else: @@ -5992,8 +6015,8 @@ def team_workout_upload_view(request,message="", title = t, notes='') if not id: - url = reverse(team_workout_upload_view, - args=[str(message)]) + messages.error(request,message) + url = reverse(team_workout_upload_view) response = HttpResponseRedirect(url) return response @@ -6624,7 +6647,8 @@ def rower_edit_view(request,message=""): }) except Rower.DoesNotExist: message = "Funny. This user doesn't exist." - url = reverse(workouts_view,args=[str(message)]) + messages.error(request,message) + url = reverse(workouts_view) response = HttpResponseRedirect(url) else: message = HttpResponse("invalid form") @@ -6642,8 +6666,7 @@ def rower_edit_view(request,message=""): 'powerform':powerform, 'rower':r, }) - # url = reverse(rower_edit_view,args=[str(message)]) - # response = HttpResponseRedirect(url) + return response @@ -6667,11 +6690,13 @@ def rower_edit_view(request,message=""): r.pw_an = an r.save() message = "Functional Threshold Value Changed" - url = reverse(rower_edit_view,args=[str(message)]) + messages.info(request,message) + url = reverse(rower_edit_view) response = HttpResponseRedirect(url) except Rower.DoesNotExist: message = "Funny. This user doesn't exist." - url = reverse(rower_edit_view,args=[str(message)]) + messages.error(request,message) + url = reverse(rower_edit_view) response = HttpResponseRedirect(url) else: message = HttpResponse("invalid form") @@ -7193,6 +7218,8 @@ def manager_requests_view(request,code=None,message='',successmessage=''): message = text successmessage = '' + messages.info(request,successmessage) + message.error(request,message) url = reverse(rower_teams_view,kwargs={ }) return HttpResponseRedirect(url) From 4a10584733ed3144529a76686798c9fdd04915d4 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 11 May 2017 11:58:44 +0200 Subject: [PATCH 5/7] some fixes after testing --- rowers/models.py | 4 +- rowers/templates/summary_edit.html | 4 +- rowers/urls.py | 112 ++++++++++++++--------------- rowers/views.py | 80 +++++++++++---------- 4 files changed, 103 insertions(+), 97 deletions(-) diff --git a/rowers/models.py b/rowers/models.py index 241df8fb..2b6a1531 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -327,9 +327,9 @@ class BaseFavoriteFormSet(BaseFormSet): def checkworkoutuser(user,workout): try: r = Rower.objects.get(user=user) - return (workout.user == r) + return workout.user == r except Rower.DoesNotExist: - return(False) + return False # Workout diff --git a/rowers/templates/summary_edit.html b/rowers/templates/summary_edit.html index 5d7c98e3..8c3cf177 100644 --- a/rowers/templates/summary_edit.html +++ b/rowers/templates/summary_edit.html @@ -136,7 +136,7 @@

Updated Summary

-
+ {% csrf_token %} @@ -200,4 +200,4 @@
-{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/rowers/urls.py b/rowers/urls.py index 30419327..f4ce2529 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -148,9 +148,9 @@ urlpatterns = [ url(r'^cumstats/$',views.cumstats), url(r'^histo-all/$',views.histo_all), url(r'^(?P\d+)/histo-all/$',views.histo_all), - url(r'^graph/(\d+)/$',views.graph_show_view), - url(r'^graph/(\d+)/deleteconfirm$',views.graph_delete_confirm_view), - url(r'^graph/(\d+)/delete$',views.graph_delete_view), + url(r'^graph/(?P\d+)/$',views.graph_show_view), + url(r'^graph/(?P\d+)/deleteconfirm$',views.graph_delete_confirm_view), + url(r'^graph/(?P\d+)/delete$',views.graph_delete_view), url(r'^workout/upload/team/$',views.team_workout_upload_view), url(r'^workout/upload/$',views.workout_upload_view), url(r'^workout/(?P\d+)/histo$',views.workout_histo_view), @@ -159,87 +159,87 @@ urlpatterns = [ url(r'^workout/(?P\d+)/unsubscribe$',views.workout_unsubscribe_view), url(r'^workout/(?P\d+)/export$',views.workout_export_view), url(r'^workout/(?P\d+)/comment$',views.workout_comment_view), - url(r'^workout/(\d+)/emailtcx$',views.workout_tcxemail_view), - url(r'^workout/(\d+)/emailcsv$',views.workout_csvemail_view), - url(r'^workout/compare/(\d+)/$',views.workout_comparison_list), + url(r'^workout/(?P\d+)/emailtcx$',views.workout_tcxemail_view), + url(r'^workout/(?P\d+)/emailcsv$',views.workout_csvemail_view), + url(r'^workout/compare/(?P\d+)/$',views.workout_comparison_list), url(r'^workout/compare2/(?P\d+)/(?P\d+)/(?P\w+.*)/(?P\w+.*)/$',views.workout_comparison_view), url(r'^workout/compare/(?P\d+)/(?P\d+-\d+-\d+)/(?P\w+.*)$',views.workout_comparison_list), url(r'^workout/(?P\d+)/edit$',views.workout_edit_view), url(r'^workout/(?P\d+)/setprivate$',views.workout_setprivate_view), url(r'^workout/(?P\d+)/makepublic$',views.workout_makepublic_view), url(r'^workout/(?P\d+)/geeky$',views.workout_geeky_view), - url(r'^workout/(\d+)/advanced$',views.workout_advanced_view), - url(r'^workout/(\d+)/stats$',views.workout_stats_view), - url(r'^workout/(\d+)/otwsetpower$',views.workout_otwsetpower_view), - url(r'^workout/(\d+)/interactiveotwplot$',views.workout_otwpowerplot_view), - url(r'^workout/(\d+)/wind$',views.workout_wind_view), + url(r'^workout/(?P\d+)/advanced$',views.workout_advanced_view), + url(r'^workout/(?P\d+)/stats$',views.workout_stats_view), + url(r'^workout/(?P\d+)/otwsetpower$',views.workout_otwsetpower_view), + url(r'^workout/(?P\d+)/interactiveotwplot$',views.workout_otwpowerplot_view), + url(r'^workout/(?P\d+)/wind$',views.workout_wind_view), url(r'^workout/(?P\d+)/darkskywind$',views.workout_downloadwind_view), url(r'^workout/(?P\d+)/metar/(?P\w+)$',views.workout_downloadmetar_view), - url(r'^workout/(\d+)/stream$',views.workout_stream_view), - url(r'^workout/(\d+)/crewnerdsummary$',views.workout_crewnerd_summary_view), - url(r'^workout/(\d+)/editintervals$',views.workout_summary_edit_view), - url(r'^workout/(\d+)/restore$',views.workout_summary_restore_view), - url(r'^workout/(\d+)/interactiveplot$',views.workout_biginteractive_view), - url(r'^workout/(\d+)/view$',views.workout_view), - url(r'^workout/(\d+)$',views.workout_view), + url(r'^workout/(?P\d+)/stream$',views.workout_stream_view), + url(r'^workout/(?P\d+)/crewnerdsummary$',views.workout_crewnerd_summary_view), + url(r'^workout/(?P\d+)/editintervals$',views.workout_summary_edit_view), + url(r'^workout/(?P\d+)/restore$',views.workout_summary_restore_view), + url(r'^workout/(?P\d+)/interactiveplot$',views.workout_biginteractive_view), + url(r'^workout/(?P\d+)/view$',views.workout_view), + url(r'^workout/(?P\d+)$',views.workout_view), url(r'^workout/fusion/(?P\d+)/(?P\d+)$',views.workout_fusion_view), - url(r'^workout/fusion/(\d+)/$',views.workout_fusion_list), + url(r'^workout/fusion/(?P\d+)/$',views.workout_fusion_list), url(r'^workout/fusion/(?P\d+)/(?P\d+-\d+-\d+)/(?P\w+.*)$',views.workout_fusion_list), 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/(\d+)/$',views.workout_view), - url(r'^workout/(\d+)/addtimeplot$',views.workout_add_timeplot_view), - url(r'^workout/(\d+)/addpiechart$',views.workout_add_piechart_view), - url(r'^workout/(\d+)/addpowerpiechart$',views.workout_add_power_piechart_view), - url(r'^workout/(\d+)/adddistanceplot$',views.workout_add_distanceplot_view), - url(r'^workout/(\d+)/adddistanceplot2$',views.workout_add_distanceplot2_view), - url(r'^workout/(\d+)/addotwpowerplot$',views.workout_add_otw_powerplot_view), - url(r'^workout/(\d+)/addtimeplot2$',views.workout_add_timeplot2_view), - url(r'^workout/(\d+)/delete$',views.workout_delete_view), - url(r'^workout/(\d+)/smoothenpace$',views.workout_smoothenpace_view), - url(r'^workout/(\d+)/undosmoothenpace$',views.workout_undo_smoothenpace_view), + 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+)/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), url(r'^workout/c2import/$',views.workout_c2import_view), url(r'^workout/stravaimport/$',views.workout_stravaimport_view), - url(r'^workout/c2import/(\d+)/$',views.workout_getc2workout_view), - url(r'^workout/stravaimport/(\d+)/$',views.workout_getstravaworkout_view), + url(r'^workout/c2import/(?P\d+)/$',views.workout_getc2workout_view), + url(r'^workout/stravaimport/(?P\d+)/$',views.workout_getstravaworkout_view), url(r'^workout/sporttracksimport/$',views.workout_sporttracksimport_view), - url(r'^workout/sporttracksimport/(\d+)/$',views.workout_getsporttracksworkout_view), + url(r'^workout/sporttracksimport/(?P\d+)/$',views.workout_getsporttracksworkout_view), url(r'^workout/runkeeperimport/$',views.workout_runkeeperimport_view), - url(r'^workout/runkeeperimport/(\d+)/$',views.workout_getrunkeeperworkout_view), + url(r'^workout/runkeeperimport/(?P\d+)/$',views.workout_getrunkeeperworkout_view), url(r'^workout/underarmourimport/$',views.workout_underarmourimport_view), - url(r'^workout/underarmourimport/(\d+)/$',views.workout_getunderarmourworkout_view), - url(r'^workout/(\d+)/deleteconfirm$',views.workout_delete_confirm_view), - url(r'^workout/(\d+)/c2uploadw/$',views.workout_c2_upload_view), - url(r'^workout/(\d+)/stravauploadw/$',views.workout_strava_upload_view), - url(r'^workout/(\d+)/recalcsummary/$',views.workout_recalcsummary_view), - url(r'^workout/(\d+)/sporttracksuploadw/$',views.workout_sporttracks_upload_view), - url(r'^workout/(\d+)/runkeeperuploadw/$',views.workout_runkeeper_upload_view), - url(r'^workout/(\d+)/underarmouruploadw/$',views.workout_underarmour_upload_view), - url(r'^workout/(\d+)/tpuploadw/$',views.workout_tp_upload_view), + url(r'^workout/underarmourimport/(?P\d+)/$',views.workout_getunderarmourworkout_view), + url(r'^workout/(?P\d+)/deleteconfirm$',views.workout_delete_confirm_view), + url(r'^workout/(?P\d+)/c2uploadw/$',views.workout_c2_upload_view), + url(r'^workout/(?P\d+)/stravauploadw/$',views.workout_strava_upload_view), + url(r'^workout/(?P\d+)/recalcsummary/$',views.workout_recalcsummary_view), + url(r'^workout/(?P\d+)/sporttracksuploadw/$',views.workout_sporttracks_upload_view), + url(r'^workout/(?P\d+)/runkeeperuploadw/$',views.workout_runkeeper_upload_view), + url(r'^workout/(?P\d+)/underarmouruploadw/$',views.workout_underarmour_upload_view), + url(r'^workout/(?P\d+)/tpuploadw/$',views.workout_tp_upload_view), url(r'^multi-compare$',views.multi_compare_view), url(r'^me/teams/$',views.rower_teams_view), url(r'^team/(?P\d+)/$',views.team_view), - url(r'^team/(\d+)/edit$',views.team_edit_view), - url(r'^team/(\d+)/leaveconfirm/$',views.team_leaveconfirm_view), - url(r'^team/(\d+)/leave/$',views.team_leave_view), - url(r'^team/(\d+)/deleteconfirm/$',views.team_deleteconfirm_view), - url(r'^team/(\d+)/requestmembership/(\d+)$',views.team_requestmembership_view), - url(r'^team/(\d+)/delete/$',views.team_delete_view), + url(r'^team/(?P\d+)/edit$',views.team_edit_view), + url(r'^team/(?P\d+)/leaveconfirm/$',views.team_leaveconfirm_view), + url(r'^team/(?P\d+)/leave/$',views.team_leave_view), + url(r'^team/(?P\d+)/deleteconfirm/$',views.team_deleteconfirm_view), + url(r'^team/(?P\d+)/requestmembership/(?P\d+)$',views.team_requestmembership_view), + url(r'^team/(?P\d+)/delete/$',views.team_delete_view), url(r'^team/create/$',views.team_create_view), - url(r'^me/team/(\d+)/drop/(\d+)$',views.manager_member_drop_view), - url(r'^me/invitation/(\d+)/reject$',views.invitation_reject_view), - url(r'^me/invitation/(\d+)/revoke$',views.invitation_revoke_view), + url(r'^me/team/(?P\d+)/drop/(?P\d+)$',views.manager_member_drop_view), + url(r'^me/invitation/(?P\d+)/reject$',views.invitation_reject_view), + url(r'^me/invitation/(?P\d+)/revoke$',views.invitation_revoke_view), url(r'^me/invitation/$',views.rower_invitations_view), url(r'^me/invitation/(\w+.*)/$',views.rower_invitations_view), - url(r'^me/request/(\d+)/revoke',views.request_revoke_view), - url(r'^me/request/(\d+)/reject',views.request_reject_view), + url(r'^me/request/(?P\d+)/revoke',views.request_revoke_view), + url(r'^me/request/(?P\d+)/reject',views.request_reject_view), url(r'^me/request/(\w+.*)/$',views.manager_requests_view), url(r'^me/request/$',views.manager_requests_view), url(r'^me/edit/$',views.rower_edit_view), url(r'^me/edit/(.+.*)/$',views.rower_edit_view), url(r'^me/c2authorize/$',views.rower_c2_authorize), - url(r'^me/revokeapp/(\d+)$',views.rower_revokeapp_view), + url(r'^me/revokeapp/(?P\d+)$',views.rower_revokeapp_view), url(r'^me/stravaauthorize/$',views.rower_strava_authorize), url(r'^me/sporttracksauthorize/$',views.rower_sporttracks_authorize), url(r'^me/underarmourauthorize/$',views.rower_underarmour_authorize), @@ -271,7 +271,7 @@ urlpatterns = [ url(r'^workout/compare/(?P\d+)/(?P\d+)/(?P\w+.*)/(?P\w+.*)/(?P\w+.*)$',views.workout_comparison_view2), url(r'^workout/compare/(?P\d+)/(?P\d+)/(?P\w+.*)/(?P\w+.*)/$',views.workout_comparison_view2), url(r'^test\_callback',views.rower_process_testcallback), - url(r'^workout/(\d+)/test\_strokedata$',views.strokedataform), + url(r'^workout/(?P\d+)/test\_strokedata$',views.strokedataform), ] if settings.DEBUG: diff --git a/rowers/views.py b/rowers/views.py index 66c88176..7a02cd87 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -2180,7 +2180,7 @@ def workout_forcecurve_view(request,id=0,workstrokesonly=False): 'the_div':div, 'js_res': js_resources, 'css_res':css_resources, - 'id':id, + 'id':int(id), 'mayedit':mayedit, 'workstrokesonly': not workstrokesonly, 'teams':get_my_teams(request.user), @@ -2199,7 +2199,7 @@ def workout_test_task_view(request,id=0): url = reverse(workout_edit_view, kwargs = { - 'id':str(id), + 'id':int(id), }) return HttpResponseRedirect(url) @@ -2232,7 +2232,7 @@ def workout_histo_view(request,id=0): 'histo_single.html', {'interactiveplot':script, 'the_div':div, - 'id':id, + 'id':int(id), 'mayedit':mayedit, 'teams':get_my_teams(request.user), }) @@ -2675,14 +2675,14 @@ def workout_recalcsummary_view(request,id=0): messages.info(request,successmessage) url = reverse(workout_edit_view, kwargs = { - 'id':str(id), + 'id':int(id), }) else: message = "Something went wrong. Could not update summary" messages.error(request,message) url = reverse(workout_edit_view, kwargs = { - 'id':str(id), + 'id':int(id), }) return HttpResponseRedirect(url) @@ -2717,7 +2717,7 @@ def workout_makepublic_view(request,id, url = reverse(workout_edit_view, kwargs = { - 'id':str(id), + 'id':int(id), }) return HttpResponseRedirect(url) @@ -2748,7 +2748,7 @@ def workout_setprivate_view(request,id, url = reverse(workout_edit_view, kwargs = { - 'id':str(id), + 'id':int(id), }) return HttpResponseRedirect(url) @@ -3090,7 +3090,7 @@ def workout_comparison_list(request,id=0,message='',successmessage='', messages.info(request,successmessage) return render(request, 'comparison_list.html', - {'id':id, + {'id':int(id), 'workout':row, 'workouts': workouts, 'last_name':u.last_name, @@ -3171,7 +3171,7 @@ def workout_fusion_list(request,id=0,message='',successmessage='', messages.error(request,message) return render(request, 'fusion_list.html', - {'id':id, + {'id':int(id), 'workout':row, 'workouts': workouts, 'last_name':u.last_name, @@ -3324,17 +3324,20 @@ def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""): messages.info(request,successmessage) url = reverse(workout_edit_view, kwargs = { - 'id':str(id), + 'id':int(id), }) return HttpResponseRedirect(url) except: - os.remove(fname) - message = "Something went wrong (workout_crewnerd_summary_view)" + try: + os.remove(fname) + except: + pass + message = "Something went wrong (workout_crewnerd_summary_view)" messages.error(request,message) url = reverse(workout_edit_view, kwargs = { - 'id':str(id), + 'id':int(id), }) return HttpResponseRedirect(url) else: @@ -3403,7 +3406,7 @@ def workout_downloadwind_view(request,id=0, messages.info(request,message) kwargs = { - 'id':str(id)} + 'id':int(id)} url = reverse(workout_wind_view,kwargs=kwargs) response = HttpResponseRedirect(url) @@ -3411,7 +3414,7 @@ def workout_downloadwind_view(request,id=0, message = "No latitude/longitude data" messages.error(request,message) kwargs = { - 'id':str(id) + 'id':int(id) } url = reverse(workout_wind_view,kwargs=kwargs) response = HttpResponseRedirect(url) @@ -3471,7 +3474,7 @@ def workout_downloadmetar_view(request,id=0, messages.info(request,message) kwargs = { - 'id':str(id)} + 'id':int(id)} url = reverse(workout_wind_view,kwargs=kwargs) response = HttpResponseRedirect(url) @@ -3479,7 +3482,7 @@ def workout_downloadmetar_view(request,id=0, message = "No latitude/longitude data" messages.error(request,message) kwargs = { - 'id':str(id) + 'id':int(id) } url = reverse(workout_wind_view,kwargs=kwargs) response = HttpResponseRedirect(url) @@ -3570,7 +3573,7 @@ def workout_wind_view(request,id=0,message="",successmessage=""): message = "Invalid Form" messages.error(request,message) kwargs = { - 'id':str(id) + 'id':int(id) } url = reverse(workout_wind_view,kwargs=kwargs) response = HttpResponseRedirect(url) @@ -3657,7 +3660,7 @@ def workout_stream_view(request,id=0,message="",successmessage=""): message = "Invalid Form" messages.error(request,message) kwargs = { - 'id':str(id)} + 'id':int(id)} url = reverse(workout_wind_view,kwargs=kwargs) response = HttpResponseRedirect(url) @@ -3747,7 +3750,7 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""): successmessage = "Your calculations have been submitted. You will receive an email when they are done." messages.info(request,successmessage) kwargs = { - 'id':str(id)} + 'id':int(id)} url = reverse(workout_advanced_view,kwargs=kwargs) response = HttpResponseRedirect(url) @@ -3757,7 +3760,7 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""): message = "Invalid Form" messages.error(request,message) kwargs = { - 'id':str(id)} + 'id':int(id)} url = reverse(workout_otwsetpower_view,kwargs=kwargs) response = HttpResponseRedirect(url) @@ -4384,7 +4387,7 @@ def workout_flexchart3_view(request,*args,**kwargs): 'the_div':div, 'js_res': js_resources, 'css_res':css_resources, - 'id':id, + 'id':int(id), 'teams':get_my_teams(request.user), 'xparam':xparam, 'yparam1':yparam1, @@ -4416,7 +4419,7 @@ def workout_flexchart3_view(request,*args,**kwargs): 'js_res': js_resources, 'css_res':css_resources, 'teams':get_my_teams(request.user), - 'id':id, + 'id':int(id), 'xparam':xparam, 'yparam1':yparam1, 'yparam2':yparam2, @@ -5492,7 +5495,7 @@ def workout_getstravaworkout_view(request,stravaid): url = reverse(workout_edit_view, kwargs = { - 'id':id, + 'id':int(id), }) return HttpResponseRedirect(url) @@ -5513,7 +5516,7 @@ def workout_getrunkeeperworkout_view(request,runkeeperid): url = reverse(workout_edit_view, kwargs = { - 'id':id, + 'id':int(id), }) return HttpResponseRedirect(url) @@ -5532,7 +5535,7 @@ def workout_getunderarmourworkout_view(request,underarmourid): url = reverse(workout_edit_view, kwargs = { - 'id':id, + 'id':int(id), }) return HttpResponseRedirect(url) @@ -5557,7 +5560,7 @@ def workout_getsporttracksworkout_view(request,sporttracksid): url = reverse(workout_edit_view, kwargs = { - 'id':id, + 'id':int(id), }) return HttpResponseRedirect(url) @@ -5632,7 +5635,7 @@ def workout_getc2workout_view(request,c2id): url = reverse(workout_edit_view, kwargs = { - 'id':id, + 'id':int(id), }) return HttpResponseRedirect(url) @@ -5777,7 +5780,7 @@ def workout_upload_view(request, url = reverse(workout_edit_view, kwargs = { - 'id':id, + 'id':int(id), }) response = HttpResponseRedirect(url) @@ -6113,7 +6116,7 @@ def workout_delete_confirm_view(request, id=0): raise PermissionDenied("You are not allowed to delete this workout") else: return render(request,'workout_delete_confirm.html', - {'id':id, + {'id':int(id), 'teams':get_my_teams(request.user), 'workout':row}) @@ -6149,7 +6152,7 @@ def graph_delete_confirm_view(request, id=0): raise PermissionDenied("You are not allowed to delete this workout") else: return render(request,'graphimage_delete_confirm.html', - {'id':id, + {'id':int(id), 'teams':get_my_teams(request.user), 'graph':img}) @@ -6274,7 +6277,7 @@ def workout_summary_restore_view(request,id,message="",successmessage=""): messages.info(request,'Original Interval Data Restored') url = reverse(workout_summary_edit_view, kwargs={ - 'id':id, + 'id':int(id), } ) return HttpResponseRedirect(url) @@ -6411,6 +6414,7 @@ def workout_summary_edit_view(request,id,message="",successmessage="" row.save() rowdata.write_csv(f1,gzip=True) dataprep.update_strokedata(id,rowdata.df) + messages.info(request,"Updated interval data saved") data = {'intervalstring':s} form = SummaryStringForm(initial=data) savebutton = 'savestringform' @@ -6463,7 +6467,7 @@ def workout_summary_edit_view(request,id,message="",successmessage="" row.save() rowdata.write_csv(f1,gzip=True) dataprep.update_strokedata(id,rowdata.df) - + messages.info(request,"Updated interval data saved") form = SummaryStringForm() @@ -6523,7 +6527,9 @@ def workout_summary_edit_view(request,id,message="",successmessage="" detailform = IntervalUpdateForm(aantal=nrintervals,initial=initial) + # render page + return render(request, 'summary_edit.html', {'form':form, 'detailform':detailform, @@ -6919,7 +6925,7 @@ def strokedataform(request,id=0): { 'form':form, 'teams':get_my_teams(request.user), - 'id':id, + 'id':int(id), }) elif request.method == 'POST': form = StrokeDataForm() @@ -6928,7 +6934,7 @@ def strokedataform(request,id=0): { 'form':form, 'teams':get_my_teams(request.user), - 'id':id, + 'id':int(id), }) # Process the POSTed stroke data according to the API definition @@ -7219,7 +7225,7 @@ def manager_requests_view(request,code=None,message='',successmessage=''): successmessage = '' messages.info(request,successmessage) - message.error(request,message) + messages.error(request,message) url = reverse(rower_teams_view,kwargs={ }) return HttpResponseRedirect(url) @@ -7333,7 +7339,7 @@ def team_edit_view(request,id=0): url = reverse(team_view, kwargs={ - 'id':id, + 'id':int(id), } ) From 85fd6759ea1691c6a6eb36dac19c221b60f269f7 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 11 May 2017 12:06:44 +0200 Subject: [PATCH 6/7] finalizing --- rowers/views.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/rowers/views.py b/rowers/views.py index 7a02cd87..cad0bbd4 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -4814,8 +4814,6 @@ def workout_edit_view(request,id=0,message="",successmessage=""): gmscript = "" gmdiv = "" - messages.error(request,message) - messages.info(request,successmessage) # render page if (len(g)<=3): From 5ad43026c7ca022d4855a19760b29da1c42fccb5 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 11 May 2017 13:21:45 +0200 Subject: [PATCH 7/7] removed exp code --- rowers/tasks.py | 1 + rowsanda_107501 | Bin 424960 -> 461824 bytes 2 files changed, 1 insertion(+) diff --git a/rowers/tasks.py b/rowers/tasks.py index d4009972..34e33726 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -271,6 +271,7 @@ def handle_makeplot(f1,f2,t,hrdata,plotnr,imagename): plt.close(fig1) fig1.clf() gc.collect() + return imagename # Team related remote tasks diff --git a/rowsanda_107501 b/rowsanda_107501 index 667f3fdf414028879c4c28ca486af0d217b65575..93b5d65390548c22a4c18b81fea0c87ed29bf6de 100644 GIT binary patch delta 196849 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%0D#G$rE+GNHIbC^laTUDANGyA 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ē*PzZ9XBg^wzN2ye_R2!0 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 F{|6TmN}B)x