now passes new tests
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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/',
|
||||||
|
|||||||
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
Binary file not shown.
@@ -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),
|
||||||
|
|||||||
155
rowers/views.py
155
rowers/views.py
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user