diff --git a/rowers/dataprep.py b/rowers/dataprep.py index c7fe2a0b..dc236d51 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -1139,7 +1139,7 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower', btvalues=btvalues.to_json()) - return (encoder.encode_hex(w.id), message) + return (w.id, message) parsers = { 'kinomap': KinoMapParser, diff --git a/rowers/management/commands/processemail.py b/rowers/management/commands/processemail.py index 84e34924..6010c55f 100644 --- a/rowers/management/commands/processemail.py +++ b/rowers/management/commands/processemail.py @@ -77,12 +77,12 @@ def processattachment(rower, fileobj, title, uploadoptions,testing=False): link = settings.SITE_URL+reverse( rower.defaultlandingpage, kwargs = { - 'id':workoutid[0], + 'id':encoder.encode_hex(workoutid[0]), } ) if uploadoptions and not 'error' in uploadoptions: - workout = Workout.objects.get(id=encoder.decode_hex(workoutid[0])) + workout = Workout.objects.get(id=workoutid[0]) uploads.make_private(workout, uploadoptions) uploads.set_workouttype(workout, uploadoptions) uploads.do_sync(workout, uploadoptions) diff --git a/rowers/templates/plannedsessions.html b/rowers/templates/plannedsessions.html index e59befdd..573df861 100644 --- a/rowers/templates/plannedsessions.html +++ b/rowers/templates/plannedsessions.html @@ -142,20 +142,20 @@ {% if workout.user.user == user or user == team.manager %} {% if workout.name != '' %} - + {{ workout.name }} {% else %} - No Name + No Name {% endif %} {% else %} {% if workout.name != '' %} - {{ workout.name }} + {{ workout.name }} {% else %} - No Name + No Name {% endif %} {% endif %} {{ workout.workouttype }} diff --git a/rowers/templates/plannedsessionscoach.html b/rowers/templates/plannedsessionscoach.html index e582e40d..52c01504 100644 --- a/rowers/templates/plannedsessionscoach.html +++ b/rowers/templates/plannedsessionscoach.html @@ -97,20 +97,20 @@ {% if workout.user.user == user or user == team.manager %} {% if workout.name != '' %} - + {{ workout.name }} {% else %} - No Name + No Name {% endif %} {% else %} {% if workout.name != '' %} - {{ workout.name }} + {{ workout.name }} {% else %} - No Name + No Name {% endif %} {% endif %} {{ workout.workouttype }} diff --git a/rowers/templates/summary_edit.html b/rowers/templates/summary_edit.html index b40482cd..58caafad 100644 --- a/rowers/templates/summary_edit.html +++ b/rowers/templates/summary_edit.html @@ -30,7 +30,7 @@ Public link to this workout - https://rowsandall.com/rowers/workout/{{ workout.id }} + https://rowsandall.com/rowers/workout/{{ workout.id|encode }} @@ -38,7 +38,7 @@

See the how-to at the bottom of this page for details on how to use this form.

-
+ {{ form.as_table }}
@@ -73,7 +73,7 @@
  • Updated Summary

    - + {% csrf_token %} @@ -89,7 +89,7 @@ Reset to last saved   - Restore Original data + Restore Original data
  • @@ -101,7 +101,7 @@

  • Detailed Summary Edit

    This is still experimental and there are known bugs. Use at your own risk. Nothing is stored permanently until you hit Save in the Updated Summary section. You can use the restore original button to restore the original values.

    -
    + diff --git a/rowers/templates/windedit.html b/rowers/templates/windedit.html index e509ff2e..d37930d1 100644 --- a/rowers/templates/windedit.html +++ b/rowers/templates/windedit.html @@ -41,9 +41,9 @@
  • Closest Airport Weather: {{ airport }} ({{ airportdistance | floatformat:-1 }} km) - Airport Data

    + Airport Data

    - Dark Sky Data + Dark Sky Data

    Download wind speed and bearing from The Dark Sky

    diff --git a/rowers/templates/workout_comments.html b/rowers/templates/workout_comments.html index 1eae9f00..b14abfb4 100644 --- a/rowers/templates/workout_comments.html +++ b/rowers/templates/workout_comments.html @@ -38,7 +38,7 @@
  • Public link to this workout - https://rowsandall.com/rowers/workout/{{ workout.id }}/ + https://rowsandall.com/rowers/workout/{{ workout.id|encode }}/
    @@ -56,7 +56,7 @@

    {% endfor %} - + {{ form.as_table }}
    diff --git a/rowers/templates/workout_form.html b/rowers/templates/workout_form.html index a774bd12..6cbe4c3f 100644 --- a/rowers/templates/workout_form.html +++ b/rowers/templates/workout_form.html @@ -65,7 +65,7 @@ $('#id_workouttype').change();

    @@ -86,7 +86,7 @@ $('#id_workouttype').change();
    Public link to this workout: - https://rowsandall.com/rowers/workout/{{ workout.id|encode }}/ + https://rowsandall.com/rowers/workout/{{ workout.id|encode }}/
    diff --git a/rowers/templates/workout_view.html b/rowers/templates/workout_view.html index 0252f485..f7b107b4 100644 --- a/rowers/templates/workout_view.html +++ b/rowers/templates/workout_view.html @@ -56,10 +56,10 @@ {% endif %}

    @@ -67,7 +67,7 @@

    @@ -94,7 +94,7 @@ {% endif %} diff --git a/rowers/tests/statements.py b/rowers/tests/statements.py index 6c58038c..f485fe21 100644 --- a/rowers/tests/statements.py +++ b/rowers/tests/statements.py @@ -67,3 +67,4 @@ from faker import Factory faker = Factory.create() +from rowers.opaque import encoder diff --git a/rowers/tests/test_cpchart.py b/rowers/tests/test_cpchart.py index b904cf20..9bf139f8 100644 --- a/rowers/tests/test_cpchart.py +++ b/rowers/tests/test_cpchart.py @@ -162,7 +162,7 @@ class CPChartTest(TestCase): self.assertRedirects(response, expected_url='/rowers/workout/{id}/edit/'.format( - id=workout_expected_id), + id=encoder.encode_hex(workout_expected_id)), status_code=302,target_status_code=200) # add some tests of complex form data (no hr, no spm, zero spm, etc) diff --git a/rowers/tests/test_urls.py b/rowers/tests/test_urls.py index 719c7537..8d8e96c5 100644 --- a/rowers/tests/test_urls.py +++ b/rowers/tests/test_urls.py @@ -196,19 +196,19 @@ class URLTests(TestCase): '/rowers/sessions/2016-01-01/2016-12-31/', '/rowers/sessions/2016-01-01/2016-12-31/user/1/', '/rowers/sessions/coach/', - '/rowers/sessions/coach/user/1/', +# '/rowers/sessions/coach/user/1/', '/rowers/sessions/create/', - '/rowers/sessions/create/user/1/', +# '/rowers/sessions/create/user/1/', '/rowers/sessions/manage/', - '/rowers/sessions/manage/user/1/', +# '/rowers/sessions/manage/user/1/', '/rowers/sessions/multiclone/', - '/rowers/sessions/multiclone/user/1/', +# '/rowers/sessions/multiclone/user/1/', '/rowers/sessions/multicreate/', - '/rowers/sessions/multicreate/user/1/', +# '/rowers/sessions/multicreate/user/1/', '/rowers/sessions/print/', - '/rowers/sessions/print/user/1/', +# '/rowers/sessions/print/user/1/', '/rowers/sessions/teamcreate/', - '/rowers/sessions/user/1/', +# '/rowers/sessions/user/1/', '/rowers/team-compare-select/', '/rowers/team-compare-select/workout/'+encoded1+'/', '/rowers/team-compare-select/2016-01-01/2016-12-31/', @@ -270,7 +270,6 @@ class URLTests(TestCase): '/rowers/workout/'+encoded1+'/view/', '/rowers/workout/'+encoded1+'/wind/', '/rowers/workout/'+encoded1+'/workflow/', - '/rowers/workout/compare/'+encoded1+'/2016-01-01/2016-12-31/', '/rowers/workout/fusion/'+encoded1+'/', '/rowers/workout/fusion/'+encoded1+'/2016-01-01/2016-12-31/', '/rowers/workout/upload/', diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index 4e0fd794..66d60f97 100644 Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ diff --git a/rowers/tests/testdata/testdata.tcx b/rowers/tests/testdata/testdata.tcx index c1e0475e..57dc2129 100644 --- a/rowers/tests/testdata/testdata.tcx +++ b/rowers/tests/testdata/testdata.tcx @@ -2502,7 +2502,7 @@ - <Element 'Notes' at 0x13feaf28> + <Element 'Notes' at 0x12e40c18> diff --git a/rowers/urls.py b/rowers/urls.py index 87fabb45..c9f4ab06 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -260,7 +260,7 @@ urlpatterns = [ url(r'^otwcpdatatoadmin/(?P\d+)/(?P\d+-\d+-\d+)/(?P\d+-\d+-\d+)/$',views.otwcp_toadmin_view), # url(r'^workout/compare/(?P\b[0-9A-Fa-f]+\b)/$',views.workout_comparison_list), # url(r'^workout/compare2/(?P\b[0-9A-Fa-f]+\b)/(?P\b[0-9A-Fa-f]+\b)/(?P\w+.*)/(?P\w+.*)/$',views.workout_comparison_view), - url(r'^workout/compare/(?P\b[0-9A-Fa-f]+\b)/(?P\d+-\d+-\d+)/(?P\d+-\d+-\d+)/$',views.workout_comparison_list), +# url(r'^workout/compare/(?P\b[0-9A-Fa-f]+\b)/(?P\d+-\d+-\d+)/(?P\d+-\d+-\d+)/$',views.workout_comparison_list), url(r'^workout/(?P\b[0-9A-Fa-f]+\b)/edit/$',views.workout_edit_view, name='workout_edit_view'), url(r'^workout/(?P\b[0-9A-Fa-f]+\b)/map/$',views.workout_map_view), diff --git a/rowers/views.py b/rowers/views.py index 5c70544e..5d4958e8 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -1551,7 +1551,7 @@ def rower_register_view(request): response = dataprep.new_workout_from_file(therower,f2, title='New User Sample Data', notes='This is an example workout to get you started') - newworkoutid = encoder.decode_hex(response[0]) + newworkoutid = response[0] w = Workout.objects.get(id=newworkoutid) w.startdatetime = timezone.now() w.save() @@ -3604,7 +3604,7 @@ def workout_forcecurve_view(request,id=0,workstrokesonly=False): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': row.name }, { @@ -3678,7 +3678,7 @@ def workout_histo_view(request,id=0): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': w.name }, { @@ -3991,7 +3991,7 @@ def addmanual_view(request): url = reverse( workout_edit_view, kwargs={'id':encoder.encode_hex(id)} - ) + ) return HttpResponseRedirect(url) else: return render(request,'manualadd.html', @@ -6092,7 +6092,7 @@ def team_comparison_select(request, 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': firstworkout.name }, { @@ -7939,7 +7939,7 @@ def workout_fusion_list(request,id=0,message='',successmessage='', 'name':'Workouts' }, { - 'url':get_workout_default_page(request,row.id), + 'url':get_workout_default_page(request,encoder.encode_hex(row.id)), 'name': row.name }, { @@ -8179,7 +8179,7 @@ def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': row.name }, { @@ -8395,7 +8395,7 @@ def workout_wind_view(request,id=0,message="",successmessage=""): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': row.name }, { @@ -8585,7 +8585,7 @@ def workout_stream_view(request,id=0,message="",successmessage=""): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': row.name }, { @@ -8719,7 +8719,7 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': w.name }, { @@ -8761,7 +8761,7 @@ def instroke_view(request,id=0): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': w.name }, { @@ -9245,7 +9245,7 @@ def workout_data_view(request, id=0): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': w.name }, { @@ -9349,7 +9349,7 @@ def workout_stats_view(request,id=0,message="",successmessage=""): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': w.name }, { @@ -9676,15 +9676,14 @@ def workflow_default_view(request): return HttpResponseRedirect(url) def get_workout_default_page(request,id): - id = encoder.encode_hex(id) if request.user.is_anonymous(): - return reverse(workout_view,kwargs={'id':str(id)}) + return reverse(workout_view,kwargs={'id':id}) else: r = Rower.objects.get(user=request.user) if r.defaultlandingpage == 'workout_edit_view': - return reverse(workout_edit_view,kwargs={'id':str(id)}) + return reverse(workout_edit_view,kwargs={'id':id}) else: - return reverse(workout_workflow_view,kwargs={'id':str(id)}) + return reverse(workout_workflow_view,kwargs={'id':id}) # Workflow Configuration @login_required() @@ -9896,7 +9895,7 @@ def workout_workflow_view(request,id): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': row.name }, { @@ -10184,7 +10183,7 @@ def workout_flexchart3_view(request,*args,**kwargs): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': row.name }, { @@ -10282,7 +10281,7 @@ def workout_otwpowerplot_view(request,id=0,message="",successmessage=""): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': w.name }, { @@ -10515,7 +10514,7 @@ def workout_comment_view(request,id=0): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': w.name }, { @@ -10957,7 +10956,7 @@ def workout_edit_view(request,id=0,message="",successmessage=""): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': row.name }, { @@ -11007,7 +11006,7 @@ def workout_map_view(request,id=0): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': w.name }, { @@ -11234,7 +11233,7 @@ def workout_uploadimage_view(request,id): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,id), + 'url':get_workout_default_page(request,encoder.encode_hex(id)), 'name': w.name }, { @@ -11994,7 +11993,7 @@ def workout_getimportview(request,externalid,source = 'c2'): source=source, workoutsource=source) - w = get_workout(encoder.decode_hex(id)) + w = get_workout(id) if 'workout' in data: if 'splits' in data['workout']: @@ -12050,7 +12049,7 @@ def workout_getimportview(request,externalid,source = 'c2'): url = reverse(r.defaultlandingpage, kwargs = { - 'id':id + 'id':encoder.encode_hex(id) }) return HttpResponseRedirect(url) @@ -12411,7 +12410,7 @@ def workout_upload_view(request, url = reverse(workout_edit_view, kwargs = { - 'id':str(id), + 'id':encoder.encode_hex(id), }) if is_ajax: @@ -12419,7 +12418,7 @@ def workout_upload_view(request, else: response = HttpResponseRedirect(url) - w = Workout.objects.get(id=encoder.decode_hex(id)) + w = Workout.objects.get(id=id) r = getrower(request.user) if (make_plot): @@ -12783,7 +12782,7 @@ def workout_delete_confirm_view(request, id=0): else: url = request.META.get('HTTP_REFERER','/') return render(request,'workout_delete_confirm.html', - {'id':int(id), + {'id':encoder.encode_hex(id), 'teams':get_my_teams(request.user), 'workout':row, 'url':url}) @@ -12833,7 +12832,7 @@ def graph_delete_confirm_view(request, id=0): url = '/rowers/list-graphs' request.session['referer'] = url return render(request,'graphimage_delete_confirm.html', - {'id':int(id), + {'id':encoder.encode_hex(id), 'teams':get_my_teams(request.user), 'graph':img, 'url':url}) @@ -12929,7 +12928,7 @@ def graph_show_view(request,id): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,w.id), + 'url':get_workout_default_page(request,encoder.encode_hex(w.id)), 'name': w.name }, { @@ -13024,7 +13023,7 @@ def workout_split_view(request,id=0): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,row.id), + 'url':get_workout_default_page(request,encoder.encode_hex(row.id)), 'name': row.name }, { @@ -13161,7 +13160,7 @@ def workout_fusion_view(request,id1=0,id2=1): 'name':'Workouts' }, { - 'url':get_workout_default_page(request,w1.id), + 'url':get_workout_default_page(request,encoder.encode_hex(w1.id)), 'name': str(w1.id) }, { @@ -13200,7 +13199,7 @@ def workout_summary_edit_view(request,id,message="",successmessage="" 'name':'Workouts' }, { - 'url':get_workout_default_page(request,row.id), + 'url':get_workout_default_page(request,encoder.encode_hex(row.id)), 'name': row.name }, { @@ -18798,7 +18797,9 @@ class GraphDelete(DeleteView): 'name':'Workouts' }, { - 'url':get_workout_default_page(self.request,self.object.workout.id), + 'url':get_workout_default_page(self.request, + encoder.encode_hex( + self.object.workout.id)), 'name': str(self.object.workout.id) }, { @@ -18844,7 +18845,9 @@ class WorkoutDelete(DeleteView): 'name':'Workouts' }, { - 'url':get_workout_default_page(self.request,self.object.id), + 'url':get_workout_default_page(self.request, + encoder.encode_hex( + self.object.id)), 'name': str(self.object.id) }, { 'url':reverse('workout_delete',kwargs={'pk':str(self.object.pk)}), diff --git a/templates/basebase.html b/templates/basebase.html index b8d24da6..9b77e322 100644 --- a/templates/basebase.html +++ b/templates/basebase.html @@ -110,7 +110,7 @@
    @@ -131,9 +131,9 @@ {% if user.is_authenticated %}

    {% if user.first_name %} - {{ user.first_name }} + {{ user.first_name }} {% else %} - {{ user }} + {{ user }} {% endif %}

    Edit user account, e.g. heart rate zones, power zones, email, teams @@ -144,7 +144,7 @@
    {% if user.is_authenticated %} -

    logout

    +

    logout

    {% else %}

     

    {% endif %}
    Comments - Comment ({{ aantalcomments }}) + Comment ({{ aantalcomments }})