Private
Public Access
1
0

developers - line 391 urls.py

This commit is contained in:
Sander Roosendaal
2018-10-11 12:38:54 +02:00
parent 7401fc2e66
commit a8f44e653b
13 changed files with 347 additions and 296 deletions

View File

@@ -1,10 +1,9 @@
{% extends "base.html" %}
{% block title %}Rowsandall - About us{% endblock title %}
{% block content %}
{% extends "newbase.html" %}
{% block title %}Rowsandall - About us{% endblock title %}
{% block main %}
{% load rowerfilters %}
<div class="grid_4 alpha">
<h2>Welcome to Rowsandall.com</h2>
<p>Rowsandall.com is an online tool for indoor and On The Water (OTW) rowers.
It accepts workout data from a number of devices and applications. It
@@ -78,19 +77,13 @@
<a href="/rowers/compatibility">here</a>.
</div>
<div class="grid_4">
<div class="grid_4">
<h2>Credits</h2>
<p>The project is based on python plotting code by
Greg Smith (<a href="https://quantifiedrowing.wordpress.com/" rel="nofollow">https://quantifiedrowing.wordpress.com/</a>)
and inspired by the RowPro Dan Burpee spreadsheet
(<a href="http://www.sub7irc.com/RP_Split_Template.zip" rel="nofollow">http://www.sub7irc.com/RP_Split_Template.zip</a>).</p>
</div>
<div class="grid_4">
<h2>Advanced Analysis, Coaching and Planning (Premium Features)</h2>
@@ -119,12 +112,9 @@ and inspired by the RowPro Dan Burpee spreadsheet
</div>
</div>
<div class="grid_4 omega">
{% if user.rower.rowerplan == 'basic' and user.rower.protrialexpires|date_dif == 1 %}
<h2>Free Trial</h2>
{% if user.rower.rowerplan == 'basic' and user.rower.protrialexpires|date_dif == 1 %}
<h2>Free Trial</h2>
<p>
You qualify for a 14 day free trial. No credit card needed.
Try out Pro membership for two weeks. Click the button below to
@@ -188,5 +178,10 @@ and inspired by the RowPro Dan Burpee spreadsheet
<p>If, for any reason, you are not happy with your Pro membership, please let me know through the contact form. I will contact you as soon as possible to discuss how we can make things better.</p>
</div>
{% endblock content %}
{% endblock main %}
{% block sidebar %}
{% include 'menu_help.html' %}
{% endblock %}

View File

@@ -1,5 +1,5 @@
{% extends "base.html" %}
{% extends "newbase.html" %}
{% block title %}Rowsandall Brochure{% endblock title %}
{% block meta %}
<style>
@@ -7,19 +7,20 @@
object { width: 900px; height: 5000px }
</style>
{% endblock meta %}
{% block content %}
{% block main %}
<div class="grid_12 alpha">
<h2>Read our Brochure</h2>
<h2>Read our Brochure</h2>
<div id="container">
<object id="obj" data="/static/brochure WEB.pdf" >
object can't be rendered
</object>
</div>
<!--
<embed src="/static/brochure WEB.pdf" width="960" height="650">
-->
<div id="container">
<object id="obj" data="/static/brochure WEB.pdf" >
object can't be rendered
</object>
</div>
<!--
<embed src="/static/brochure WEB.pdf" width="960" height="650">
-->
{% endblock %}
{% endblock content %}
{% block sidebar %}
{% include 'menu_help.html' %}
{% endblock %}

View File

@@ -1,126 +1,123 @@
{% extends "base.html" %}
{% block title %}About us{% endblock title %}
{% block content %}
{% extends "newbase.html" %}
{% block title %}Rowsandall Developers Info{% endblock title %}
{% block main %}
<div class="grid_6 alpha">
<h2>Resources for developers</h2>
<h1>Resources for developers</h1>
<p>On this page, a work in progress, I will collect useful information
for developers of rowing data apps and hardware.</p>
<p>I presume you have an app (smartphone app, dedicated hardware, web site)
where your users (customers) generate, collect or store their rowing
related workout data. You can now offer your users easy ways to get
their data on this site.</p>
<p>There are three ways to allow your users to get data to Rowsandall.com.</p>
<ul class="main-content">
<li class="grid_4">
<h5>File based export from your app</h5>
<p>Enable export of TCX, FIT or CSV formatted files from your app.
The users
upload the file to Rowsandall.com.</p>
<ul>
<li>Advantages
<ul>
<li>User sees immediate results</li>
</ul>
</li>
<li>Disadvantages
<ul>
<li>It is a multi-step process: Download from your
app, store, upload.</li>
</ul>
</li>
</ul>
<p>On this page, a work in progress, I will collect useful information
for developers of rowing data apps and hardware.</p>
<p>I presume you have an app (smartphone app, dedicated hardware, web site)
where your users (customers) generate, collect or store their rowing
related workout data. You can now offer your users easy ways to get
their data on this site.</p>
</li>
<h5>Email from your app</h5>
<p>Similar as above, generate TCX, FIT or CSV formatted files and
email them
to <i>workouts@rowsandall.com</i> directly from your app. The From: field
should be the email address of the registered user.</p>
<ul>
<li>Advantages
<ul>
<li>It's a simple process, which can be automated.</li>
</ul>
</li>
<li>Disadvantages
<ul>
<li>It may take up to five minutes for the workout to show up
<li class="grid_2">
<p>There are three ways to allow your users to get data to Rowsandall.com.</p>
<h2>File based export from your app</h2>
<p>Enable export of TCX, FIT or CSV formatted files from your app.
The users
upload the file to Rowsandall.com.</p>
<ul class="contentli">
<li>Advantages
<ul class="contentli">
<li>User sees immediate results</li>
</ul>
</li>
<li>Disadvantages
<ul class="contentli">
<li>It is a multi-step process: Download from your
app, store, upload.</li>
</ul>
</li>
</ul>
<h2>Email from your app</h2>
<p>Similar as above, generate TCX, FIT or CSV formatted files and
email them
to <em>workouts@rowsandall.com</em> directly from your app. The From: field
should be the email address of the registered user.</p>
<ul class="contentli">
<li>Advantages
<ul class="contentli">
<li>It's a simple process, which can be automated.</li>
</ul>
</li>
<li>Disadvantages
<ul class="contentli">
<li>It may take up to five minutes for the workout to show up
on the site.</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>Using the REST API</h2>
<p>We are building a REST API which will allow you to post and
receive stroke
data from the site directly.</p>
<p>The REST API is a work in progress. We are open to improvement
suggestions (provided they don't break existing apps). Please send
email to <a href="mailto:info@rowsandall.com">info@rowsandall.com</a>
with questions and/or suggestions. We
will get back to you as soon as possible.</p>
<ul class="contentli">
<li>Advantages
<ul class="contentli">
<li>Once it is set up, this is a one-click operation.</li>
<li>You can read a user's workout data from the site and use
them in your app.</li>
<li>This is not limited to workout data. You could make a full mobile
version of our site.</li>
</ul>
</li>
<li>Disadvantages
<ul class="contentli">
<li>The API is not stable and not fully tested yet.</li>
<li>You need to register your app with us. We can revoke your
permissions if you misuse them.</li>
<li>The user user must grant permissions to your app.</li>
<li>You need to manage authorization tokens.</li>
</ul>
</li>
</ul>
<h5>Using the REST API</h5>
<p>We are building a REST API which will allow you to post and
receive stroke
data from the site directly.</p>
<p>The REST API is a work in progress. We are open to improvement
suggestions (provided they don't break existing apps). Please send
email to <a href="mailto:info@rowsandall.com">info@rowsandall.com</a>
with questions and/or suggestions. We
will get back to you as soon as possible.</p>
<ul>
<li>Advantages
<ul>
<li>Once it is set up, this is a one-click operation.</li>
<li>You can read a user's workout data from the site and use
them in your app.</li>
<li>This is not limited to workout data. You could make a full mobile
version of our site.</li>
</ul>
</li>
<li>Disadvantages
<ul>
<li>The API is not stable and not fully tested yet.</li>
<li>You need to register your app with us. We can revoke your
permissions if you misuse them.</li>
<li>The user user must grant permissions to your app.</li>
<li>You need to manage authorization tokens.</li>
</ul>
</li>
</ul>
</div>
<div class="grid_6 omega">
<div class="grid_6">
</li>
<li class="grid_2">
<h2>Quick Links</h2>
<h5>Accepted file formats</h5>
<h3>Accepted file formats</h3>
<p>All files adhering to the standards <a href="http://www8.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">TCX</a> and <a href="https://www.thisisant.com/resources/fit/">FIT</a> formats will be parsed.</p>
<p>However, some rowing related parameters are not supported by TCX and FIT. Therefore, we are supporting the CSV format that is documented in the following link.</p>
<ul><li><a href="http://rowingdata.readthedocs.io/en/latest/#csv-file-standard">Our standard rowing CSV file</a></li></ul>
<ul class="contentli"><li><a href="http://rowingdata.readthedocs.io/en/latest/#csv-file-standard">Our standard rowing CSV file</a></li></ul>
<p>Using this standard will guarantee that your user's data are accepted
without complaints.</p>
<h5>API related documentation</h5>
<h2>API related documentation</h2>
<h6>Registering an app</h6>
<h3>Registering an app</h3>
<p>We have disabled the self service app link for security reasons.
We will replace it with a secure self service app link soon. If you
need to register an app, please send email to info@rowsandall.com</p>
<h6>Authentication</h6>
<h3>Authentication</h3>
<p>Standard <a href="https://oauth.net/2/">Oauth2</a> authentication.
Get authorization code by pointing your user to the authorization URL.
@@ -128,19 +125,19 @@
expires,
use the refresh token to refresh it.</p>
<p>The redirect URI for user authentication has to be <i>https</i>.
<p>The redirect URI for user authentication has to be <em>https</em>.
Developers of iOS or Android apps should contact me directly if
this doesn't work for them. I can add exceptions.</p>
<ul>
<ul class="contentli">
<li>Authorization URL: <b>https://{{ request.get_host }}/rowers/o/authorize</b></li>
<li>Access Token request: <b>https://{{ request.get_host }}/rowers/o/token/</b></li>
<li>Access Token refresh: <b>https://{{ request.get_host }}/rowers/o/token/</b></li>
<li>Handy utility for testing: <b><a href="http://django-oauth-toolkit.herokuapp.com/consumer/">http://django-oauth-toolkit.herokuapp.com/consumer/</a></b></li>
</ul>
<h6>API documentation</h6>
<h3>API documentation</h3>
<p>Once you have a registered app, you have gone through the authorization
and have successfully obtained an access token, you can use it to place
@@ -149,7 +146,7 @@
<p>The workout summary data and the stroke data are obtained and sent
separately.</p>
<ul>
<ul class="contentli">
<li><a href="/rowers/api-docs">API documentation</a>
(But refer to the below for stroke data.)</li>
<li><a href="/rowers/api-docs#/workouts">Try out the workout summary API</a></li>
@@ -162,7 +159,7 @@
future to enable updating stroke data. Stroke data for workout {id} are
posted to:</p>
<ul>
<ul class="contentli">
<li><b>https://{{ request.get_host }}/rowers/api/workouts/{id}/strokedata</b></li>
</ul>
@@ -180,14 +177,14 @@
</pre></p>
<p>Mandatory data fields are:</p>
<ul>
<ul class="contentli">
<li><b>time</b>: Time (milliseconds since workout start)</li>
<li><b>distance</b>: Distance (meters)</li>
<li><b>pace</b>: Pace (milliseconds per 500m)</li>
<li><b>spm</b> Stroke rate (strokes per minute)</li>
</ul>
<p>Optional data fiels are:</p>
<ul>
<ul class="contentli">
<li><b>power</b>: Power (Watt)</li>
<li><b>drivelength</b>: Drive length (meters)</li>
<li><b>dragfactor</b>: Drag factor</li>
@@ -201,7 +198,7 @@
<li><b>catch</b>: Catch angle per Empower oarlock (degrees)</li>
<li><b>finish</b>: Finish angle per Empower oarlock (degrees)</li>
<li><b>peakforceangle</b>: Peak Force Angle per Empower oarlock (degrees)</li>
<li><b>slip</b>: Wash as defined per Empower oarlock (degrees)</li>
<li><b>slip</b>: Slip as defined per Empower oarlock (degrees)</li>
</ul>
@@ -211,7 +208,12 @@
must have the same number of records. If an optional data field
fails a test, its values are silently replaced by zeros.</p>
</div>
</div>
</li>
</ul>
{% endblock %}
{% block sidebar %}
{% include 'menu_help.html' %}
{% endblock %}
{% endblock content %}

View File

@@ -1,104 +1,117 @@
{% extends "base.html" %}
{% block title %}Contact Us{% endblock title %}
{% block content %}
<div id="emailform" class="grid_6 alpha">
<h1>Contact us through email</h1>
{% extends "newbase.html" %}
{% block title %}Contact Us{% endblock title %}
{% block main %}
<h1>Contact us through email</h1>
<ul class="main-content">
<li class="grid_2">
{% if form.errors %}
<p style="color: red;">
Please correct the error{{ form.errors|pluralize }} below.
</p>
<p style="color: red;">
Please correct the error{{ form.errors|pluralize }} below.
</p>
{% endif %}
<form method="post" action="/rowers/email/send/">{% csrf_token %}
<table>
<tr><td>
<label class="label">Name <span class="required">*</span></label>
<form method="post" action="/rowers/email/send/">{% csrf_token %}
<table>
<tr><td>
<label class="label">Name <span class="required">*</span></label>
<span class="span">
</td><td>
<input name= "firstname" class="inputtext" maxlength="255" size="12" />
<label class="spanlabel">First</label>
</td></tr>
<tr><td>
</span>
<span class="span">
</td><td>
<input name= "lastname" class="inputtext" maxlength="255" size="18" />
<label class="spanlabel">Last</label>
</span>
</td></tr>
<tr><td>
<label class="label">Email Address <span class="required">*</span></label>
</td><td>
<input name="email" class="inputtext" type="text" maxlength="255" size="35" />
</td></tr>
<tr><td>
<label class="label">Subject <span class="required">*</span></label>
</td><td>
<input name="subject" class="inputtext" type="text" maxlength="255" size="45" />
</td></tr>
</table>
<label class="label">You must answer <u>YES</u> to the question below to approve sending this email. <span class="required">*</span></label>
<table>
<tr><td>
Do you want to send me an email?
</td><td>
<input name="botcheck" class="inputtext" type="text" maxlength="5" size="5" />
</td></tr>
<tr><td>
<label class="label">Message <span class="required">*</span></label>
</td><td>
<textarea name="message" class="inputtextarea" rows="11" cols="45"></textarea>
</td></tr>
<tr><td>
<input class="button green" type="submit" name="submitform" value="Send Message" />
</td></tr>
</table>
</form>
</div>
</td><td>
<input name= "firstname" class="inputtext" maxlength="255" size="12" />
<label class="spanlabel">First</label>
</td></tr>
<tr><td>
</span>
<span class="span">
</td><td>
<input name= "lastname" class="inputtext" maxlength="255" size="18" />
<label class="spanlabel">Last</label>
</span>
</td></tr>
<tr><td>
<label class="label">Email Address <span class="required">*</span></label>
</td><td>
<input name="email" class="inputtext" type="text" maxlength="255" size="35" />
</td></tr>
<tr><td>
<label class="label">Subject <span class="required">*</span></label>
</td><td>
<input name="subject" class="inputtext" type="text" maxlength="255" size="45" />
</td></tr>
</table>
<label class="label">You must answer <u>YES</u> to the question below to approve sending this email. <span class="required">*</span></label>
<table>
<tr><td>
Do you want to send me an email?
</td><td>
<input name="botcheck" class="inputtext" type="text" maxlength="5" size="5" />
</td></tr>
<tr><td>
<label class="label">Message <span class="required">*</span></label>
</td><td>
<textarea name="message" class="inputtextarea" rows="11" cols="45"></textarea>
</td></tr>
<tr><td>
<input class="button green" type="submit" name="submitform" value="Send Message" />
</td></tr>
</table>
</form>
</li>
<li class="grid_2">
<h1>Bug reporting, feature requests</h1>
<p>
Bug reports and feature requests can be done through our BitBucket page. Please check on the following link if your bug or issue is a known one. Feel free to file any feature request.
<ul>
<li><a href="https://bitbucket.org/sanderroosendaal/rowsandall/issues">BitBucket Issue list (click here to go report an issue or request a feature)</a></li>
</ul>
</p>
</li>
<li class="grid_2">
<h1>Facebook Group</h1>
<p>We run a facebook group where you can post questions and report problems,
especially if you think the wider user community benefits from the answers.</p>
<ul>
<li><a href="https://www.facebook.com/groups/rowsandall/">https://www.facebook.com/groups/rowsandall/</a></li>
</ul>
</li>
<li class="grid_2">
<h1>Twitter</h1>
<p>You can also check me on Twitter:
<ul>
<li><a href="https://twitter.com/rowsandall">https://twitter.com/rowsandall</a>
</ul>
When the site is down, this is the appropriate channel to look for apologies, updates, and offer help.
</p>
</li>
<li class="grid_2">
<h1>Rowsandall s.r.o.</h1>
<p><strong>Rowsandall s.r.o.</strong><br />
Nov&eacute; sady 988/2<br />
602 00 Brno<br />
Czech Republic<br />
IČ: 070 48 572<br />
DIČ: CZ 070 48 572 (Nejsme plátce DPH)<br />
Datová schránka: 7897syr<br />
Email: <a href="mailto:info@rowsandall.com">info@rowsandall.com</a><br />
The company is registered in the business register at the
Regional Court in Brno (Společnost je zapsána v obchodním rejstříku vedeném u Krajského soudu v Brně, oddíl C, vložka 105845)<br/>
</p>
</li>
</ul>
{% endblock %}
{% block sidebar %}
{% include 'menu_help.html' %}
{% endblock %}
<div class="grid_6 omega">
<h1>Bug reporting, feature requests</h1>
<p>
Bug reports and feature requests can be done through our BitBucket page. Please check on the following link if your bug or issue is a known one. Feel free to file any feature request.
<ul>
<li><a href="https://bitbucket.org/sanderroosendaal/rowsandall/issues">BitBucket Issue list (click here to go report an issue or request a feature)</a></li>
</ul>
</p>
<h1>Facebook Group</h1>
<p>We run a facebook group where you can post questions and report problems,
especially if you think the wider user community benefits from the answers.</p>
<ul>
<li><a href="https://www.facebook.com/groups/rowsandall/">https://www.facebook.com/groups/rowsandall/</a></li>
</ul>
<h1>Twitter</h1>
<p>You can also check me on Twitter:
<ul>
<li><a href="https://twitter.com/rowsandall">https://twitter.com/rowsandall</a>
</ul>
When the site is down, this is the appropriate channel to look for apologies, updates, and offer help.
</p>
<h1>Rowsandall s.r.o.</h1>
<p><strong>Rowsandall s.r.o.</strong><br />
Nov&eacute; sady 988/2<br />
602 00 Brno<br />
Czech Republic<br />
IČ: 070 48 572<br />
DIČ: CZ 070 48 572 (Nejsme plátce DPH)<br />
Datová schránka: 7897syr<br />
Email: <a href="mailto:info@rowsandall.com">info@rowsandall.com</a><br />
The company is registered in the business register at the
Regional Court in Brno (Společnost je zapsána v obchodním rejstříku vedeném u Krajského soudu v Brně, oddíl C, vložka 105845)<br/>
</p>
</div>
{% endblock content %}

View File

@@ -3,7 +3,7 @@
{% block title %}Change Favorite Charts{% endblock %}
{% block main %}
<h1>Change Your Favorite Charts</h1>
<h1>Change Favorite Charts of {{ rower.user.first_name }} {{ rower.user.last_name }}</h1>
<form method="post">
<ul class="main-content">

View File

@@ -8,22 +8,22 @@
</a>
</li>
<li id="manage-impex">
<a href="/rowers/me/exportsettings">
<a href="/rowers/me/exportsettings/">
<i class="fas fa-cloud-download fa-fw"></i>&nbsp;Import/Export
</a>
</li>
<li id="manage-account">
<a href="/rowers/me/edit">
<a href="/rowers/me/edit/">
<i class="fas fa-user fa-fw"></i>&nbsp;Account
</a>
</li>
<li id="manage-favs">
<a href="/rowers/me/favoritecharts">
<a href="/rowers/me/favoritecharts/">
<i class="fas fa-chart-area fa-fw"></i>&nbsp;Favorite Charts
</a>
</li>
<li id="manage-workflow">
<a href="/rowers/me/workflowconfig2">
<a href="/rowers/me/workflowconfig2/">
<i class="fas fa-tachometer-alt-slow fa-fw"></i>&nbsp;Manage Workflow
</a>
</li>

View File

@@ -1,8 +1,12 @@
{% extends "base.html" %}
{% extends "newbase.html" %}
{% block title %}Contact Us - Thank You{% endblock title %}
{% block content %}
{% block main %}
<h3>Thank you.</h3>
<p>Your email was sent and I will get back to you as soon as I can.</p>
<p>Return <a href="/">home</a></p>
{% endblock content %}
{% endblock %}
{% block sidebar %}
{% include 'menu_help.html' %}
{% endblock %}

View File

@@ -1,66 +1,52 @@
{% extends "base.html" %}
{% extends "newbase.html" %}
{% block title %}Change Rower Export Settings{% endblock %}
{% block title %}Change Rower Workflow Page Settings{% endblock %}
{% block content %}
{% block main %}
<script type="text/javascript" src="/static/js/reorderSelect.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.min.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
<h1>Change Workflow Page Layout for {{ rower.user.first_name }} {{ rower.user.last_name }}</h1>
<div class="grid_12 alpha">
<ul class="main-content">
{% if workoutid %}
<div class="grid_2 suffix_10 alpha">
<li class="grid_4">
<p>
<a class="button gray small" href="/rowers/workout/{{ workoutid }}/workflow">Return to Workout</a>
</p>
</div>
</li>
{% endif %}
<div class-"grid_12 alpha">
<h1>Workflow Page Configuration</h1>
<li>
<p>On this page, you can configure the content of your "Workflow" page
for each workout. If you want to remove an element, change it to "None".
You can add one new element at a time.</p>
<div class="grid_4 alpha">
<h2>Left Panel</h2>
<form enctype="multipart/form-data" action="" method="post">
{{ leftpanel_formset.management_form }}
<table>
{{ leftpanel_formset.as_table }}
</table>
{% csrf_token %}
<input class="grid_2 alpha button green" type="submit" value="Save">
</li>
<li>
<form enctype="multipart/form-data" action="" method="post">
{{ middlepanel_formset.management_form }}
<table>
{{ middlepanel_formset.as_table }}
</table>
{% csrf_token %}
<input class="grid_2 alpha button green" type="submit" value="Save">
</form>
</div>
<div class="grid_4">
<h2>Middle Panel</h2>
<form enctype="multipart/form-data" action="" method="post">
{{ middlepanel_formset.management_form }}
<table>
{{ middlepanel_formset.as_table }}
</table>
{% csrf_token %}
<input class="grid_2 alpha button green" type="submit" value="Save">
</form>
</div>
<div class="grid_4 omega">
<div class="grid_2 prefix_2 alpha">
{% if rower.defaultlandingpage == 'workout_edit_view' %}
<p>Default landing page is Edit View. Set default landing page to</p>
<a class="button green small" href="/rowers/me/workflowdefault">Workflow View</a>
{% else %}
<p>Default landing page is Workflow View. Set default landing page to</p>
<a class="button green small" href="/rowers/me/workflowdefault">Edit View</a>
{% endif %}
</div>
</div>
</div>
</div>
</li>
<li>
{% if rower.defaultlandingpage == 'workout_edit_view' %}
<p>Default landing page is Edit View. Set default landing page to</p>
<a class="button green small" href="/rowers/me/workflowdefault">Workflow View</a>
{% else %}
<p>Default landing page is Workflow View. Set default landing page to</p>
<a class="button green small" href="/rowers/me/workflowdefault">Edit View</a>
{% endif %}
</li>
</ul>
{% endblock %}
{% block sidebar %}
{% include 'menu_profile.html' %}
{% endblock %}

View File

@@ -377,8 +377,10 @@ urlpatterns = [
url(r'^me/tprefresh/$',views.rower_tp_token_refresh),
url(r'^me/c2refresh/$',views.rower_c2_token_refresh),
url(r'^me/favoritecharts/$',views.rower_favoritecharts_view),
url(r'^me/favoritecharts/user/(?P<userid>\d+)$',views.rower_favoritecharts_view),
# url(r'^me/workflowconfig$',views.workout_workflow_config_view),
url(r'^me/workflowconfig2$',views.workout_workflow_config2_view),
url(r'^me/workflowconfig2/$',views.workout_workflow_config2_view),
url(r'^me/workflowconfig2/user/(?P<userid>\d+)$',views.workout_workflow_config2_view),
url(r'^me/workflowdefault$',views.workflow_default_view),
url(r'^email/send/$', views.sendmail),
url(r'^email/thankyou/$', TemplateView.as_view(template_name='thankyou.html'), name='thankyou'),

View File

@@ -8379,7 +8379,7 @@ def workout_workflow_config_view(request):
})
@login_required()
def workout_workflow_config2_view(request):
def workout_workflow_config2_view(request,userid=0):
request.session['referer'] = absolute(request)['PATH']
request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE
try:
@@ -8388,7 +8388,7 @@ def workout_workflow_config2_view(request):
workoutid = 0
r = getrower(request.user)
r = getrequestrower(request,userid=userid,notpermanent=True)
MiddlePanelFormSet = formset_factory(WorkFlowMiddlePanelElement,extra=1)
LeftPanelFormSet = formset_factory(WorkFlowLeftPanelElement,extra=1)
@@ -8449,7 +8449,7 @@ def workout_workflow_config2_view(request):
return render(request,tmplt,
{
'rower':getrower(request.user),
'rower':r,
'leftpanel_formset':leftpanel_formset,
'middlepanel_formset':middlepanel_formset,
'workoutid': workoutid,
@@ -11929,6 +11929,17 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""):
rowerid = r.id
breadcrumbs = [
{
'url':'/rowers/me/edit',
'name': 'Profile'
},
{
'url': reverse(rower_edit_view),
'name': 'Account Settings'
}
]
if request.method == 'POST' and "ut2" in request.POST:
form = RowerForm(request.POST)
if form.is_valid():
@@ -11963,6 +11974,7 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""):
'teams':get_my_teams(request.user),
'powerform':powerform,
'rower':r,
'breadcrumbs':breadcrumbs,
'accountform':accountform,
'userform':userform,
})
@@ -11981,6 +11993,7 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""):
return render(request, 'rower_form.html',
{'form':form,
'teams':get_my_teams(request.user),
'breadcrumbs':breadcrumbs,
'powerzonesform':powerzonesform,
'userform':userform,
'accountform':accountform,
@@ -12039,6 +12052,7 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""):
'teams':get_my_teams(request.user),
'powerform':powerform,
'rower':r,
'breadcrumbs':breadcrumbs,
'userform':userform,
'accountform':accountform,
})
@@ -12081,6 +12095,7 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""):
'teams':get_my_teams(request.user),
'powerzonesform':powerzonesform,
'powerform':powerform,
'breadcrumbs':breadcrumbs,
'userform':userform,
'accountform':accountform,
'rower':r,
@@ -12103,6 +12118,7 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""):
'teams':get_my_teams(request.user),
'powerform':powerform,
'powerzonesform':powerzonesform,
'breadcrumbs':breadcrumbs,
'accountform':accountform,
'userform':userform,
'rower':r,
@@ -12161,6 +12177,7 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""):
{'form':form,
'teams':get_my_teams(request.user),
'powerzonesform':powerzonesform,
'breadcrumbs':breadcrumbs,
'powerform':powerform,
'accountform':accountform,
'userform':userform,
@@ -12174,6 +12191,7 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""):
{'form':form,
'teams':get_my_teams(request.user),
'powerzonesform':powerzonesform,
'breadcrumbs':breadcrumbs,
'powerform':powerform,
'accountform':accountform,
'userform':userform,
@@ -12194,6 +12212,7 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""):
'form':form,
'teams':get_my_teams(request.user),
'powerform':powerform,
'breadcrumbs':breadcrumbs,
'powerzonesform':powerzonesform,
'userform':userform,
'accountform':accountform,
@@ -12211,6 +12230,17 @@ def rower_prefs_view(request,rowerid=0,userid=0,message=""):
rowerid = r.id
breadcrumbs = [
{
'url':'/rowers/me/edit',
'name': 'Profile'
},
{
'url': reverse(rower_prefs_view),
'name': 'Zones'
}
]
if request.method == 'POST' and "ut2" in request.POST:
form = RowerForm(request.POST)
if form.is_valid():
@@ -12243,6 +12273,7 @@ def rower_prefs_view(request,rowerid=0,userid=0,message=""):
{'form':form,
'powerzonesform':powerzonesform,
'teams':get_my_teams(request.user),
'breadcrumbs':breadcrumbs,
'powerform':powerform,
'rower':r,
'accountform':accountform,
@@ -12264,6 +12295,7 @@ def rower_prefs_view(request,rowerid=0,userid=0,message=""):
{'form':form,
'teams':get_my_teams(request.user),
'powerzonesform':powerzonesform,
'breadcrumbs':breadcrumbs,
'userform':userform,
'accountform':accountform,
'powerform':powerform,
@@ -12319,6 +12351,7 @@ def rower_prefs_view(request,rowerid=0,userid=0,message=""):
return render(request, 'rower_preferences.html',
{'form':form,
'teams':get_my_teams(request.user),
'breadcrumbs':breadcrumbs,
'powerform':powerform,
'rower':r,
'userform':userform,
@@ -12364,6 +12397,7 @@ def rower_prefs_view(request,rowerid=0,userid=0,message=""):
'powerzonesform':powerzonesform,
'powerform':powerform,
'userform':userform,
'breadcrumbs':breadcrumbs,
'accountform':accountform,
'rower':r,
})
@@ -12384,6 +12418,7 @@ def rower_prefs_view(request,rowerid=0,userid=0,message=""):
{'form':form,
'teams':get_my_teams(request.user),
'powerform':powerform,
'breadcrumbs':breadcrumbs,
'powerzonesform':powerzonesform,
'accountform':accountform,
'userform':userform,
@@ -12443,6 +12478,7 @@ def rower_prefs_view(request,rowerid=0,userid=0,message=""):
{'form':form,
'teams':get_my_teams(request.user),
'powerzonesform':powerzonesform,
'breadcrumbs':breadcrumbs,
'powerform':powerform,
'accountform':accountform,
'userform':userform,
@@ -12457,6 +12493,7 @@ def rower_prefs_view(request,rowerid=0,userid=0,message=""):
'teams':get_my_teams(request.user),
'powerzonesform':powerzonesform,
'powerform':powerform,
'breadcrumbs':breadcrumbs,
'accountform':accountform,
'userform':userform,
'rower':r,
@@ -12477,6 +12514,7 @@ def rower_prefs_view(request,rowerid=0,userid=0,message=""):
'teams':get_my_teams(request.user),
'powerform':powerform,
'powerzonesform':powerzonesform,
'breadcrumbs':breadcrumbs,
'userform':userform,
'accountform':accountform,
'grants':grants,