Private
Public Access
1
0

passing all but one test

This commit is contained in:
Sander Roosendaal
2019-02-13 21:42:08 +01:00
parent d35d7e8e2c
commit 292e703766
14 changed files with 188 additions and 152 deletions

View File

@@ -2230,7 +2230,7 @@ def interactive_chart(id=0,promember=0,intervaldata = {}):
intervaldf['itime'] = intervaldf['itime']*1.e3 intervaldf['itime'] = intervaldf['itime']*1.e3
intervaldf['time'] = intervaldf['itime'].cumsum() intervaldf['time'] = intervaldf['itime'].cumsum()
intervaldf['time'] = intervaldf['time'].shift(1) intervaldf['time'] = intervaldf['time'].shift(1)
intervaldf.ix[0,'time'] = 0 intervaldf.loc[:,'time'].iloc[0] = 0
intervaldf['time_r'] = intervaldf['time'] +intervaldf['itime'] intervaldf['time_r'] = intervaldf['time'] +intervaldf['itime']
intervaldf['value'] = 100 intervaldf['value'] = 100
mask = intervaldf['itype'] == 3 mask = intervaldf['itype'] == 3

View File

@@ -14,7 +14,7 @@
You can read the comment here: You can read the comment here:
</p> </p>
<p> <p>
<a href="{{ siteurl }} {{ commentlink }}"> <a href="{{ siteurl }}{{ commentlink }}">
{{ siteurl }}{{ commentlink }}</a> {{ siteurl }}{{ commentlink }}</a>
</p> </p>

View File

@@ -125,7 +125,7 @@ class WorkoutViewTest(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 = reverse('workout_forcecurve_view',kwargs={'id':self.wwater.id}) url = reverse('workout_forcecurve_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -186,7 +186,7 @@ class WorkoutViewTest(TestCase):
expected_url = reverse(self.r.defaultlandingpage, expected_url = reverse(self.r.defaultlandingpage,
kwargs = { kwargs = {
'id':12 'id':encoder.encode_hex(12)
}) })
self.assertRedirects(response, self.assertRedirects(response,
@@ -209,7 +209,7 @@ class WorkoutViewTest(TestCase):
response = self.c.get('/') response = self.c.get('/')
url = reverse('multi_compare_view',kwargs={ url = reverse('multi_compare_view',kwargs={
'userid':self.u.id, 'userid':self.u.id,
'id':self.werg1.id, 'id':encoder.encode_hex(self.werg1.id),
}) })
print url print url
@@ -241,13 +241,13 @@ class WorkoutViewTest(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 = reverse('workout_view',kwargs={'id':self.wwater.id}) url = reverse('workout_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
url = reverse('workout_downloadmetar_view',kwargs={ url = reverse('workout_downloadmetar_view',kwargs={
'id': self.wwater.id, 'id': encoder.encode_hex(self.wwater.id),
'airportcode': 'LKHO' 'airportcode': 'LKHO'
} }
) )
@@ -256,7 +256,7 @@ class WorkoutViewTest(TestCase):
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
url = reverse('workout_downloadwind_view',kwargs={ url = reverse('workout_downloadwind_view',kwargs={
'id': self.wwater.id, 'id': encoder.encode_hex(self.wwater.id),
} }
) )
@@ -270,14 +270,14 @@ class WorkoutViewTest(TestCase):
self.assertTrue(login) self.assertTrue(login)
url = reverse('workout_smoothenpace_view',kwargs={'id':self.wwater.id}) url = reverse('workout_smoothenpace_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
response = self.c.get(url,follow=True) response = self.c.get(url,follow=True)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
expected_url = reverse(self.r.defaultlandingpage, expected_url = reverse(self.r.defaultlandingpage,
kwargs = { kwargs = {
'id':self.wwater.id 'id':encoder.encode_hex(self.wwater.id)
} }
) )
@@ -285,14 +285,14 @@ class WorkoutViewTest(TestCase):
expected_url=expected_url, expected_url=expected_url,
status_code=302,target_status_code=200) status_code=302,target_status_code=200)
url = reverse('workout_undo_smoothenpace_view',kwargs={'id':self.wwater.id}) url = reverse('workout_undo_smoothenpace_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
response = self.c.get(url,follow=True) response = self.c.get(url,follow=True)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
expected_url = reverse(self.r.defaultlandingpage, expected_url = reverse(self.r.defaultlandingpage,
kwargs = { kwargs = {
'id':self.wwater.id 'id':encoder.encode_hex(self.wwater.id)
} }
) )
@@ -308,7 +308,7 @@ class WorkoutViewTest(TestCase):
self.assertTrue(login) self.assertTrue(login)
url = reverse('workout_wind_view',kwargs={'id':self.wwater.id}) url = reverse('workout_wind_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -336,7 +336,7 @@ class WorkoutViewTest(TestCase):
self.assertTrue(login) self.assertTrue(login)
url = reverse('workout_stream_view',kwargs={'id':self.wwater.id}) url = reverse('workout_stream_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -363,7 +363,7 @@ class WorkoutViewTest(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 = reverse('instroke_view',kwargs={'id':self.winstroke.id}) url = reverse('instroke_view',kwargs={'id':encoder.encode_hex(self.winstroke.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -380,7 +380,7 @@ class WorkoutViewTest(TestCase):
self.assertTrue(login) self.assertTrue(login)
url = reverse('workout_otwsetpower_view',kwargs={'id':self.wwater.id}) url = reverse('workout_otwsetpower_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -397,7 +397,7 @@ class WorkoutViewTest(TestCase):
response = self.c.post(url,form_data,follow=True) response = self.c.post(url,form_data,follow=True)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
expected_url = reverse('workout_edit_view',kwargs={'id':self.wwater.id}) expected_url = reverse('workout_edit_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
self.assertRedirects(response, self.assertRedirects(response,
expected_url=expected_url, expected_url=expected_url,
@@ -410,7 +410,7 @@ class WorkoutViewTest(TestCase):
self.assertTrue(login) self.assertTrue(login)
url = reverse('workout_comment_view',kwargs={'id':self.wwater.id}) url = reverse('workout_comment_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -425,7 +425,7 @@ class WorkoutViewTest(TestCase):
response = self.c.post(url,form_data,follow=True) response = self.c.post(url,form_data,follow=True)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
url = reverse('workout_unsubscribe_view',kwargs={'id':self.wwater.id}) url = reverse('workout_unsubscribe_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -436,7 +436,7 @@ class WorkoutViewTest(TestCase):
self.assertTrue(login) self.assertTrue(login)
url = reverse('workout_map_view',kwargs={'id':self.wwater.id}) url = reverse('workout_map_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -448,7 +448,8 @@ class WorkoutViewTest(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 = reverse('workout_uploadimage_view',kwargs={'id':self.werg1.id}) url = reverse('workout_uploadimage_view',
kwargs={'id':encoder.encode_hex(self.werg1.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -466,7 +467,8 @@ class WorkoutViewTest(TestCase):
response = self.c.post(url,form_data,format='multipart',follow=True) response = self.c.post(url,form_data,format='multipart',follow=True)
expected_url = reverse(self.r.defaultlandingpage,kwargs={'id':self.werg1.id}) expected_url = reverse(self.r.defaultlandingpage,
kwargs={'id':encoder.encode_hex(self.werg1.id)})
self.assertRedirects(response, self.assertRedirects(response,
expected_url=expected_url, expected_url=expected_url,
@@ -480,7 +482,7 @@ class WorkoutViewTest(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 = reverse('workout_split_view',kwargs={'id':self.werg1.id}) url = reverse('workout_split_view',kwargs={'id':encoder.encode_hex(self.werg1.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -505,8 +507,9 @@ class WorkoutViewTest(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 = reverse('workout_fusion_view',kwargs={'id1':self.werg2.id, url = reverse('workout_fusion_view',
'id2':self.werg2copy.id}) kwargs={'id1':encoder.encode_hex(self.werg2.id),
'id2':encoder.encode_hex(self.werg2copy.id)})
response = self.c.get(url) response = self.c.get(url)
@@ -534,7 +537,7 @@ class WorkoutViewTest(TestCase):
self.assertTrue(login) self.assertTrue(login)
url = reverse('workout_summary_edit_view',kwargs={'id':self.wwater.id}) url = reverse('workout_summary_edit_view',kwargs={'id':encoder.encode_hex(self.wwater.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)

View File

@@ -103,7 +103,8 @@ class WorkoutViewTest(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 = reverse('workout_flexchart3_view',kwargs={'id':self.wwater.id}) url = reverse('workout_flexchart3_view',
kwargs={'id':encoder.encode_hex(self.wwater.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -126,7 +127,7 @@ class WorkoutViewTest(TestCase):
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
url = reverse('workout_flexchart3_view',kwargs={ url = reverse('workout_flexchart3_view',kwargs={
'id':self.wwater.id, 'id':encoder.encode_hex(self.wwater.id),
'xparam':'distance', 'xparam':'distance',
'yparam1':'hr', 'yparam1':'hr',
'yparam2':'power' 'yparam2':'power'
@@ -150,7 +151,8 @@ class WorkoutViewTest(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 = reverse('workout_flexchart3_view',kwargs={'id':self.werg1.id}) url = reverse('workout_flexchart3_view',
kwargs={'id':encoder.encode_hex(self.werg1.id)})
response = self.c.get(url) response = self.c.get(url)
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
@@ -168,7 +170,7 @@ class WorkoutViewTest(TestCase):
self.assertEqual(response.status_code,200) self.assertEqual(response.status_code,200)
url = reverse('workout_flexchart3_view',kwargs={ url = reverse('workout_flexchart3_view',kwargs={
'id':self.werg1.id, 'id':encoder.encode_hex(self.werg1.id),
'xparam':'distance', 'xparam':'distance',
'yparam1':'hr', 'yparam1':'hr',
'yparam2':'power' 'yparam2':'power'

View File

@@ -431,8 +431,11 @@ class STObjects(DjangoTestCase):
response = self.c.get('/rowers/workout/sporttracksimport/13/',follow=True) response = self.c.get('/rowers/workout/sporttracksimport/13/',follow=True)
expected_url = reverse('workout_edit_view',
kwargs = {'id':encoder.encode_hex(2)})
self.assertRedirects(response, self.assertRedirects(response,
expected_url='/rowers/workout/2/edit/', expected_url=expected_url,
status_code=302,target_status_code=200) status_code=302,target_status_code=200)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)

View File

@@ -1575,7 +1575,7 @@ class PlannedSessionsView(TestCase):
url = '/rowers/sessions/{psid}/detach/{id}/'.format( url = '/rowers/sessions/{psid}/detach/{id}/'.format(
psid=self.ps_time.id, psid=self.ps_time.id,
id = self.w1.id, id = encoder.encode_hex(self.w1.id),
) )
response = self.c.get(url,follow=True) response = self.c.get(url,follow=True)

View File

@@ -74,7 +74,7 @@ class SimpleViewTest(TestCase):
def test_getworkout(self): def test_getworkout(self):
with assert_raises(Http404): with assert_raises(Http404):
w = get_workout(123) w = get_workout(encoder.encode_hex(123))
def test_deactivate(self): def test_deactivate(self):
login = self.c.login(username=self.u.username, password=self.password) login = self.c.login(username=self.u.username, password=self.password)

View File

@@ -219,7 +219,7 @@ class URLTests(TestCase):
'/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+'/teststrokedata/', # '/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/',
@@ -270,6 +270,10 @@ class URLTests(TestCase):
expected) expected)
html = BeautifulSoup(response.content,'html.parser') html = BeautifulSoup(response.content,'html.parser')
if 'restore' in url:
print html.find_all('a')
urls = [a['href'] for a in html.find_all('a')] urls = [a['href'] for a in html.find_all('a')]
for u in urls: for u in urls:

Binary file not shown.

View File

@@ -165,9 +165,9 @@ urlpatterns = [
url(r'^virtualevent/(?P<id>\d+)/adddiscipline/$',views.virtualevent_addboat_view,name='virtualevent_addboat_view'), url(r'^virtualevent/(?P<id>\d+)/adddiscipline/$',views.virtualevent_addboat_view,name='virtualevent_addboat_view'),
url(r'^virtualevent/(?P<id>\d+)/withdraw/(?P<recordid>\d+)/$',views.virtualevent_withdraw_view,name='virtualevent_withdraw_view'), url(r'^virtualevent/(?P<id>\d+)/withdraw/(?P<recordid>\d+)/$',views.virtualevent_withdraw_view,name='virtualevent_withdraw_view'),
url(r'^virtualevent/(?P<id>\d+)/withdraw/$',views.virtualevent_withdraw_view,name='virtualevent_withdraw_view'), url(r'^virtualevent/(?P<id>\d+)/withdraw/$',views.virtualevent_withdraw_view,name='virtualevent_withdraw_view'),
url(r'^virtualevent/(?P<id>\d+)/submit/$', url(r'^virtualevent/(?P<id>\b[0-9A-Fa-f]+\b)/submit/$',
views.virtualevent_submit_result_view,name='virtualevent_submit_result_view'), views.virtualevent_submit_result_view,name='virtualevent_submit_result_view'),
url(r'^virtualevent/(?P<id>\d+)/submit/(?P<workoutid>\d+)/$', url(r'^virtualevent/(?P<id>\d+)/submit/(?P<workoutid>\b[0-9A-Fa-f]+\b)/$',
views.virtualevent_submit_result_view,name='virtualevent_submit_result_view'), views.virtualevent_submit_result_view,name='virtualevent_submit_result_view'),
url(r'^virtualevent/(?P<raceid>\d+)/disqualify/(?P<recordid>\d+)/', url(r'^virtualevent/(?P<raceid>\d+)/disqualify/(?P<recordid>\d+)/',
views.virtualevent_disqualify_view,name='virtualevent_disqualify_view'), views.virtualevent_disqualify_view,name='virtualevent_disqualify_view'),
@@ -251,21 +251,32 @@ urlpatterns = [
url(r'^cumstats/$',views.cumstats,name='cumstats'), url(r'^cumstats/$',views.cumstats,name='cumstats'),
url(r'^graph/(?P<id>\d+)/$',views.graph_show_view,name='graph_show_view'), url(r'^graph/(?P<id>\d+)/$',views.graph_show_view,name='graph_show_view'),
url(r'^graph/(?P<pk>\d+)/delete/$',views.GraphDelete.as_view(),name='graph_delete'), url(r'^graph/(?P<pk>\d+)/delete/$',views.GraphDelete.as_view(),name='graph_delete'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/get-thumbnails/$',views.get_thumbnails,name='get_thumbnails'), url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/get-thumbnails/$',views.get_thumbnails,
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/toggle-ranking/$',views.workout_toggle_ranking,name='workout_toggle_ranking'), name='get_thumbnails'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/get-testscript/$',views.get_testscript,name='get_testscript'), url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/toggle-ranking/$',views.workout_toggle_ranking,
name='workout_toggle_ranking'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/get-testscript/$',views.get_testscript,
name='get_testscript'),
url(r'^workout/upload/team/$',views.team_workout_upload_view,name='team_workout_upload_view'), url(r'^workout/upload/team/$',views.team_workout_upload_view,name='team_workout_upload_view'),
url(r'^workout/upload/$',views.workout_upload_view,name='workout_upload_view'), url(r'^workout/upload/$',views.workout_upload_view,name='workout_upload_view'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/histo/$',views.workout_histo_view,name='workout_histo_view'), url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/histo/$',views.workout_histo_view,
name='workout_histo_view'),
# url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/task/$',views.workout_test_task_view,name='workout_test_task_view'), # url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/task/$',views.workout_test_task_view,name='workout_test_task_view'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/forcecurve/$',views.workout_forcecurve_view,name='workout_forcecurve_view'), url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/forcecurve/$',views.workout_forcecurve_view,
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/unsubscribe/$',views.workout_unsubscribe_view,name='workout_unsubscribe_view'), name='workout_forcecurve_view'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/unsubscribe/$',views.workout_unsubscribe_view,
name='workout_unsubscribe_view'),
# url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/export/$',views.workout_export_view), # url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/export/$',views.workout_export_view),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/comment/$',views.workout_comment_view,name='workout_comment_view'), url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/comment/$',views.workout_comment_view,
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/emailtcx/$',views.workout_tcxemail_view,name='workout_tcxemail_view'), name='workout_comment_view'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/emailgpx/$',views.workout_gpxemail_view,name='workout_gpxemail_view'), url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/emailtcx/$',views.workout_tcxemail_view,
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/emailcsv/$',views.workout_csvemail_view,name='workout_csvemail_view'), name='workout_tcxemail_view'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/csvtoadmin/$',views.workout_csvtoadmin_view,name='workout_csvtoadmin_view'), url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/emailgpx/$',views.workout_gpxemail_view,
name='workout_gpxemail_view'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/emailcsv/$',views.workout_csvemail_view,
name='workout_csvemail_view'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/csvtoadmin/$',views.workout_csvtoadmin_view,
name='workout_csvtoadmin_view'),
url(r'^ergcpdatatoadmin/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.otecp_toadmin_view,name='otecp_toadmin_view'), url(r'^ergcpdatatoadmin/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.otecp_toadmin_view,name='otecp_toadmin_view'),
url(r'^otwcpdatatoadmin/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.otwcp_toadmin_view,name='otwcp_toadmin_view'), url(r'^otwcpdatatoadmin/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.otwcp_toadmin_view,name='otwcp_toadmin_view'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/edit/$',views.workout_edit_view, url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/edit/$',views.workout_edit_view,
@@ -314,7 +325,7 @@ urlpatterns = [
# keeping the old URLs for retrofit # keeping the old URLs for retrofit
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/addtimeplot/$', url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/addtimeplot/$',
views.workout_add_chart_view, views.workout_add_chart_view,
{'plotnr':'1'}), {'plotnr':'1'},name='workout_add_chart_view'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/adddistanceplot/$', url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/adddistanceplot/$',
views.workout_add_chart_view, views.workout_add_chart_view,
{'plotnr':'2'},name='workout_add_chart_view'), {'plotnr':'2'},name='workout_add_chart_view'),
@@ -576,8 +587,8 @@ urlpatterns = [
url(r'^sessions/(?P<id>\d+)/edit/user/(?P<userid>\d+)/$',views.plannedsession_edit_view), url(r'^sessions/(?P<id>\d+)/edit/user/(?P<userid>\d+)/$',views.plannedsession_edit_view),
url(r'^sessions/(?P<id>\d+)/clone/user/(?P<userid>\d+)/$',views.plannedsession_clone_view), url(r'^sessions/(?P<id>\d+)/clone/user/(?P<userid>\d+)/$',views.plannedsession_clone_view),
url(r'^sessions/(?P<id>\d+)/clone/$',views.plannedsession_clone_view), url(r'^sessions/(?P<id>\d+)/clone/$',views.plannedsession_clone_view),
url(r'^sessions/(?P<psid>\d+)/detach/(?P<id>\d+)/user/(?P<userid>\d+)/$',views.plannedsession_detach_view), url(r'^sessions/(?P<psid>\d+)/detach/(?P<id>\b[0-9A-Fa-f]+\b)/user/(?P<userid>\d+)/$',views.plannedsession_detach_view),
url(r'^sessions/(?P<psid>\d+)/detach/(?P<id>\d+)/$',views.plannedsession_detach_view), url(r'^sessions/(?P<psid>\d+)/detach/(?P<id>\b[0-9A-Fa-f]+\b)/$',views.plannedsession_detach_view),
url(r'^sessions/(?P<id>\d+)/$',views.plannedsession_view, url(r'^sessions/(?P<id>\d+)/$',views.plannedsession_view,
name='plannedsession_view'), name='plannedsession_view'),
url(r'^sessions/(?P<id>\d+)/user/(?P<userid>\d+)/$',views.plannedsession_view, url(r'^sessions/(?P<id>\d+)/user/(?P<userid>\d+)/$',views.plannedsession_view,

View File

@@ -51,7 +51,7 @@ def workout_tp_upload_view(request,id=0):
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':str(w.id), 'id':encoder.encode_hex(w.id),
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -106,7 +106,7 @@ def workout_strava_upload_view(request,id=0):
pass pass
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':str(w.id), 'id':encoder.encode_hex(w.id),
}) })
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
return response return response
@@ -137,14 +137,14 @@ def workout_strava_upload_view(request,id=0):
w.save() w.save()
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':str(w.id), 'id':encoder.encode_hex(w.id),
}) })
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':str(w.id), 'id':encoder.encode_hex(w.id),
} }
) )
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
@@ -156,7 +156,7 @@ def workout_strava_upload_view(request,id=0):
os.remove(tcxfile) os.remove(tcxfile)
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':str(w.id), 'id':encoder.encode_hex(w.id),
}) })
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
@@ -183,7 +183,7 @@ def workout_c2_upload_view(request,id=0):
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':int(id) 'id':encoder.encode_hex(w.id)
}) })
@@ -212,7 +212,7 @@ def workout_runkeeper_upload_view(request,id=0):
messages.error(request,message) messages.error(request,message)
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':str(w.id), 'id':id,
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -235,7 +235,8 @@ def workout_runkeeper_upload_view(request,id=0):
runkeeperid = runkeeperstuff.getidfromresponse(response) runkeeperid = runkeeperstuff.getidfromresponse(response)
w.uploadedtorunkeeper = runkeeperid w.uploadedtorunkeeper = runkeeperid
w.save() w.save()
url = reverse('workout_edit_view', kwargs={'id':w.id}) url = reverse('workout_edit_view',
kwargs={'id':encoder.encode_hex(w.id)})
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
else: else:
@@ -249,7 +250,7 @@ def workout_runkeeper_upload_view(request,id=0):
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':str(w.id), 'id':encoder.encode_hex(w.id),
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -275,7 +276,7 @@ def workout_underarmour_upload_view(request,id=0):
messages.error(request,message) messages.error(request,message)
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':str(w.id), 'id':encoder.encode_hex(w.id),
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -300,7 +301,7 @@ def workout_underarmour_upload_view(request,id=0):
underarmourid = underarmourstuff.getidfromresponse(response) underarmourid = underarmourstuff.getidfromresponse(response)
w.uploadedtounderarmour = underarmourid w.uploadedtounderarmour = underarmourid
w.save() w.save()
url = reverse('workout_edit_view',kwargs={'id':w.id}) url = reverse('workout_edit_view',kwargs={'id':encoder.encode_hex(w.id)})
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
else: else:
@@ -313,7 +314,7 @@ def workout_underarmour_upload_view(request,id=0):
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':str(w.id), 'id':encoder.encode_hex(w.id),
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -340,7 +341,7 @@ def workout_sporttracks_upload_view(request,id=0):
messages.error(request,message) messages.error(request,message)
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':str(w.id), 'id':encoder.encode_hex(w.id),
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -367,7 +368,7 @@ def workout_sporttracks_upload_view(request,id=0):
message = "Upload to SportTracks was successful" message = "Upload to SportTracks was successful"
messages.info(request,message) messages.info(request,message)
url = reverse('workout_edit_view',kwargs={'id':w.id}) url = reverse('workout_edit_view',kwargs={'id':encoder.encode_hex(w.id)})
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
else: else:
s = response s = response
@@ -379,7 +380,7 @@ def workout_sporttracks_upload_view(request,id=0):
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':str(w.id), 'id':encoder.encode_hex(w.id),
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -965,7 +966,7 @@ def workout_stravaimport_view(request,message="",userid=0):
'name':'Workouts' 'name':'Workouts'
}, },
{ {
'url':reverse(workout_stravaimport_view), 'url':reverse('workout_stravaimport_view'),
'name':'Strava' 'name':'Strava'
}, },
] ]
@@ -1021,7 +1022,7 @@ def workout_runkeeperimport_view(request,message="",userid=0):
'name':'Workouts' 'name':'Workouts'
}, },
{ {
'url':reverse(workout_runkeeperimport_view), 'url':reverse('workout_runkeeperimport_view'),
'name':'Runkeeper' 'name':'Runkeeper'
} }
] ]
@@ -1073,7 +1074,7 @@ def workout_underarmourimport_view(request,message="",userid=0):
'name':'Workouts' 'name':'Workouts'
}, },
{ {
'url':reverse(workout_c2import_view), 'url':reverse('workout_c2import_view'),
'name':'Concept2' 'name':'Concept2'
}, },
] ]
@@ -1126,7 +1127,7 @@ def workout_polarimport_view(request,userid=0):
'name':'Workouts' 'name':'Workouts'
}, },
{ {
'url':reverse(workout_polarimport_view), 'url':reverse('workout_polarimport_view'),
'name':'Polar' 'name':'Polar'
}, },
] ]
@@ -1198,7 +1199,7 @@ def workout_sporttracksimport_view(request,message="",userid=0):
'name':'Workouts' 'name':'Workouts'
}, },
{ {
'url':reverse(workout_sporttracksimport_view), 'url':reverse('workout_sporttracksimport_view'),
'name':'SportTracks' 'name':'SportTracks'
}, },
] ]
@@ -1343,11 +1344,11 @@ def workout_c2import_view(request,page=1,userid=0,message=""):
'name':'Workouts' 'name':'Workouts'
}, },
{ {
'url':reverse(workout_c2import_view), 'url':reverse('workout_c2import_view'),
'name':'Concept2' 'name':'Concept2'
}, },
{ {
'url':reverse(workout_c2import_view,kwargs={'page':page}), 'url':reverse('workout_c2import_view',kwargs={'page':page}),
'name':'Page '+str(page) 'name':'Page '+str(page)
} }
] ]
@@ -1445,7 +1446,7 @@ def workout_getimportview(request,externalid,source = 'c2'):
messages.info(request,message) messages.info(request,message)
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':int(id), 'id':encoder.encode_hex(w.id),
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -1458,7 +1459,7 @@ def workout_getimportview(request,externalid,source = 'c2'):
source=source, source=source,
workoutsource=source) workoutsource=source)
w = get_workout(id) w = get_workout(encoder.encode_hex(id))
if 'workout' in data: if 'workout' in data:
if 'splits' in data['workout']: if 'splits' in data['workout']:
@@ -1516,7 +1517,7 @@ def workout_getimportview(request,externalid,source = 'c2'):
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':int(id) 'id':encoder.encode_hex(w.id)
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)

View File

@@ -2251,7 +2251,7 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0):
else: else:
if workoutid: if workoutid:
workoutdata['initial'] = workoutid workoutdata['initial'] = encoder.decode_hex(workoutid)
w_form = WorkoutRaceSelectForm(workoutdata,entries) w_form = WorkoutRaceSelectForm(workoutdata,entries)

View File

@@ -30,6 +30,7 @@ import cgi
from icalendar import Calendar, Event from icalendar import Calendar, Event
import rowers.braintreestuff as braintreestuff import rowers.braintreestuff as braintreestuff
import rowers.payments as payments import rowers.payments as payments
from rowers.opaque import encoder
from django.shortcuts import render from django.shortcuts import render
from django.template.loader import render_to_string from django.template.loader import render_to_string
@@ -258,13 +259,13 @@ def getfavorites(r,row):
def get_workout_default_page(request,id): def get_workout_default_page(request,id):
if request.user.is_anonymous(): if request.user.is_anonymous():
return reverse('workout_view',kwargs={'id':str(id)}) return reverse('workout_view',kwargs={'id':id})
else: else:
r = Rower.objects.get(user=request.user) r = Rower.objects.get(user=request.user)
if r.defaultlandingpage == 'workout_edit_view': if r.defaultlandingpage == 'workout_edit_view':
return reverse('workout_edit_view',kwargs={'id':str(id)}) return reverse('workout_edit_view',kwargs={'id':id})
else: else:
return reverse('workout_workflow_view',kwargs={'id':str(id)}) return reverse('workout_workflow_view',kwargs={'id':id})
def getrequestrower(request,rowerid=0,userid=0,notpermanent=False): def getrequestrower(request,rowerid=0,userid=0,notpermanent=False):
@@ -318,6 +319,7 @@ def getrower(user):
def get_workout(id): def get_workout(id):
try: try:
id = encoder.decode_hex(id)
w = Workout.objects.get(id=id) w = Workout.objects.get(id=id)
except Workout.DoesNotExist: except Workout.DoesNotExist:
raise Http404("Workout doesn't exist") raise Http404("Workout doesn't exist")

View File

@@ -60,7 +60,7 @@ def workout_forcecurve_view(request,id=0,workstrokesonly=False):
'the_div':div, 'the_div':div,
'js_res': js_resources, 'js_res': js_resources,
'css_res':css_resources, 'css_res':css_resources,
'id':int(id), 'id':id,
'mayedit':mayedit, 'mayedit':mayedit,
'workstrokesonly': not workstrokesonly, 'workstrokesonly': not workstrokesonly,
'teams':get_my_teams(request.user), 'teams':get_my_teams(request.user),
@@ -126,7 +126,7 @@ def workout_histo_view(request,id=0):
'workout':w, 'workout':w,
'rower':r, 'rower':r,
'the_div':div, 'the_div':div,
'id':int(id), 'id':id,
'mayedit':mayedit, 'mayedit':mayedit,
'teams':get_my_teams(request.user), 'teams':get_my_teams(request.user),
}) })
@@ -248,7 +248,7 @@ def addmanual_view(request):
url = reverse( url = reverse(
'workout_edit_view', 'workout_edit_view',
kwargs={'id':id} kwargs={'id':encoder.encode_hex(id)}
) )
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
else: else:
@@ -371,14 +371,14 @@ def workout_recalcsummary_view(request,id=0):
messages.info(request,successmessage) messages.info(request,successmessage)
url = reverse('workout_edit_view', url = reverse('workout_edit_view',
kwargs = { kwargs = {
'id':int(id), 'id':id,
}) })
else: else:
message = "Something went wrong. Could not update summary" message = "Something went wrong. Could not update summary"
messages.error(request,message) messages.error(request,message)
url = reverse('workout_edit_view', url = reverse('workout_edit_view',
kwargs = { kwargs = {
'id':int(id), 'id':id,
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -419,7 +419,7 @@ def workouts_join_view(request):
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':int(id), 'id':encoder.encode_hex(id),
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -740,7 +740,7 @@ def team_comparison_select(request,
if not checkworkoutuser(request.user,firstworkout): if not checkworkoutuser(request.user,firstworkout):
raise PermissionDenied("You are not allowed to sue this workout") raise PermissionDenied("You are not allowed to sue this workout")
firstworkoutquery = Workout.objects.filter(id=id) firstworkoutquery = Workout.objects.filter(id=encoder.decode_hex(id))
workouts = firstworkoutquery | workouts workouts = firstworkoutquery | workouts
else: else:
firstworkout = None firstworkout = None
@@ -856,7 +856,7 @@ def virtualevent_compare_view(request,id=0):
workouts = [] workouts = []
for id in workoutids: for id in workoutids:
try: try:
workouts.append(Workout.objects.get(id=id)) workouts.append(Workout.objects.get(id=encode.decode_hex(id)))
except Workout.DoesNotExist: except Workout.DoesNotExist:
pass pass
@@ -888,7 +888,7 @@ def virtualevent_compare_view(request,id=0):
workouts = [] workouts = []
for id in workoutids: for id in workoutids:
try: try:
workouts.append(Workout.objects.get(id=id)) workouts.append(Workout.objects.get(id=encoded.decode_hex(id)))
except Workout.DoesNotExist: except Workout.DoesNotExist:
pass pass
@@ -989,7 +989,8 @@ def plannedsession_compare_view(request,id=0,userid=0):
request.session['ps'] = ps.id request.session['ps'] = ps.id
if ids: if ids:
url = reverse('multi_compare_view',kwargs={'userid':userid,'id':ids[0]}) url = reverse('multi_compare_view',
kwargs={'userid':userid,'id':encoder.encode_hex(ids[0])})
else: else:
url = reverse('plannedsession_view',kwargs={'id':ps.id}) url = reverse('plannedsession_view',kwargs={'id':ps.id})
@@ -1401,9 +1402,12 @@ def workout_fusion_list(request,id=0,message='',successmessage='',
enddate = startdate enddate = startdate
startdate = s startdate = s
if id:
theid = encoder.decode_hex(id)
workouts = Workout.objects.filter(user=r, workouts = Workout.objects.filter(user=r,
startdatetime__gte=startdate, startdatetime__gte=startdate,
startdatetime__lte=enddate).order_by("-date", "-starttime").exclude(id=id) startdatetime__lte=enddate).order_by("-date", "-starttime").exclude(id=theid)
query = request.GET.get('q') query = request.GET.get('q')
if query: if query:
@@ -1438,7 +1442,7 @@ def workout_fusion_list(request,id=0,message='',successmessage='',
'name':'Workouts' 'name':'Workouts'
}, },
{ {
'url':get_workout_default_page(request,row.id), 'url':get_workout_default_page(request,encoder.encode_hex(row.id)),
'name': row.name 'name': row.name
}, },
{ {
@@ -1449,7 +1453,7 @@ def workout_fusion_list(request,id=0,message='',successmessage='',
] ]
return render(request, 'fusion_list.html', return render(request, 'fusion_list.html',
{'id':int(id), {'id':id,
'workout':row, 'workout':row,
'rower':r, 'rower':r,
'searchform':searchform, 'searchform':searchform,
@@ -1474,7 +1478,7 @@ def workout_view(request,id=0):
rower = None rower = None
try: try:
row = Workout.objects.get(id=id) row = Workout.objects.get(id=encoder.decode_hex(id))
except Workout.DoesNotExist: except Workout.DoesNotExist:
raise Http404("Workout doesn't exist") raise Http404("Workout doesn't exist")
@@ -1499,7 +1503,7 @@ def workout_view(request,id=0):
# create interactive plot # create interactive plot
res = interactive_chart(id) res = interactive_chart(encoder.decode_hex(id))
script = res[0] script = res[0]
div = res[1] div = res[1]
@@ -1591,7 +1595,7 @@ def workout_undo_smoothenpace_view(
row.df[' Stroke500mPace (sec/500m)'] = 500./velo row.df[' Stroke500mPace (sec/500m)'] = 500./velo
row.write_csv(filename,gzip=True) row.write_csv(filename,gzip=True)
dataprep.update_strokedata(id,row.df) dataprep.update_strokedata(encoder.decode_hex(id),row.df)
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
@@ -1641,7 +1645,7 @@ def workout_smoothenpace_view(request,id=0,message="",successmessage=""):
row.df = row.df.fillna(0) row.df = row.df.fillna(0)
row.write_csv(filename,gzip=True) row.write_csv(filename,gzip=True)
dataprep.update_strokedata(id,row.df) dataprep.update_strokedata(encoder.decode_hex(id),row.df)
messages.info(request,'A smoothening filter was applied to your pace data') messages.info(request,'A smoothening filter was applied to your pace data')
@@ -1694,7 +1698,7 @@ def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
messages.info(request,successmessage) messages.info(request,successmessage)
url = reverse('workout_edit_view', url = reverse('workout_edit_view',
kwargs = { kwargs = {
'id':int(id), 'id':id,
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -1707,7 +1711,7 @@ def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""):
messages.error(request,message) messages.error(request,message)
url = reverse('workout_edit_view', url = reverse('workout_edit_view',
kwargs = { kwargs = {
'id':int(id), 'id':id,
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
else: else:
@@ -1785,7 +1789,7 @@ def workout_downloadwind_view(request,id=0,
messages.info(request,message) messages.info(request,message)
kwargs = { kwargs = {
'id':int(id)} 'id':id}
url = reverse('workout_wind_view',kwargs=kwargs) url = reverse('workout_wind_view',kwargs=kwargs)
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
@@ -1793,7 +1797,7 @@ def workout_downloadwind_view(request,id=0,
message = "No latitude/longitude data" message = "No latitude/longitude data"
messages.error(request,message) messages.error(request,message)
kwargs = { kwargs = {
'id':int(id) 'id':id
} }
url = reverse('workout_wind_view',kwargs=kwargs) url = reverse('workout_wind_view',kwargs=kwargs)
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
@@ -1851,7 +1855,7 @@ def workout_downloadmetar_view(request,id=0,
messages.info(request,message) messages.info(request,message)
kwargs = { kwargs = {
'id':int(id)} 'id':id}
url = reverse('workout_wind_view',kwargs=kwargs) url = reverse('workout_wind_view',kwargs=kwargs)
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
@@ -1859,7 +1863,7 @@ def workout_downloadmetar_view(request,id=0,
message = "No latitude/longitude data" message = "No latitude/longitude data"
messages.error(request,message) messages.error(request,message)
kwargs = { kwargs = {
'id':int(id) 'id':id
} }
url = reverse('workout_wind_view',kwargs=kwargs) url = reverse('workout_wind_view',kwargs=kwargs)
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
@@ -1963,7 +1967,7 @@ def workout_wind_view(request,id=0,message="",successmessage=""):
message = "Invalid Form" message = "Invalid Form"
messages.error(request,message) messages.error(request,message)
kwargs = { kwargs = {
'id':int(id) 'id':id
} }
url = reverse('workout_wind_view',kwargs=kwargs) url = reverse('workout_wind_view',kwargs=kwargs)
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
@@ -1972,7 +1976,7 @@ def workout_wind_view(request,id=0,message="",successmessage=""):
form = UpdateWindForm() form = UpdateWindForm()
# create interactive plot # create interactive plot
res = interactive_windchart(id,promember=1) res = interactive_windchart(encoder.decode_hex(id),promember=1)
script = res[0] script = res[0]
div = res[1] div = res[1]
@@ -2050,7 +2054,7 @@ def workout_stream_view(request,id=0,message="",successmessage=""):
message = "Invalid Form" message = "Invalid Form"
messages.error(request,message) messages.error(request,message)
kwargs = { kwargs = {
'id':int(id)} 'id':id}
url = reverse('workout_wind_view',kwargs=kwargs) url = reverse('workout_wind_view',kwargs=kwargs)
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
@@ -2058,7 +2062,7 @@ def workout_stream_view(request,id=0,message="",successmessage=""):
form = UpdateStreamForm() form = UpdateStreamForm()
# create interactive plot # create interactive plot
res = interactive_streamchart(id,promember=1) res = interactive_streamchart(encoder.decode_hex(id),promember=1)
script = res[0] script = res[0]
div = res[1] div = res[1]
@@ -2173,7 +2177,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. You can check the status of your calculations <a href="/rowers/jobs-status/" target="_blank">here</a>' successmessage = 'Your calculations have been submitted. You will receive an email when they are done. You can check the status of your calculations <a href="/rowers/jobs-status/" target="_blank">here</a>'
messages.info(request,successmessage) messages.info(request,successmessage)
kwargs = { kwargs = {
'id':int(id)} 'id':id}
try: try:
url = request.session['referer'] url = request.session['referer']
@@ -2187,7 +2191,7 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
message = "Invalid Form" message = "Invalid Form"
messages.error(request,message) messages.error(request,message)
kwargs = { kwargs = {
'id':int(id)} 'id':id}
url = reverse('workout_otwsetpower_view',kwargs=kwargs) url = reverse('workout_otwsetpower_view',kwargs=kwargs)
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
@@ -2366,7 +2370,7 @@ def workout_data_view(request, id=0):
] ]
datadf,row = dataprep.getrowdata_db(id=id) datadf,row = dataprep.getrowdata_db(id=encoder.decode_hex(id))
datadf.sort_values(['ftime'],inplace=True) datadf.sort_values(['ftime'],inplace=True)
@@ -2473,14 +2477,14 @@ def workout_stats_view(request,id=0,message="",successmessage=""):
# prepare data frame # prepare data frame
datadf,row = dataprep.getrowdata_db(id=id) datadf,row = dataprep.getrowdata_db(id=encoder.decode_hex(id))
if (checkworkoutuser(request.user,row)==False): if (checkworkoutuser(request.user,row)==False):
raise PermissionDenied('Access Denied') raise PermissionDenied('Access Denied')
datadf = dataprep.clean_df_stats(datadf,workstrokesonly=workstrokesonly) datadf = dataprep.clean_df_stats(datadf,workstrokesonly=workstrokesonly)
if datadf.empty: if datadf.empty:
datadf,row = dataprep.getrowdata_db(id=id) datadf,row = dataprep.getrowdata_db(id=encoder.decode_hex(id))
datadf = dataprep.clean_df_stats(datadf,workstrokesonly=False) datadf = dataprep.clean_df_stats(datadf,workstrokesonly=False)
workstrokesonly=False workstrokesonly=False
if datadf.empty: if datadf.empty:
@@ -2964,7 +2968,7 @@ def workout_flexchart3_view(request,*args,**kwargs):
css_resources, css_resources,
workstrokesonly workstrokesonly
) = interactive_flex_chart2( ) = interactive_flex_chart2(
id,xparam=xparam,yparam1=yparam1, encoder.decode_hex(id),xparam=xparam,yparam1=yparam1,
yparam2=yparam2, yparam2=yparam2,
promember=promember,plottype=plottype, promember=promember,plottype=plottype,
workstrokesonly=workstrokesonly workstrokesonly=workstrokesonly
@@ -2977,7 +2981,7 @@ def workout_flexchart3_view(request,*args,**kwargs):
css_resources, css_resources,
workstrokesonly workstrokesonly
) = interactive_flex_chart2( ) = interactive_flex_chart2(
id,xparam=xparam,yparam1=yparam1, encoder.decode_hex(id),xparam=xparam,yparam1=yparam1,
yparam2=yparam2, yparam2=yparam2,
promember=promember,plottype=plottype, promember=promember,plottype=plottype,
workstrokesonly=workstrokesonly workstrokesonly=workstrokesonly
@@ -3044,7 +3048,7 @@ def workout_flexchart3_view(request,*args,**kwargs):
flexoptionsform = FlexOptionsForm(initial=initial) flexoptionsform = FlexOptionsForm(initial=initial)
row = Workout.objects.get(id=id) row = Workout.objects.get(id=encoder.decode_hex(id))
breadcrumbs = [ breadcrumbs = [
{ {
@@ -3076,7 +3080,7 @@ def workout_flexchart3_view(request,*args,**kwargs):
'js_res': js_resources, 'js_res': js_resources,
'css_res':css_resources, 'css_res':css_resources,
'teams':get_my_teams(request.user), 'teams':get_my_teams(request.user),
'id':int(id), 'id':id,
'xparam':xparam, 'xparam':xparam,
'yparam1':yparam1, 'yparam1':yparam1,
'yparam2':yparam2, 'yparam2':yparam2,
@@ -3135,7 +3139,7 @@ def workout_otwpowerplot_view(request,id=0,message="",successmessage=""):
mayedit=1 mayedit=1
# create interactive plot # create interactive plot
res = interactive_otw_advanced_pace_chart(id,promember=promember) res = interactive_otw_advanced_pace_chart(encoder.decode_hex(id),promember=promember)
script = res[0] script = res[0]
div = res[1] div = res[1]
@@ -3213,7 +3217,7 @@ def workout_comment_view(request,id=0):
c.save() c.save()
url = reverse('workout_comment_view', url = reverse('workout_comment_view',
kwargs={ kwargs={
'id':id 'id':id,
}) })
message = '{name} says: <a href="{url}">{comment}</a>'.format( message = '{name} says: <a href="{url}">{comment}</a>'.format(
name = request.user.first_name, name = request.user.first_name,
@@ -3342,20 +3346,20 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
try: try:
boattype = request.POST['boattype'] boattype = request.POST['boattype']
except KeyError: except KeyError:
boattype = Workout.objects.get(id=id).boattype boattype = Workout.objects.get(id=encoder.decode_hex(id)).boattype
try: try:
privacy = request.POST['privacy'] privacy = request.POST['privacy']
except KeyError: except KeyError:
privacy = Workout.objects.get(id=id).privacy privacy = Workout.objects.get(id=row.id).privacy
try: try:
rankingpiece = form.cleaned_data['rankingpiece'] rankingpiece = form.cleaned_data['rankingpiece']
except KeyError: except KeyError:
rankingpiece =- Workout.objects.get(id=id).rankingpiece rankingpiece =- Workout.objects.get(id=row.id).rankingpiece
try: try:
duplicate = form.cleaned_data['duplicate'] duplicate = form.cleaned_data['duplicate']
except KeyError: except KeyError:
duplicate = Workout.objects.get(id=id).duplicate duplicate = Workout.objects.get(id=row.id).duplicate
if private: if private:
privacy = 'private' privacy = 'private'
@@ -3418,7 +3422,7 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
return HttpResponse("Error: CSV Data File Not Found") return HttpResponse("Error: CSV Data File Not Found")
r.rowdatetime = startdatetime r.rowdatetime = startdatetime
r.write_csv(row.csvfilename,gzip=True) r.write_csv(row.csvfilename,gzip=True)
dataprep.update_strokedata(id,r.df) dataprep.update_strokedata(encoder.decode_hex(id),r.df)
successmessage = "Changes saved" successmessage = "Changes saved"
if rankingpiece: if rankingpiece:
@@ -3427,7 +3431,7 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
messages.info(request,successmessage) messages.info(request,successmessage)
url = reverse('workout_edit_view', url = reverse('workout_edit_view',
kwargs = { kwargs = {
'id':str(row.id), 'id':encoder.encode_hex(row.id),
}) })
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
@@ -3486,11 +3490,11 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
'name':'Workouts' 'name':'Workouts'
}, },
{ {
'url':get_workout_default_page(request,id), 'url':get_workout_default_page(request,encoder.encode_hex(row.id)),
'name': row.name 'name': row.name
}, },
{ {
'url':reverse('workout_edit_view',kwargs={'id':id}), 'url':reverse('workout_edit_view',kwargs={'id':encoder.encode_hex(row.id)}),
'name': 'Edit' 'name': 'Edit'
} }
@@ -3631,7 +3635,7 @@ def workout_uploadimage_view(request,id):
messages.error(request,message) messages.error(request,message)
url = reverse(r.defaultlandingpage, url = reverse(r.defaultlandingpage,
kwargs = { kwargs = {
'id':int(id), 'id':id,
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -3729,7 +3733,7 @@ def workout_add_chart_view(request,id,plotnr=1):
request.session['async_tasks'] = [(jobid,'make_plot')] request.session['async_tasks'] = [(jobid,'make_plot')]
url = reverse(r.defaultlandingpage,kwargs={'id':str(w.id)}) url = reverse(r.defaultlandingpage,kwargs={'id':encoder.encode_hex(w.id)})
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -4004,9 +4008,11 @@ def workout_upload_view(request,
if message: if message:
messages.error(request,message) messages.error(request,message)
w = Workout.objects.get(id=id)
url = reverse('workout_edit_view', url = reverse('workout_edit_view',
kwargs = { kwargs = {
'id':int(id), 'id':encoder.encode_hex(w.id),
}) })
if is_ajax: if is_ajax:
@@ -4014,7 +4020,6 @@ def workout_upload_view(request,
else: else:
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
w = Workout.objects.get(id=id)
r = getrower(request.user) r = getrower(request.user)
if (make_plot): if (make_plot):
@@ -4135,7 +4140,7 @@ def workout_upload_view(request,
if landingpage != 'workout_upload_view': if landingpage != 'workout_upload_view':
url = reverse(landingpage, url = reverse(landingpage,
kwargs = { kwargs = {
'id':w.id, 'id':encoder.encode_hex(w.id),
}) })
else: else:
url = reverse(landingpage) url = reverse(landingpage)
@@ -4326,7 +4331,7 @@ def team_workout_upload_view(request,message="",
url = reverse('team_workout_upload_view') url = reverse('team_workout_upload_view')
response = HttpResponseRedirect(url) response = HttpResponseRedirect(url)
w = Workout.objects.get(id=id) w = Workout.objects.get(id=encoder.decode_hex(id))
r = getrower(request.user) r = getrower(request.user)
if (make_plot): if (make_plot):
@@ -4459,12 +4464,7 @@ def graph_show_view(request,id):
# Restore original stroke data and summary # Restore original stroke data and summary
@login_required() @login_required()
def workout_summary_restore_view(request,id,message="",successmessage=""): def workout_summary_restore_view(request,id,message="",successmessage=""):
try: row = get_workout_permitted(request.user,id)
row = Workout.objects.get(id=id)
if (checkworkoutuser(request.user,row)==False):
raise PermissionDenied("You are not allowed to edit this workout")
except Workout.DoesNotExist:
raise Http404("Workout doesn't exist")
s = "" s = ""
# still here - this is a workout we may edit # still here - this is a workout we may edit
@@ -4489,14 +4489,14 @@ def workout_summary_restore_view(request,id,message="",successmessage=""):
raise Http404("Error: CSV Data File Not Found") raise Http404("Error: CSV Data File Not Found")
rowdata.restoreintervaldata() rowdata.restoreintervaldata()
rowdata.write_csv(f1,gzip=True) rowdata.write_csv(f1,gzip=True)
dataprep.update_strokedata(id,rowdata.df) dataprep.update_strokedata(encoder.decode_hex(id),rowdata.df)
intervalstats = rowdata.allstats() intervalstats = rowdata.allstats()
row.summary = intervalstats row.summary = intervalstats
row.save() row.save()
# create interactive plot # create interactive plot
try: try:
res = interactive_chart(id,promember=1) res = interactive_chart(encoder.decode_hex(id),promember=1)
script = res[0] script = res[0]
div = res[1] div = res[1]
except ValueError: except ValueError:
@@ -4506,14 +4506,14 @@ def workout_summary_restore_view(request,id,message="",successmessage=""):
messages.info(request,'Original Interval Data Restored') messages.info(request,'Original Interval Data Restored')
url = reverse('workout_summary_edit_view', url = reverse('workout_summary_edit_view',
kwargs={ kwargs={
'id':int(id), 'id':encoder.encode_hex(row.id),
} }
) )
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
# 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):
row = get_workout_permitted(request.user,id) row = get_workout_permitted(request.user,id)
r = row.user r = row.user
@@ -4524,11 +4524,11 @@ def workout_split_view(request,id=id):
'name':'Workouts' 'name':'Workouts'
}, },
{ {
'url':get_workout_default_page(request,row.id), 'url':get_workout_default_page(request,id),
'name': row.name 'name': row.name
}, },
{ {
'url':reverse('graph_show_view', 'url':reverse('workout_split_view',
kwargs={'id':id}), kwargs={'id':id}),
'name': 'Chart' 'name': 'Chart'
} }
@@ -4586,7 +4586,7 @@ def workout_split_view(request,id=id):
# create interactive plot # create interactive plot
try: try:
res = interactive_chart(id,promember=1) res = interactive_chart(encoder.decode_hex(id),promember=1)
script = res[0] script = res[0]
div = res[1] div = res[1]
except ValueError: except ValueError:
@@ -4607,6 +4607,12 @@ def workout_split_view(request,id=id):
@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):
try:
id1 = encoder.decode_hex(id1)
id2 = encoder.decode_hex(id2)
except:
pass
r = getrower(request.user) r = getrower(request.user)
try: try:
@@ -4645,7 +4651,7 @@ def workout_fusion_view(request,id1=0,id2=1):
url = reverse('workout_edit_view', url = reverse('workout_edit_view',
kwargs={ kwargs={
'id':idnew, 'id':encoder.encode_hex(idnew),
}) })
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
@@ -4662,12 +4668,15 @@ def workout_fusion_view(request,id1=0,id2=1):
'name': str(w1.id) 'name': str(w1.id)
}, },
{ {
'url':reverse('workout_fusion_list',kwargs={'id':id1}), 'url':reverse('workout_fusion_list',kwargs={'id':encoder.encode_hex(id1)}),
'name': 'Sensor Fusion' 'name': 'Sensor Fusion'
}, },
{ {
'url':reverse('workout_fusion_view', 'url':reverse('workout_fusion_view',
kwargs={'id1':id1,'id2':id2}), kwargs={
'id1':encoder.encode_hex(id1),
'id2':encoder.encode_hex(id2)
}),
'name': str(w2.id) 'name': str(w2.id)
} }
@@ -4837,7 +4846,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
rowdata.write_csv(f1,gzip=True) rowdata.write_csv(f1,gzip=True)
dataprep.update_strokedata(id,rowdata.df) dataprep.update_strokedata(encoder.decode_hex(id),rowdata.df)
messages.info(request,"Updated interval data saved") messages.info(request,"Updated interval data saved")
data = { data = {
@@ -4881,7 +4890,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
row.save() row.save()
rowdata.write_csv(f1,gzip=True) rowdata.write_csv(f1,gzip=True)
dataprep.update_strokedata(id,rowdata.df) dataprep.update_strokedata(encoder.decode_hex(id),rowdata.df)
messages.info(request,"Updated interval data saved") messages.info(request,"Updated interval data saved")
data = {'intervalstring':s} data = {'intervalstring':s}
form = SummaryStringForm(initial=data) form = SummaryStringForm(initial=data)
@@ -4996,7 +5005,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
row.save() row.save()
rowdata.write_csv(f1,gzip=True) rowdata.write_csv(f1,gzip=True)
dataprep.update_strokedata(id,rowdata.df) dataprep.update_strokedata(encoder.decode_hex(id),rowdata.df)
messages.info(request,"Updated interval data saved") messages.info(request,"Updated interval data saved")
form = SummaryStringForm() form = SummaryStringForm()
@@ -5077,11 +5086,12 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
'normp': normp, 'normp': normp,
'normv': normv, 'normv': normv,
} }
res = interactive_chart(id,promember=1,intervaldata=intervaldata) res = interactive_chart(encoder.decode_hex(id),promember=1,intervaldata=intervaldata)
script = res[0] script = res[0]
div = res[1] div = res[1]
except ValueError: except ValueError:
pass script = ''
div = ''
# render page # render page