Private
Public Access
1
0

now passes new tests

This commit is contained in:
Sander Roosendaal
2019-01-09 17:01:36 +01:00
parent ebb90e5997
commit 1e3f3844f7
8 changed files with 124 additions and 68 deletions

View File

@@ -1,6 +1,9 @@
import pytest import pytest
pytestmark = pytest.mark.django_db pytestmark = pytest.mark.django_db
from rowers.opaque import encoder
encoded1 = str(encoder.encode_hex(1))
encoded2 = str(encoder.encode_hex(2))
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import re import re

View File

@@ -112,9 +112,10 @@ class EmpowerTest(TestCase):
def test_workflow_map_view(self, mocked_sqlalchemy): def test_workflow_map_view(self, mocked_sqlalchemy):
login = self.c.login(username='john',password='koeinsloot') login = self.c.login(username='john',password='koeinsloot')
self.assertTrue(login) self.assertTrue(login)
encodedid = str(encoder.encode_hex(self.wote.id))
url = '/rowers/workout/{id}/workflow/'.format( url = '/rowers/workout/{id}/workflow/'.format(
id = self.wote.id id = encodedid
) )
response = self.c.get(url) response = self.c.get(url)

View File

@@ -350,7 +350,7 @@ class StravaObjects(DjangoTestCase):
response = self.c.get('/rowers/workout/stravaimport/12',follow=True) response = self.c.get('/rowers/workout/stravaimport/12',follow=True)
self.assertRedirects(response, self.assertRedirects(response,
expected_url='/rowers/workout/'+encoded1+'/edit/', expected_url='/rowers/workout/'+encoded2+'/edit/',
status_code=301,target_status_code=200) status_code=301,target_status_code=200)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)

View File

@@ -144,7 +144,7 @@ class WorkoutCompareTest(TestCase):
login = self.c.login(username=self.u.username, password=self.password) login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login) self.assertTrue(login)
url = '/rowers/team-compare-select/workout/1/team/0/user/1/' url = '/rowers/team-compare-select/workout/'+encoded1+'/team/0/user/1/'
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -374,7 +374,8 @@ class ForcecurveTest(TestCase):
login = self.c.login(username=self.u.username, password = self.password) login = self.c.login(username=self.u.username, password = self.password)
self.assertTrue(login) self.assertTrue(login)
url = '/rowers/workout/1/forcecurve/' encoded1 = str(encoder.encode_hex(1))
url = '/rowers/workout/'+encoded1+'/forcecurve/'
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)

View File

@@ -206,7 +206,7 @@ class URLTests(TestCase):
'/rowers/sessions/teamcreate/', '/rowers/sessions/teamcreate/',
'/rowers/sessions/user/1/', '/rowers/sessions/user/1/',
'/rowers/team-compare-select/', '/rowers/team-compare-select/',
'/rowers/team-compare-select/workout/1/', '/rowers/team-compare-select/workout/'+encoded1+'/',
'/rowers/team-compare-select/2016-01-01/2016-12-31/', '/rowers/team-compare-select/2016-01-01/2016-12-31/',
'/rowers/test-job/2/', '/rowers/test-job/2/',
'/rowers/test-job2/2/', '/rowers/test-job2/2/',
@@ -216,17 +216,17 @@ class URLTests(TestCase):
# '/rowers/updatefitness/rower/50/', # '/rowers/updatefitness/rower/50/',
# '/rowers/user-boxplot/', # '/rowers/user-boxplot/',
# '/rowers/user-boxplot-data/', # '/rowers/user-boxplot-data/',
# '/rowers/user-boxplot-select//', # '/rowers/user-boxplot-select/',
# '/rowers/user-boxplot-select/user/1//', # '/rowers/user-boxplot-select/user/1/',
# '/rowers/user-boxplot/user/1/', # '/rowers/user-boxplot/user/1/',
# '/rowers/user-multiflex-data/', # '/rowers/user-multiflex-data/',
# '/rowers/user-multiflex-select//', # '/rowers/user-multiflex-select/',
# '/rowers/user-multiflex-select/2016-01-01/2016-12-31/', # '/rowers/user-multiflex-select/2016-01-01/2016-12-31/',
# '/rowers/user-multiflex-select/user/1//', # '/rowers/user-multiflex-select/user/1/',
# '/rowers/user-multiflex-select/user/1/2016-01-01/2016-12-31/', # '/rowers/user-multiflex-select/user/1/2016-01-01/2016-12-31/',
# '/rowers/user-multiflex//', # '/rowers/user-multiflex/',
# '/rowers/user-multiflex/user/1/', # '/rowers/user-multiflex/user/1/',
'/rowers/workout/'+encoded1+'//', '/rowers/workout/'+encoded1+'/',
'/rowers/workout/'+encoded1+'/adddistanceplot/', '/rowers/workout/'+encoded1+'/adddistanceplot/',
'/rowers/workout/'+encoded1+'/adddistanceplot2/', '/rowers/workout/'+encoded1+'/adddistanceplot2/',
'/rowers/workout/'+encoded1+'/addotwpowerplot/', '/rowers/workout/'+encoded1+'/addotwpowerplot/',
@@ -251,14 +251,14 @@ class URLTests(TestCase):
'/rowers/workout/'+encoded1+'/interactiveotwplot/', '/rowers/workout/'+encoded1+'/interactiveotwplot/',
'/rowers/workout/'+encoded1+'/map/', '/rowers/workout/'+encoded1+'/map/',
'/rowers/workout/'+encoded1+'/otwsetpower/', '/rowers/workout/'+encoded1+'/otwsetpower/',
'/rowers/workout/'+encoded1+'/recalcsummary//', '/rowers/workout/'+encoded1+'/recalcsummary/',
'/rowers/workout/'+encoded1+'/restore/', '/rowers/workout/'+encoded1+'/restore/',
'/rowers/workout/'+encoded1+'/smoothenpace/', '/rowers/workout/'+encoded1+'/smoothenpace/',
'/rowers/workout/'+encoded1+'/split/', '/rowers/workout/'+encoded1+'/split/',
'/rowers/workout/'+encoded1+'/stats/', '/rowers/workout/'+encoded1+'/stats/',
'/rowers/workout/'+encoded1+'/stream/', '/rowers/workout/'+encoded1+'/stream/',
'/rowers/workout/'+encoded1+'/task/', '/rowers/workout/'+encoded1+'/task/',
'/rowers/workout/'+encoded1+'/test_strokedata/', '/rowers/workout/'+encoded1+'/teststrokedata/',
'/rowers/workout/'+encoded1+'/toggle-ranking/', '/rowers/workout/'+encoded1+'/toggle-ranking/',
'/rowers/workout/'+encoded1+'/undosmoothenpace/', '/rowers/workout/'+encoded1+'/undosmoothenpace/',
'/rowers/workout/'+encoded1+'/unsubscribe/', '/rowers/workout/'+encoded1+'/unsubscribe/',
@@ -267,7 +267,7 @@ class URLTests(TestCase):
'/rowers/workout/'+encoded1+'/wind/', '/rowers/workout/'+encoded1+'/wind/',
'/rowers/workout/'+encoded1+'/workflow/', '/rowers/workout/'+encoded1+'/workflow/',
'/rowers/workout/compare/'+encoded1+'/2016-01-01/2016-12-31/', '/rowers/workout/compare/'+encoded1+'/2016-01-01/2016-12-31/',
'/rowers/workout/fusion/'+encoded1+'//', '/rowers/workout/fusion/'+encoded1+'/',
'/rowers/workout/fusion/'+encoded1+'/2016-01-01/2016-12-31/', '/rowers/workout/fusion/'+encoded1+'/2016-01-01/2016-12-31/',
'/rowers/workout/upload/', '/rowers/workout/upload/',
'/rowers/workout/upload/team/', '/rowers/workout/upload/team/',

Binary file not shown.

View File

@@ -175,7 +175,7 @@ urlpatterns = [
url(r'^team-compare-select/workout/(?P<id>\b[0-9A-Fa-f]+\b)/team/(?P<teamid>\d+)/$',views.team_comparison_select), url(r'^team-compare-select/workout/(?P<id>\b[0-9A-Fa-f]+\b)/team/(?P<teamid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/workout/(?P<id>\b[0-9A-Fa-f]+\b)/team/(?P<teamid>\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select), url(r'^team-compare-select/workout/(?P<id>\b[0-9A-Fa-f]+\b)/team/(?P<teamid>\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/workout/(?P<id>\b[0-9A-Fa-f]+\b)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.team_comparison_select), url(r'^team-compare-select/workout/(?P<id>\b[0-9A-Fa-f]+\b)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/workout/(?P<id>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select), url(r'^team-compare-select/workout/(?P<id>\b[0-9A-Fa-f]+\b)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select), url(r'^team-compare-select/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/user/(?P<userid>\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.team_comparison_select), url(r'^team-compare-select/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.team_comparison_select),
url(r'^team-compare-select/workout/(?P<id>\b[0-9A-Fa-f]+\b)/user/(?P<userid>\d+)/$',views.team_comparison_select), url(r'^team-compare-select/workout/(?P<id>\b[0-9A-Fa-f]+\b)/user/(?P<userid>\d+)/$',views.team_comparison_select),
@@ -510,7 +510,7 @@ urlpatterns = [
url(r'^edittarget/(?P<pk>\d+)/$',login_required( url(r'^edittarget/(?P<pk>\d+)/$',login_required(
views.TrainingTargetUpdate.as_view()), views.TrainingTargetUpdate.as_view()),
name='trainingtarget_update_view'), name='trainingtarget_update_view'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/test\_strokedata/$',views.strokedataform), url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/teststrokedata/$',views.strokedataform),
url(r'^sessions/teamcreate/user/(?P<userid>\d+)/$',views.plannedsession_teamcreate_view), url(r'^sessions/teamcreate/user/(?P<userid>\d+)/$',views.plannedsession_teamcreate_view),
url(r'^sessions/teamcreate/team/(?P<teamid>\d+)/user/(?P<userid>\d+)/$', url(r'^sessions/teamcreate/team/(?P<teamid>\d+)/user/(?P<userid>\d+)/$',
views.plannedsession_teamcreate_view), views.plannedsession_teamcreate_view),

View File

@@ -1866,7 +1866,8 @@ def add_workout_from_strokedata(user,importid,data,strokedata,
# Export workout to TCX and send to user's email address # Export workout to TCX and send to user's email address
@login_required() @login_required()
def workout_tcxemail_view(request,id=0): def workout_tcxemail_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
message = "" message = ""
successmessage = "" successmessage = ""
r = getrower(request.user) r = getrower(request.user)
@@ -2019,7 +2020,8 @@ def course_kmldownload_view(request,id=0):
# Export workout to GPX and send to user's email address # Export workout to GPX and send to user's email address
@login_required() @login_required()
def workout_gpxemail_view(request,id=0): def workout_gpxemail_view(request,id=0):
id = encoder.decode_hex(id) if id != 0:
id = encoder.decode_hex(id)
message = "" message = ""
successmessage = "" successmessage = ""
r = Rower.objects.get(user=request.user) r = Rower.objects.get(user=request.user)
@@ -2110,7 +2112,8 @@ def workouts_summaries_email_view(request):
# Get Workout CSV file and send it to user's email address # Get Workout CSV file and send it to user's email address
@login_required() @login_required()
def workout_csvemail_view(request,id=0): def workout_csvemail_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
message = "" message = ""
r = getrower(request.user) r = getrower(request.user)
if r.emailbounced: if r.emailbounced:
@@ -2155,7 +2158,8 @@ def workout_csvemail_view(request,id=0):
# Get Workout CSV file and send it to user's email address # Get Workout CSV file and send it to user's email address
@login_required() @login_required()
def workout_csvtoadmin_view(request,id=0): def workout_csvtoadmin_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
message = "" message = ""
r = getrower(request.user) r = getrower(request.user)
w = get_workout(id) w = get_workout(id)
@@ -2182,7 +2186,8 @@ def workout_csvtoadmin_view(request,id=0):
# Send workout to TP # Send workout to TP
@login_required() @login_required()
def workout_tp_upload_view(request,id=0): def workout_tp_upload_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
message = "" message = ""
r = getrower(request.user) r = getrower(request.user)
@@ -2240,7 +2245,8 @@ def workout_tp_upload_view(request,id=0):
# abundance of error logging here because there were/are some bugs # abundance of error logging here because there were/are some bugs
@login_required() @login_required()
def workout_strava_upload_view(request,id=0): def workout_strava_upload_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
message = "" message = ""
r = getrower(request.user) r = getrower(request.user)
res = -1 res = -1
@@ -2345,7 +2351,8 @@ def workout_strava_upload_view(request,id=0):
# Upload workout to Concept2 logbook # Upload workout to Concept2 logbook
@login_required() @login_required()
def workout_c2_upload_view(request,id=0): def workout_c2_upload_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
message = "" message = ""
# ready to upload. Hurray # ready to upload. Hurray
w = get_workout(id) w = get_workout(id)
@@ -2375,7 +2382,8 @@ def workout_c2_upload_view(request,id=0):
# Upload workout to RunKeeper # Upload workout to RunKeeper
@login_required() @login_required()
def workout_runkeeper_upload_view(request,id=0): def workout_runkeeper_upload_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
message = "" message = ""
w = get_workout(id) w = get_workout(id)
r = w.user r = w.user
@@ -2439,7 +2447,8 @@ def workout_runkeeper_upload_view(request,id=0):
# Upload workout to Underarmour # Upload workout to Underarmour
@login_required() @login_required()
def workout_underarmour_upload_view(request,id=0): def workout_underarmour_upload_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
message = "" message = ""
w = get_workout(id) w = get_workout(id)
r = w.user r = w.user
@@ -2505,7 +2514,8 @@ def workout_underarmour_upload_view(request,id=0):
# Upload workout to SportTracks # Upload workout to SportTracks
@login_required() @login_required()
def workout_sporttracks_upload_view(request,id=0): def workout_sporttracks_upload_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
message = "" message = ""
# ready to upload. Hurray # ready to upload. Hurray
w = get_workout(id) w = get_workout(id)
@@ -3561,7 +3571,8 @@ def fitnessmetric_view(request,id=0,mode='rower',
message="This functionality requires a Pro plan or higher", message="This functionality requires a Pro plan or higher",
redirect_field_name=None) redirect_field_name=None)
def workout_forcecurve_view(request,id=0,workstrokesonly=False): def workout_forcecurve_view(request,id=0,workstrokesonly=False):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
promember=0 promember=0
@@ -3625,7 +3636,8 @@ def workout_forcecurve_view(request,id=0,workstrokesonly=False):
# Test asynchronous tasking and messaging # Test asynchronous tasking and messaging
@login_required() @login_required()
def workout_test_task_view(request,id=0): def workout_test_task_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = Workout.objects.get(id=id) row = Workout.objects.get(id=id)
res = myqueue(queuehigh,addcomment2,request.user.id,row.id) res = myqueue(queuehigh,addcomment2,request.user.id,row.id)
@@ -3639,7 +3651,8 @@ def workout_test_task_view(request,id=0):
# Show Stroke power histogram for a workout # Show Stroke power histogram for a workout
@login_required() @login_required()
def workout_histo_view(request,id=0): def workout_histo_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
w = get_workout(id) w = get_workout(id)
promember=0 promember=0
@@ -4815,7 +4828,8 @@ def rankings_view2(request,theuser=0,
message="This functionality requires a Pro plan or higher", message="This functionality requires a Pro plan or higher",
redirect_field_name=None) redirect_field_name=None)
def workout_update_cp_view(request,id=0): def workout_update_cp_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
if (checkworkoutuser(request.user,row)==False): if (checkworkoutuser(request.user,row)==False):
@@ -5596,7 +5610,8 @@ def oterankings_view(request,theuser=0,
# Reload the workout and calculate the summary from the stroke data (lapIDx) # Reload the workout and calculate the summary from the stroke data (lapIDx)
@login_required() @login_required()
def workout_recalcsummary_view(request,id=0): def workout_recalcsummary_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
if (checkworkoutuser(request.user,row)==False): if (checkworkoutuser(request.user,row)==False):
@@ -5908,7 +5923,8 @@ def team_comparison_select(request,
teamid=0): teamid=0):
id = encoder.decode_hex(id) if id != 0:
id = encoder.decode_hex(id)
r = getrequestrower(request,userid=userid) r = getrequestrower(request,userid=userid)
requestrower = getrower(request.user) requestrower = getrower(request.user)
@@ -7765,7 +7781,8 @@ def workout_comparison_list(request,id=0,message='',successmessage='',
startdate=timezone.now()-datetime.timedelta(days=365), startdate=timezone.now()-datetime.timedelta(days=365),
enddate=timezone.now()): enddate=timezone.now()):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
try: try:
r = getrower(request.user) r = getrower(request.user)
except Rower.DoesNotExist: except Rower.DoesNotExist:
@@ -7852,7 +7869,8 @@ def workout_fusion_list(request,id=0,message='',successmessage='',
startdate=timezone.now()-datetime.timedelta(days=365), startdate=timezone.now()-datetime.timedelta(days=365),
enddate=timezone.now()): enddate=timezone.now()):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
try: try:
r = getrower(request.user) r = getrower(request.user)
except Rower.DoesNotExist: except Rower.DoesNotExist:
@@ -7951,7 +7969,8 @@ def workout_fusion_list(request,id=0,message='',successmessage='',
def workout_view(request,id=0): def workout_view(request,id=0):
request.session['referer'] = absolute(request)['PATH'] request.session['referer'] = absolute(request)['PATH']
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
if not request.user.is_anonymous(): if not request.user.is_anonymous():
rower = getrower(request.user) rower = getrower(request.user)
@@ -8056,7 +8075,8 @@ def workout_view(request,id=0):
def workout_undo_smoothenpace_view( def workout_undo_smoothenpace_view(
request,id=0,message="",successmessage="" request,id=0,message="",successmessage=""
): ):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
r = getrower(request.user) r = getrower(request.user)
@@ -8094,7 +8114,8 @@ def workout_undo_smoothenpace_view(
message="This functionality requires a Pro plan or higher", message="This functionality requires a Pro plan or higher",
redirect_field_name=None) redirect_field_name=None)
def workout_smoothenpace_view(request,id=0,message="",successmessage=""): def workout_smoothenpace_view(request,id=0,message="",successmessage=""):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
previousurl = request.META.get('HTTP_REFERER') previousurl = request.META.get('HTTP_REFERER')
@@ -8148,7 +8169,8 @@ def workout_smoothenpace_view(request,id=0,message="",successmessage=""):
message="This functionality requires a Pro plan or higher", message="This functionality requires a Pro plan or higher",
redirect_field_name=None) redirect_field_name=None)
def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""): def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
r = getrower(request.user) r = getrower(request.user)
breadcrumbs = [ breadcrumbs = [
@@ -8228,7 +8250,8 @@ def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
def workout_downloadwind_view(request,id=0, def workout_downloadwind_view(request,id=0,
airportcode=None, airportcode=None,
message="",successmessage=""): message="",successmessage=""):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
f1 = row.csvfilename f1 = row.csvfilename
@@ -8295,7 +8318,8 @@ def workout_downloadwind_view(request,id=0,
def workout_downloadmetar_view(request,id=0, def workout_downloadmetar_view(request,id=0,
airportcode=None, airportcode=None,
message="",successmessage=""): message="",successmessage=""):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
f1 = row.csvfilename f1 = row.csvfilename
@@ -8361,7 +8385,8 @@ def workout_downloadmetar_view(request,id=0,
# Show form to update wind data # Show form to update wind data
@user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None) @user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
def workout_wind_view(request,id=0,message="",successmessage=""): def workout_wind_view(request,id=0,message="",successmessage=""):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
r = getrower(request.user) r = getrower(request.user)
breadcrumbs = [ breadcrumbs = [
@@ -8498,7 +8523,8 @@ def workout_wind_view(request,id=0,message="",successmessage=""):
# Show form to update River stream data (for river dwellers) # Show form to update River stream data (for river dwellers)
@user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None) @user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
def workout_stream_view(request,id=0,message="",successmessage=""): def workout_stream_view(request,id=0,message="",successmessage=""):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
r = getrower(request.user) r = getrower(request.user)
@@ -8585,7 +8611,8 @@ def workout_stream_view(request,id=0,message="",successmessage=""):
# Form to set average crew weight and boat type, then run power calcs # Form to set average crew weight and boat type, then run power calcs
@user_passes_test(ispromember, login_url="/rowers/paidplans",redirect_field_name=None) @user_passes_test(ispromember, login_url="/rowers/paidplans",redirect_field_name=None)
def workout_otwsetpower_view(request,id=0,message="",successmessage=""): def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
w = get_workout(id) w = get_workout(id)
r = getrower(request.user) r = getrower(request.user)
@@ -8718,7 +8745,8 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
@login_required() @login_required()
def instroke_view(request,id=0): def instroke_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
w = get_workout(id) w = get_workout(id)
r = getrower(request.user) r = getrower(request.user)
mayedit = 0 mayedit = 0
@@ -8777,7 +8805,8 @@ def instroke_view(request,id=0):
# A special Edit page with all the Geeky functionality for the workout # A special Edit page with all the Geeky functionality for the workout
@login_required() @login_required()
def workout_geeky_view(request,id=0,message="",successmessage=""): def workout_geeky_view(request,id=0,message="",successmessage=""):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
# form = WorkoutForm(instance=row) # form = WorkoutForm(instance=row)
@@ -8840,7 +8869,8 @@ def workout_geeky_view(request,id=0,message="",successmessage=""):
# generate instroke chart # generate instroke chart
@login_required() @login_required()
def instroke_chart(request,id=0,metric=''): def instroke_chart(request,id=0,metric=''):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
w = get_workout(id) w = get_workout(id)
if (checkworkoutuser(request.user,w)==False): if (checkworkoutuser(request.user,w)==False):
@@ -9200,7 +9230,8 @@ def cumstats(request,theuser=0,
# data explorer # data explorer
@login_required() @login_required()
def workout_data_view(request, id=0): def workout_data_view(request, id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
r = getrower(request.user) r = getrower(request.user)
w = get_workout(id) w = get_workout(id)
@@ -9300,7 +9331,8 @@ def workout_data_view(request, id=0):
# Stats page # Stats page
@login_required() @login_required()
def workout_stats_view(request,id=0,message="",successmessage=""): def workout_stats_view(request,id=0,message="",successmessage=""):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
r = getrower(request.user) r = getrower(request.user)
w = get_workout(id) w = get_workout(id)
@@ -9469,7 +9501,8 @@ def workout_stats_view(request,id=0,message="",successmessage=""):
# The Advanced edit page # The Advanced edit page
@login_required() @login_required()
def workout_advanced_view(request,id=0,message="",successmessage=""): def workout_advanced_view(request,id=0,message="",successmessage=""):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
# form = WorkoutForm(instance=row) # form = WorkoutForm(instance=row)
@@ -9527,8 +9560,10 @@ def workout_advanced_view(request,id=0,message="",successmessage=""):
# The interactive plot comparing two workouts (obsolete version) # The interactive plot comparing two workouts (obsolete version)
def workout_comparison_view(request,id1=0,id2=0,xparam='distance',yparam='spm'): def workout_comparison_view(request,id1=0,id2=0,xparam='distance',yparam='spm'):
id1 = encoder.decode_hex(id1) if id1:
id2 = encoder.decode_hex(id2) id1 = encoder.decode_hex(id1)
if id2:
id2 = encoder.decode_hex(id2)
promember=0 promember=0
if not request.user.is_anonymous(): if not request.user.is_anonymous():
r = getrower(request.user) r = getrower(request.user)
@@ -9564,8 +9599,10 @@ def workout_comparison_view(request,id1=0,id2=0,xparam='distance',yparam='spm'):
# Updated version of comparison plot # Updated version of comparison plot
def workout_comparison_view2(request,id1=0,id2=0,xparam='distance', def workout_comparison_view2(request,id1=0,id2=0,xparam='distance',
yparam='spm',plottype='line'): yparam='spm',plottype='line'):
id1 = encoder.decode_hex(id1) if id1:
id2 = encoder.decode_hex(id2) id1 = encoder.decode_hex(id1)
if id2:
id2 = encoder.decode_hex(id2)
promember=0 promember=0
if not request.user.is_anonymous(): if not request.user.is_anonymous():
r = getrower(request.user) r = getrower(request.user)
@@ -10191,7 +10228,8 @@ def workout_flexchart3_view(request,*args,**kwargs):
# The interactive plot with the colored Heart rate zones # The interactive plot with the colored Heart rate zones
def workout_biginteractive_view(request,id=0,message="",successmessage=""): def workout_biginteractive_view(request,id=0,message="",successmessage=""):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
# check if user is owner of this workout # check if user is owner of this workout
@@ -10233,7 +10271,8 @@ def workout_biginteractive_view(request,id=0,message="",successmessage=""):
# The interactive plot with wind corrected pace for OTW outings # The interactive plot with wind corrected pace for OTW outings
def workout_otwpowerplot_view(request,id=0,message="",successmessage=""): def workout_otwpowerplot_view(request,id=0,message="",successmessage=""):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
w = get_workout(id) w = get_workout(id)
r = getrower(request.user) r = getrower(request.user)
@@ -10294,7 +10333,8 @@ def workout_otwpowerplot_view(request,id=0,message="",successmessage=""):
@login_required() @login_required()
def workout_export_view(request,id=0, message="", successmessage=""): def workout_export_view(request,id=0, message="", successmessage=""):
request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
try: try:
@@ -10352,7 +10392,8 @@ def workout_export_view(request,id=0, message="", successmessage=""):
# #
@login_required() @login_required()
def workout_unsubscribe_view(request,id=0): def workout_unsubscribe_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
w = get_workout(id) w = get_workout(id)
if w.privacy == 'private' and w.user.user != request.user: if w.privacy == 'private' and w.user.user != request.user:
@@ -10383,7 +10424,8 @@ def workout_unsubscribe_view(request,id=0):
# list of comments to a workout # list of comments to a workout
@login_required() @login_required()
def workout_comment_view(request,id=0): def workout_comment_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
w = get_workout(id) w = get_workout(id)
if w.privacy == 'private' and w.user.user != request.user: if w.privacy == 'private' and w.user.user != request.user:
@@ -10735,7 +10777,8 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE
request.session['referer'] = absolute(request)['PATH'] request.session['referer'] = absolute(request)['PATH']
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout(id) row = get_workout(id)
@@ -10951,7 +10994,8 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
@login_required() @login_required()
def workout_map_view(request,id=0): def workout_map_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE
request.session['referer'] = absolute(request)['PATH'] request.session['referer'] = absolute(request)['PATH']
@@ -12098,7 +12142,8 @@ def workout_getstravaworkout_next(request):
@login_required @login_required
def workout_toggle_ranking(request,id=0): def workout_toggle_ranking(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
is_ajax = False is_ajax = False
if request.is_ajax(): if request.is_ajax():
is_ajax = True is_ajax = True
@@ -12366,7 +12411,7 @@ def workout_upload_view(request,
url = reverse(workout_edit_view, url = reverse(workout_edit_view,
kwargs = { kwargs = {
'id':encoder.decode_hex(id), 'id':str(id),
}) })
if is_ajax: if is_ajax:
@@ -12729,7 +12774,8 @@ def team_workout_upload_view(request,message="",
# Ask the user if he really wants to delete the workout # Ask the user if he really wants to delete the workout
@login_required() @login_required()
def workout_delete_confirm_view(request, id=0): def workout_delete_confirm_view(request, id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
try: try:
row = Workout.objects.get(id=id) row = Workout.objects.get(id=id)
if (checkworkoutuser(request.user,row)==False): if (checkworkoutuser(request.user,row)==False):
@@ -12748,7 +12794,8 @@ def workout_delete_confirm_view(request, id=0):
# Really deleting the workout # Really deleting the workout
@login_required() @login_required()
def workout_delete_view(request,id=0): def workout_delete_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
try: try:
row = Workout.objects.get(id=id) row = Workout.objects.get(id=id)
if (checkworkoutuser(request.user,row)==False): if (checkworkoutuser(request.user,row)==False):
@@ -12964,8 +13011,9 @@ def workout_summary_restore_view(request,id,message="",successmessage=""):
# Split a workout # Split a workout
@user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None) @user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
def workout_split_view(request,id=id): def workout_split_view(request,id=0):
id = encoder.decode_hex(id) if id:
id = encoder.decode_hex(id)
row = get_workout_permitted(request.user,id) row = get_workout_permitted(request.user,id)
r = row.user r = row.user
@@ -13057,8 +13105,10 @@ def workout_split_view(request,id=id):
# Fuse two workouts # Fuse two workouts
@user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None) @user_passes_test(ispromember,login_url="/rowers/paidplans",message="This functionality requires a Pro plan or higher",redirect_field_name=None)
def workout_fusion_view(request,id1=0,id2=1): def workout_fusion_view(request,id1=0,id2=1):
id1 = encoder.decode_hex(id1) if id1:
id2 = encoder.decode_hex(id2) id1 = encoder.decode_hex(id1)
if id2:
id2 = encoder.decode_hex(id2)
r = getrower(request.user) r = getrower(request.user)
@@ -14313,6 +14363,7 @@ def trydf(df,aantal,column):
# Stroke data form to test API upload # Stroke data form to test API upload
@login_required() @login_required()
def strokedataform(request,id=0): def strokedataform(request,id=0):
id = encoder.decode_hex(id)
try: try:
id=int(id) id=int(id)