Private
Public Access
1
0

passing url tests

This commit is contained in:
Sander Roosendaal
2019-01-12 10:56:14 +01:00
parent 909143f6b9
commit 018ee43fdb
17 changed files with 81 additions and 78 deletions

View File

@@ -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,

View File

@@ -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)

View File

@@ -142,20 +142,20 @@
{% if workout.user.user == user or user == team.manager %}
{% if workout.name != '' %}
<td>
<a href={% url rower.defaultlandingpage id=workout.id %}>
<a href={% url rower.defaultlandingpage id=workout.id|encode %}>
{{ workout.name }}
</a>
</td>
{% else %}
<td>
<a href={% url rower.defaultlandingpage id=workout.id %}>No Name
<a href={% url rower.defaultlandingpage id=workout.id|encode %}>No Name
</a></td>
{% endif %}
{% else %}
{% if workout.name != '' %}
<td><a href="/rowers/workout/{{ workout.id }}/">{{ workout.name }}</a></td>
<td><a href="/rowers/workout/{{ workout.id|encode }}/">{{ workout.name }}</a></td>
{% else %}
<td><a href="/rowers/workout/{{ workout.id }}/">No Name</a> </td>
<td><a href="/rowers/workout/{{ workout.id|encode }}/">No Name</a> </td>
{% endif %}
{% endif %}
<td> {{ workout.workouttype }} </td>

View File

@@ -97,20 +97,20 @@
{% if workout.user.user == user or user == team.manager %}
{% if workout.name != '' %}
<td>
<a href={% url rower.defaultlandingpage id=workout.id %}>
<a href={% url rower.defaultlandingpage id=workout.id|encode %}>
{{ workout.name }}
</a>
</td>
{% else %}
<td>
<a href={% url rower.defaultlandingpage id=workout.id %}>No Name
<a href={% url rower.defaultlandingpage id=workout.id|encode %}>No Name
</a></td>
{% endif %}
{% else %}
{% if workout.name != '' %}
<td><a href="/rowers/workout/{{ workout.id }}/">{{ workout.name }}</a></td>
<td><a href="/rowers/workout/{{ workout.id|encode }}/">{{ workout.name }}</a></td>
{% else %}
<td><a href="/rowers/workout/{{ workout.id }}/">No Name</a> </td>
<td><a href="/rowers/workout/{{ workout.id|encode }}/">No Name</a> </td>
{% endif %}
{% endif %}
<td> {{ workout.workouttype }} </td>

View File

@@ -30,7 +30,7 @@
</tr><tr>
<th>Public link to this workout</th>
<td>
<a href="/rowers/workout/{{ workout.id }}/">https://rowsandall.com/rowers/workout/{{ workout.id }}</a>
<a href="/rowers/workout/{{ workout.id|encode }}/">https://rowsandall.com/rowers/workout/{{ workout.id|encode }}</a>
<td>
</tr>
</table>
@@ -38,7 +38,7 @@
<p>
See the how-to <a href="#howto">at the bottom of this page</a> for details on how to use this form.
</p>
<form enctype="multipart/form-data" action="/rowers/workout/{{ workout.id }}/editintervals/" method="post">
<form enctype="multipart/form-data" action="/rowers/workout/{{ workout.id|encode }}/editintervals/" method="post">
<table width=100%>
{{ form.as_table }}
</table>
@@ -73,7 +73,7 @@
</li>
<li class="grid_2">
<h1>Updated Summary</h1>
<form enctype="multipart/form-data" action="/rowers/workout/{{ workout.id }}/editintervals/" method="post">
<form enctype="multipart/form-data" action="/rowers/workout/{{ workout.id|encode }}/editintervals/" method="post">
{% csrf_token %}
<input type="hidden" name="{{ savebutton }}" value="{{ intervalstring }}">
<input type="hidden" name="nrintervals" value={{ nrintervals }}>
@@ -89,7 +89,7 @@
<span>
<a href="">Reset to last saved</a>
&nbsp;
<a href="/rowers/workout/{{ workout.id }}/restore/">Restore Original data</a>
<a href="/rowers/workout/{{ workout.id|encode }}/restore/">Restore Original data</a>
</span>
</form>
<p>
@@ -101,7 +101,7 @@
<li class="grid_2">
<h1>Detailed Summary Edit</h1>
<p>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.</p>
<form enctype="multipart/form-data" action="/rowers/workout/{{ workout.id }}/editintervals/" method="post">
<form enctype="multipart/form-data" action="/rowers/workout/{{ workout.id|encode }}/editintervals/" method="post">
<table width=100%>
<thead>
<tr>

View File

@@ -41,9 +41,9 @@
<li>
<p>Closest Airport Weather: {{ airport }}
({{ airportdistance | floatformat:-1 }} km)
<a class="button green small" href="/rowers/workout/{{ workout.id }}/metar/{{ airport }}/">Airport Data</a></p>
<a class="button green small" href="/rowers/workout/{{ workout.id|encode }}/metar/{{ airport }}/">Airport Data</a></p>
<p>
<a class="button green small" href="/rowers/workout/{{ workout.id }}/darkskywind/">Dark Sky Data</a>
<a class="button green small" href="/rowers/workout/{{ workout.id|encode }}/darkskywind/">Dark Sky Data</a>
<p>
Download wind speed and bearing from <a href="http://forecast.io/">The Dark Sky</a>
</p>

View File

@@ -38,7 +38,7 @@
</tr><tr>
<th>Public link to this workout</th>
<td>
<a href="/rowers/workout/{{ workout.id }}/">https://rowsandall.com/rowers/workout/{{ workout.id }}/</a>
<a href="/rowers/workout/{{ workout.id|encode }}/">https://rowsandall.com/rowers/workout/{{ workout.id|encode }}/</a>
<td>
</tr>
</table>
@@ -56,7 +56,7 @@
</div>
</p>
{% endfor %}
<form enctype="multipart/form-data" action="/rowers/workout/{{ workout.id }}/comment/" method="post">
<form enctype="multipart/form-data" action="/rowers/workout/{{ workout.id|encode }}/comment/" method="post">
<table width=100%>
{{ form.as_table }}
</table>

View File

@@ -65,7 +65,7 @@ $('#id_workouttype').change();
<p>
<a class="twitter-share-button"
href="https://twitter.com/intent/tweet"
data-url="https://rowsandall.com/rowers/workout/{{ workout.id|encode }}"
data-url="https://rowsandall.com/rowers/workout/{{ workout.id|encode }}/"
data-text="@rowsandall #rowingdata">Tweet</a>
</p>
<table width=100%>
@@ -86,7 +86,7 @@ $('#id_workouttype').change();
</tr><tr>
<th>Public link to this workout:</th>
<td>
<a href="/rowers/workout/{{ workout.id|encode }}">https://rowsandall.com/rowers/workout/{{ workout.id|encode }}/</a>
<a href="/rowers/workout/{{ workout.id|encode }}/">https://rowsandall.com/rowers/workout/{{ workout.id|encode }}/</a>
</td>
</tr>
</table>

View File

@@ -56,10 +56,10 @@
{% endif %}
<p>
<div class="fb-share-button"
data-href="https://rowsandall.com/rowers/workout/{{ workout.id }}"
data-href="https://rowsandall.com/rowers/workout/{{ workout.id|encode }}"
data-layout="button" data-size="small" data-mobile-iframe="false">
<a class="fb-xfbml-parse-ignore" target="_blank"
href="https://www.facebook.com/sharer/sharer.php?u=https://rowsandall.com/rowers/workout/{{ workout.id }}">
href="https://www.facebook.com/sharer/sharer.php?u=https://rowsandall.com/rowers/workout/{{ workout.id|encode }}">
Share
</a>
</div>
@@ -67,7 +67,7 @@
<p>
<a class="twitter-share-button"
href="https://twitter.com/intent/tweet"
data-url="https://rowsandall.com/rowers/workout/{{ workout.id }}"
data-url="https://rowsandall.com/rowers/workout/{{ workout.id|encode }}"
data-text="@rowsandall #rowingdata">Tweet</a>
</p>
<table width=100%>
@@ -94,7 +94,7 @@
<tr>
<th>Comments</th>
<td>
<a href="/rowers/workout/{{ workout.id }}/comment/">Comment ({{ aantalcomments }})</a>
<a href="/rowers/workout/{{ workout.id|encode }}/comment/">Comment ({{ aantalcomments }})</a>
</td>
</tr>
{% endif %}

View File

@@ -67,3 +67,4 @@ from faker import Factory
faker = Factory.create()
from rowers.opaque import encoder

View File

@@ -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)

View File

@@ -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/',

Binary file not shown.

View File

@@ -2502,7 +2502,7 @@
</Trackpoint>
</Track>
</Lap>
<Notes>&lt;Element 'Notes' at 0x13feaf28&gt;</Notes>
<Notes>&lt;Element 'Notes' at 0x12e40c18&gt;</Notes>
</Activity>
</Activities>
<Creator>

View File

@@ -260,7 +260,7 @@ urlpatterns = [
url(r'^otwcpdatatoadmin/(?P<theuser>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.otwcp_toadmin_view),
# url(r'^workout/compare/(?P<id>\b[0-9A-Fa-f]+\b)/$',views.workout_comparison_list),
# url(r'^workout/compare2/(?P<id1>\b[0-9A-Fa-f]+\b)/(?P<id2>\b[0-9A-Fa-f]+\b)/(?P<xparam>\w+.*)/(?P<yparam>\w+.*)/$',views.workout_comparison_view),
url(r'^workout/compare/(?P<id>\b[0-9A-Fa-f]+\b)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.workout_comparison_list),
# url(r'^workout/compare/(?P<id>\b[0-9A-Fa-f]+\b)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\d+-\d+-\d+)/$',views.workout_comparison_list),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/edit/$',views.workout_edit_view,
name='workout_edit_view'),
url(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/map/$',views.workout_map_view),

View File

@@ -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)}),

View File

@@ -110,7 +110,7 @@
<div class="grid_4 alpha">
<div class="grid_1 alpha">
<p id="header">
<a class="button gray small" href="/rowers/videos">Videos</a></p>
<a class="button gray small" href="/rowers/videos/">Videos</a></p>
</div>
<div class="grid_2">
<p id="header">
@@ -118,7 +118,7 @@
</div>
<div class="grid_1 omega">
<p id="header">
<a class="button gray small" href="/rowers/email">Contact</a>
<a class="button gray small" href="/rowers/email/">Contact</a>
</p>
</div>
<div class="grid_4 alpha">
@@ -131,9 +131,9 @@
{% if user.is_authenticated %}
<p>
{% if user.first_name %}
<a class="button gray small" href="/rowers/me/edit">{{ user.first_name }}</a>
<a class="button gray small" href="/rowers/me/edit/">{{ user.first_name }}</a>
{% else %}
<a class="button gray small" href="/rowers/me/edit">{{ user }}</a>
<a class="button gray small" href="/rowers/me/edit/">{{ user }}</a>
{% endif %}
</p>
<span class="tooltiptext">Edit user account, e.g. heart rate zones, power zones, email, teams</span>
@@ -144,7 +144,7 @@
</div>
<div class="grid_1">
{% if user.is_authenticated %}
<p><a class="button gray small" href="{% url 'logout' %}?next=/login">logout</a></p>
<p><a class="button gray small" href="{% url 'logout' %}?next=/login/">logout</a></p>
{% else %}
<p>&nbsp</p>
{% endif %}