developers - line 391 urls.py
This commit is contained in:
@@ -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 %}
|
||||
|
||||
|
||||
@@ -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 %}
|
||||
|
||||
@@ -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 %}
|
||||
|
||||
@@ -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é 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é 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 %}
|
||||
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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> 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> 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> 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> Manage Workflow
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -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 %}
|
||||
|
||||
@@ -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 %}
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user