Merge branch 'release-v0.7.14'
10
CHANGELOG.md
@ -1,5 +1,15 @@
|
|||||||
# Change log
|
# Change log
|
||||||
|
|
||||||
|
## Version 0.7.14 (2023/03/08)
|
||||||
|
|
||||||
|
### Bugs Fixed
|
||||||
|
|
||||||
|
* [#314](https://github.com/SamR1/FitTrackee/issues/314) - GPX file is not deleted when the process fails
|
||||||
|
### Translations
|
||||||
|
|
||||||
|
* [PR#315](https://github.com/SamR1/FitTrackee/pull/315) - Translations update from Hosted Weblate (Dutch, thanks to @bjornclauw)
|
||||||
|
|
||||||
|
|
||||||
## Version 0.7.13 (2023/03/05)
|
## Version 0.7.13 (2023/03/05)
|
||||||
|
|
||||||
This version allows to display the instance privacy policy. A user must agree to the privacy policy to register.
|
This version allows to display the instance privacy policy. A user must agree to the privacy policy to register.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Sphinx build info version 1
|
# Sphinx build info version 1
|
||||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||||
config: 27f4394ace216ce3fd5ef2a67c1bf1ef
|
config: 94de61784a672553b4d9efa055ecf7c6
|
||||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||||
|
Before Width: | Height: | Size: 568 KiB After Width: | Height: | Size: 568 KiB |
Before Width: | Height: | Size: 387 KiB After Width: | Height: | Size: 387 KiB |
Before Width: | Height: | Size: 218 KiB After Width: | Height: | Size: 218 KiB |
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 123 KiB |
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 132 KiB |
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 84 KiB |
@ -1,5 +1,15 @@
|
|||||||
# Change log
|
# Change log
|
||||||
|
|
||||||
|
## Version 0.7.14 (2023/03/08)
|
||||||
|
|
||||||
|
### Bugs Fixed
|
||||||
|
|
||||||
|
* [#314](https://github.com/SamR1/FitTrackee/issues/314) - GPX file is not deleted when the process fails
|
||||||
|
### Translations
|
||||||
|
|
||||||
|
* [PR#315](https://github.com/SamR1/FitTrackee/pull/315) - Translations update from Hosted Weblate (Dutch, thanks to @bjornclauw)
|
||||||
|
|
||||||
|
|
||||||
## Version 0.7.13 (2023/03/05)
|
## Version 0.7.13 (2023/03/05)
|
||||||
|
|
||||||
This version allows to display the instance privacy policy. A user must agree to the privacy policy to register.
|
This version allows to display the instance privacy policy. A user must agree to the privacy policy to register.
|
||||||
|
@ -290,7 +290,7 @@ Map tile server
|
|||||||
.. versionadded:: 0.4.0
|
.. versionadded:: 0.4.0
|
||||||
|
|
||||||
Default tile server is now **OpenStreetMap**'s standard tile layer (if environment variables are not initialized).
|
Default tile server is now **OpenStreetMap**'s standard tile layer (if environment variables are not initialized).
|
||||||
The tile server can be changed by updating ``TILE_SERVER_URL`` and ``MAP_ATTRIBUTION`` variables (`list of tile servers <https://wiki.openstreetmap.org/wiki/Tile_servers>`__).
|
The tile server can be changed by updating ``TILE_SERVER_URL`` and ``MAP_ATTRIBUTION`` variables (`list of tile servers <https://wiki.openstreetmap.org/wiki/Raster_tile_providers>`__).
|
||||||
|
|
||||||
To keep using **ThunderForest Outdoors**, the configuration is:
|
To keep using **ThunderForest Outdoors**, the configuration is:
|
||||||
|
|
||||||
@ -507,13 +507,13 @@ Production environment
|
|||||||
.. warning::
|
.. warning::
|
||||||
| Note that FitTrackee is under heavy development, some features may be unstable.
|
| Note that FitTrackee is under heavy development, some features may be unstable.
|
||||||
|
|
||||||
- Download the last release (for now, it is the release v0.7.13):
|
- Download the last release (for now, it is the release v0.7.14):
|
||||||
|
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
$ wget https://github.com/SamR1/FitTrackee/archive/v0.7.13.tar.gz
|
$ wget https://github.com/SamR1/FitTrackee/archive/v0.7.14.tar.gz
|
||||||
$ tar -xzf v0.7.13.tar.gz
|
$ tar -xzf v0.7.14.tar.gz
|
||||||
$ mv FitTrackee-0.7.13 FitTrackee
|
$ mv FitTrackee-0.7.14 FitTrackee
|
||||||
$ cd FitTrackee
|
$ cd FitTrackee
|
||||||
|
|
||||||
- Create **.env** from example and update it
|
- Create **.env** from example and update it
|
||||||
@ -633,13 +633,13 @@ Prod environment
|
|||||||
|
|
||||||
- Change to the directory where FitTrackee directory is located
|
- Change to the directory where FitTrackee directory is located
|
||||||
|
|
||||||
- Download the last release (for now, it is the release v0.7.13) and overwrite existing files:
|
- Download the last release (for now, it is the release v0.7.14) and overwrite existing files:
|
||||||
|
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
$ wget https://github.com/SamR1/FitTrackee/archive/v0.7.13.tar.gz
|
$ wget https://github.com/SamR1/FitTrackee/archive/v0.7.14.tar.gz
|
||||||
$ tar -xzf v0.7.13.tar.gz
|
$ tar -xzf v0.7.14.tar.gz
|
||||||
$ cp -R FitTrackee-0.7.13/* FitTrackee/
|
$ cp -R FitTrackee-0.7.14/* FitTrackee/
|
||||||
$ cd FitTrackee
|
$ cd FitTrackee
|
||||||
|
|
||||||
- Update **.env** if needed (see `Environment variables <installation.html#environment-variables>`__).
|
- Update **.env** if needed (see `Environment variables <installation.html#environment-variables>`__).
|
||||||
|
@ -26,3 +26,11 @@ Administrator
|
|||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
- Check the path in `environment variables <../installation.html#envvar-UPLOAD_FOLDER>`__. ``UPLOAD_FOLDER`` must be set with an absolute path.
|
- Check the path in `environment variables <../installation.html#envvar-UPLOAD_FOLDER>`__. ``UPLOAD_FOLDER`` must be set with an absolute path.
|
||||||
|
|
||||||
|
|
||||||
|
`Failed to upload or download files`
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- Check ``client_max_body_size`` in **nginx** config. Increase the value to handle larger files (see **nginx** `documentation <https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size>`_).
|
||||||
|
|
||||||
|
- Increase **gunicorn** `timeout <https://docs.gunicorn.org/en/stable/settings.html#timeout>`__ value if the following error is displayed in gunicorn log: ``[CRITICAL] WORKER TIMEOUT``.
|
2
docs/_static/documentation_options.js
vendored
@ -1,6 +1,6 @@
|
|||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
|
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
|
||||||
VERSION: '0.7.13',
|
VERSION: '0.7.14',
|
||||||
LANGUAGE: 'en',
|
LANGUAGE: 'en',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
BUILDER: 'html',
|
BUILDER: 'html',
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>Authentication and account — FitTrackee 0.7.13
|
<title>Authentication and account — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="../index.html">
|
<a class="navbar-brand" href="../index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -1445,7 +1445,7 @@ for other reasons.</p></li>
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>Configuration — FitTrackee 0.7.13
|
<title>Configuration — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="../index.html">
|
<a class="navbar-brand" href="../index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -158,7 +158,7 @@
|
|||||||
<span class="w"> </span><span class="nt">"map_attribution"</span><span class="p">:</span><span class="w"> </span><span class="s2">"&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors"</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"map_attribution"</span><span class="p">:</span><span class="w"> </span><span class="s2">"&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors"</span><span class="p">,</span>
|
||||||
<span class="w"> </span><span class="nt">"privacy_policy"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"privacy_policy"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||||
<span class="w"> </span><span class="nt">"privacy_policy_date"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"privacy_policy_date"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||||
<span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.7.13"</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.7.14"</span><span class="p">,</span>
|
||||||
<span class="w"> </span><span class="nt">"weather_provider"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span>
|
<span class="w"> </span><span class="nt">"weather_provider"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span>
|
||||||
<span class="w"> </span><span class="p">},</span>
|
<span class="w"> </span><span class="p">},</span>
|
||||||
<span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"success"</span>
|
<span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"success"</span>
|
||||||
@ -203,7 +203,7 @@
|
|||||||
<span class="w"> </span><span class="nt">"map_attribution"</span><span class="p">:</span><span class="w"> </span><span class="s2">"&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors"</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"map_attribution"</span><span class="p">:</span><span class="w"> </span><span class="s2">"&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors"</span><span class="p">,</span>
|
||||||
<span class="w"> </span><span class="nt">"privacy_policy"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"privacy_policy"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||||
<span class="w"> </span><span class="nt">"privacy_policy_date"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"privacy_policy_date"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||||
<span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.7.13"</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.7.14"</span><span class="p">,</span>
|
||||||
<span class="w"> </span><span class="nt">"weather_provider"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span>
|
<span class="w"> </span><span class="nt">"weather_provider"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span>
|
||||||
<span class="w"> </span><span class="p">},</span>
|
<span class="w"> </span><span class="p">},</span>
|
||||||
<span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"success"</span>
|
<span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"success"</span>
|
||||||
@ -289,7 +289,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>API documentation — FitTrackee 0.7.13
|
<title>API documentation — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="../index.html">
|
<a class="navbar-brand" href="../index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -160,7 +160,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>OAuth2 — FitTrackee 0.7.13
|
<title>OAuth2 — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="../index.html">
|
<a class="navbar-brand" href="../index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -694,7 +694,7 @@ are supported by FitTrackee)</p></li>
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>Records — FitTrackee 0.7.13
|
<title>Records — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="../index.html">
|
<a class="navbar-brand" href="../index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -262,7 +262,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>Sports — FitTrackee 0.7.13
|
<title>Sports — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="../index.html">
|
<a class="navbar-brand" href="../index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -492,7 +492,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>Statistics — FitTrackee 0.7.13
|
<title>Statistics — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="../index.html">
|
<a class="navbar-brand" href="../index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -419,7 +419,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>Users — FitTrackee 0.7.13
|
<title>Users — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="../index.html">
|
<a class="navbar-brand" href="../index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -663,7 +663,7 @@ one admin.</p>
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>Workouts — FitTrackee 0.7.13
|
<title>Workouts — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="../index.html">
|
<a class="navbar-brand" href="../index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -1187,7 +1187,7 @@ must be provided with ascent)</p></li>
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>Third-party applications — FitTrackee 0.7.13
|
<title>Third-party applications — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="index.html">
|
<a class="navbar-brand" href="index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -259,7 +259,7 @@ It is recommended to use PKCE to provide a better security.</p>
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>Command line interface — FitTrackee 0.7.13
|
<title>Command line interface — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="index.html">
|
<a class="navbar-brand" href="index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -337,7 +337,7 @@ Can be used if redis is not set (no dramatiq workers running).</p>
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>Features — FitTrackee 0.7.13
|
<title>Features — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="index.html">
|
<a class="navbar-brand" href="index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -431,7 +431,7 @@ A user with an inactive account cannot log in. (<em>new in 0.6.0</em>).</p></li>
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Index — FitTrackee 0.7.13
|
<title>Index — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||||
@ -40,7 +40,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="index.html">
|
<a class="navbar-brand" href="index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -190,7 +190,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>HTTP Routing Table — FitTrackee 0.7.13
|
<title>HTTP Routing Table — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||||
@ -47,7 +47,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="index.html">
|
<a class="navbar-brand" href="index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -430,7 +430,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>FitTrackee — FitTrackee 0.7.13
|
<title>FitTrackee — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||||
@ -42,7 +42,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="#">
|
<a class="navbar-brand" href="#">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -180,7 +180,7 @@ Map</a>.</div>
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>Installation — FitTrackee 0.7.13
|
<title>Installation — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="index.html">
|
<a class="navbar-brand" href="index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -594,7 +594,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p
|
|||||||
<p><span class="versionmodified added">New in version 0.4.0.</span></p>
|
<p><span class="versionmodified added">New in version 0.4.0.</span></p>
|
||||||
</div>
|
</div>
|
||||||
<p>Default tile server is now <strong>OpenStreetMap</strong>’s standard tile layer (if environment variables are not initialized).
|
<p>Default tile server is now <strong>OpenStreetMap</strong>’s standard tile layer (if environment variables are not initialized).
|
||||||
The tile server can be changed by updating <code class="docutils literal notranslate"><span class="pre">TILE_SERVER_URL</span></code> and <code class="docutils literal notranslate"><span class="pre">MAP_ATTRIBUTION</span></code> variables (<a class="reference external" href="https://wiki.openstreetmap.org/wiki/Tile_servers">list of tile servers</a>).</p>
|
The tile server can be changed by updating <code class="docutils literal notranslate"><span class="pre">TILE_SERVER_URL</span></code> and <code class="docutils literal notranslate"><span class="pre">MAP_ATTRIBUTION</span></code> variables (<a class="reference external" href="https://wiki.openstreetmap.org/wiki/Raster_tile_providers">list of tile servers</a>).</p>
|
||||||
<p>To keep using <strong>ThunderForest Outdoors</strong>, the configuration is:</p>
|
<p>To keep using <strong>ThunderForest Outdoors</strong>, the configuration is:</p>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><p><code class="docutils literal notranslate"><span class="pre">TILE_SERVER_URL=https://{s}.tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey=XXXX</span></code> where <strong>XXXX</strong> is <strong>ThunderForest</strong> API key</p></li>
|
<li><p><code class="docutils literal notranslate"><span class="pre">TILE_SERVER_URL=https://{s}.tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey=XXXX</span></code> where <strong>XXXX</strong> is <strong>ThunderForest</strong> API key</p></li>
|
||||||
@ -826,11 +826,11 @@ $<span class="w"> </span>make<span class="w"> </span>install-db
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><p>Download the last release (for now, it is the release v0.7.13):</p></li>
|
<li><p>Download the last release (for now, it is the release v0.7.14):</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>wget<span class="w"> </span>https://github.com/SamR1/FitTrackee/archive/v0.7.13.tar.gz
|
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>wget<span class="w"> </span>https://github.com/SamR1/FitTrackee/archive/v0.7.14.tar.gz
|
||||||
$<span class="w"> </span>tar<span class="w"> </span>-xzf<span class="w"> </span>v0.7.13.tar.gz
|
$<span class="w"> </span>tar<span class="w"> </span>-xzf<span class="w"> </span>v0.7.14.tar.gz
|
||||||
$<span class="w"> </span>mv<span class="w"> </span>FitTrackee-0.7.13<span class="w"> </span>FitTrackee
|
$<span class="w"> </span>mv<span class="w"> </span>FitTrackee-0.7.14<span class="w"> </span>FitTrackee
|
||||||
$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>FitTrackee
|
$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>FitTrackee
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
@ -950,11 +950,11 @@ $<span class="w"> </span><span class="nb">source</span><span class="w"> </span>.
|
|||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><p>Stop the application</p></li>
|
<li><p>Stop the application</p></li>
|
||||||
<li><p>Change to the directory where FitTrackee directory is located</p></li>
|
<li><p>Change to the directory where FitTrackee directory is located</p></li>
|
||||||
<li><p>Download the last release (for now, it is the release v0.7.13) and overwrite existing files:</p></li>
|
<li><p>Download the last release (for now, it is the release v0.7.14) and overwrite existing files:</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>wget<span class="w"> </span>https://github.com/SamR1/FitTrackee/archive/v0.7.13.tar.gz
|
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>wget<span class="w"> </span>https://github.com/SamR1/FitTrackee/archive/v0.7.14.tar.gz
|
||||||
$<span class="w"> </span>tar<span class="w"> </span>-xzf<span class="w"> </span>v0.7.13.tar.gz
|
$<span class="w"> </span>tar<span class="w"> </span>-xzf<span class="w"> </span>v0.7.14.tar.gz
|
||||||
$<span class="w"> </span>cp<span class="w"> </span>-R<span class="w"> </span>FitTrackee-0.7.13/*<span class="w"> </span>FitTrackee/
|
$<span class="w"> </span>cp<span class="w"> </span>-R<span class="w"> </span>FitTrackee-0.7.14/*<span class="w"> </span>FitTrackee/
|
||||||
$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>FitTrackee
|
$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>FitTrackee
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
@ -1217,7 +1217,7 @@ $<span class="w"> </span>make<span class="w"> </span>docker-test-python<span cla
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
BIN
docs/objects.inv
@ -4,7 +4,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Search — FitTrackee 0.7.13
|
<title>Search — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||||||
@ -47,7 +47,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="index.html">
|
<a class="navbar-brand" href="index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -154,7 +154,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>Administrator — FitTrackee 0.7.13
|
<title>Administrator — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="../index.html">
|
<a class="navbar-brand" href="../index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -85,6 +85,7 @@
|
|||||||
<li><a class="reference internal" href="#">Administrator</a><ul>
|
<li><a class="reference internal" href="#">Administrator</a><ul>
|
||||||
<li><a class="reference internal" href="#fittrackee-fails-to-start"><cite>FitTrackee fails to start</cite></a></li>
|
<li><a class="reference internal" href="#fittrackee-fails-to-start"><cite>FitTrackee fails to start</cite></a></li>
|
||||||
<li><a class="reference internal" href="#map-images-are-not-displayed-but-map-is-shown-in-workout-detail"><cite>Map images are not displayed but map is shown in Workout detail</cite></a></li>
|
<li><a class="reference internal" href="#map-images-are-not-displayed-but-map-is-shown-in-workout-detail"><cite>Map images are not displayed but map is shown in Workout detail</cite></a></li>
|
||||||
|
<li><a class="reference internal" href="#failed-to-upload-or-download-files"><cite>Failed to upload or download files</cite></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -159,6 +160,13 @@
|
|||||||
<li><p>Check the path in <a class="reference external" href="../installation.html#envvar-UPLOAD_FOLDER">environment variables</a>. <code class="docutils literal notranslate"><span class="pre">UPLOAD_FOLDER</span></code> must be set with an absolute path.</p></li>
|
<li><p>Check the path in <a class="reference external" href="../installation.html#envvar-UPLOAD_FOLDER">environment variables</a>. <code class="docutils literal notranslate"><span class="pre">UPLOAD_FOLDER</span></code> must be set with an absolute path.</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
<section id="failed-to-upload-or-download-files">
|
||||||
|
<h2><cite>Failed to upload or download files</cite><a class="headerlink" href="#failed-to-upload-or-download-files" title="Permalink to this heading">¶</a></h2>
|
||||||
|
<ul class="simple">
|
||||||
|
<li><p>Check <code class="docutils literal notranslate"><span class="pre">client_max_body_size</span></code> in <strong>nginx</strong> config. Increase the value to handle larger files (see <strong>nginx</strong> <a class="reference external" href="https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size">documentation</a>).</p></li>
|
||||||
|
<li><p>Increase <strong>gunicorn</strong> <a class="reference external" href="https://docs.gunicorn.org/en/stable/settings.html#timeout">timeout</a> value if the following error is displayed in gunicorn log: <code class="docutils literal notranslate"><span class="pre">[CRITICAL]</span> <span class="pre">WORKER</span> <span class="pre">TIMEOUT</span></code>.</p></li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
@ -174,7 +182,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>Troubleshooting — FitTrackee 0.7.13
|
<title>Troubleshooting — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="../index.html">
|
<a class="navbar-brand" href="../index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -137,6 +137,7 @@
|
|||||||
<li class="toctree-l1"><a class="reference internal" href="administrator.html">Administrator</a><ul>
|
<li class="toctree-l1"><a class="reference internal" href="administrator.html">Administrator</a><ul>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="administrator.html#fittrackee-fails-to-start"><cite>FitTrackee fails to start</cite></a></li>
|
<li class="toctree-l2"><a class="reference internal" href="administrator.html#fittrackee-fails-to-start"><cite>FitTrackee fails to start</cite></a></li>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="administrator.html#map-images-are-not-displayed-but-map-is-shown-in-workout-detail"><cite>Map images are not displayed but map is shown in Workout detail</cite></a></li>
|
<li class="toctree-l2"><a class="reference internal" href="administrator.html#map-images-are-not-displayed-but-map-is-shown-in-workout-detail"><cite>Map images are not displayed but map is shown in Workout detail</cite></a></li>
|
||||||
|
<li class="toctree-l2"><a class="reference internal" href="administrator.html#failed-to-upload-or-download-files"><cite>Failed to upload or download files</cite></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li class="toctree-l1"><a class="reference internal" href="user.html">User</a></li>
|
<li class="toctree-l1"><a class="reference internal" href="user.html">User</a></li>
|
||||||
@ -157,7 +158,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||||||
|
|
||||||
<title>User — FitTrackee 0.7.13
|
<title>User — FitTrackee 0.7.14
|
||||||
documentation</title>
|
documentation</title>
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
<link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="../index.html">
|
<a class="navbar-brand" href="../index.html">
|
||||||
FitTrackee</a>
|
FitTrackee</a>
|
||||||
<span class="navbar-text navbar-version pull-left"><b>0.7.13
|
<span class="navbar-text navbar-version pull-left"><b>0.7.14
|
||||||
</b></span>
|
</b></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -148,7 +148,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
© Copyright 2018 - 2022, SamR1 <a rel="me" href="https://fosstodon.org/@FitTrackee"><i class="fa fa-mastodon" aria-hidden="true"></i></a>.
|
||||||
Last updated on Mar 05, 2023.<br/>
|
Last updated on Mar 08, 2023.<br/>
|
||||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
Before Width: | Height: | Size: 568 KiB After Width: | Height: | Size: 568 KiB |
Before Width: | Height: | Size: 387 KiB After Width: | Height: | Size: 387 KiB |
Before Width: | Height: | Size: 218 KiB After Width: | Height: | Size: 218 KiB |
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 123 KiB |
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 132 KiB |
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 84 KiB |
@ -290,7 +290,7 @@ Map tile server
|
|||||||
.. versionadded:: 0.4.0
|
.. versionadded:: 0.4.0
|
||||||
|
|
||||||
Default tile server is now **OpenStreetMap**'s standard tile layer (if environment variables are not initialized).
|
Default tile server is now **OpenStreetMap**'s standard tile layer (if environment variables are not initialized).
|
||||||
The tile server can be changed by updating ``TILE_SERVER_URL`` and ``MAP_ATTRIBUTION`` variables (`list of tile servers <https://wiki.openstreetmap.org/wiki/Tile_servers>`__).
|
The tile server can be changed by updating ``TILE_SERVER_URL`` and ``MAP_ATTRIBUTION`` variables (`list of tile servers <https://wiki.openstreetmap.org/wiki/Raster_tile_providers>`__).
|
||||||
|
|
||||||
To keep using **ThunderForest Outdoors**, the configuration is:
|
To keep using **ThunderForest Outdoors**, the configuration is:
|
||||||
|
|
||||||
@ -507,13 +507,13 @@ Production environment
|
|||||||
.. warning::
|
.. warning::
|
||||||
| Note that FitTrackee is under heavy development, some features may be unstable.
|
| Note that FitTrackee is under heavy development, some features may be unstable.
|
||||||
|
|
||||||
- Download the last release (for now, it is the release v0.7.13):
|
- Download the last release (for now, it is the release v0.7.14):
|
||||||
|
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
$ wget https://github.com/SamR1/FitTrackee/archive/v0.7.13.tar.gz
|
$ wget https://github.com/SamR1/FitTrackee/archive/v0.7.14.tar.gz
|
||||||
$ tar -xzf v0.7.13.tar.gz
|
$ tar -xzf v0.7.14.tar.gz
|
||||||
$ mv FitTrackee-0.7.13 FitTrackee
|
$ mv FitTrackee-0.7.14 FitTrackee
|
||||||
$ cd FitTrackee
|
$ cd FitTrackee
|
||||||
|
|
||||||
- Create **.env** from example and update it
|
- Create **.env** from example and update it
|
||||||
@ -633,13 +633,13 @@ Prod environment
|
|||||||
|
|
||||||
- Change to the directory where FitTrackee directory is located
|
- Change to the directory where FitTrackee directory is located
|
||||||
|
|
||||||
- Download the last release (for now, it is the release v0.7.13) and overwrite existing files:
|
- Download the last release (for now, it is the release v0.7.14) and overwrite existing files:
|
||||||
|
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
$ wget https://github.com/SamR1/FitTrackee/archive/v0.7.13.tar.gz
|
$ wget https://github.com/SamR1/FitTrackee/archive/v0.7.14.tar.gz
|
||||||
$ tar -xzf v0.7.13.tar.gz
|
$ tar -xzf v0.7.14.tar.gz
|
||||||
$ cp -R FitTrackee-0.7.13/* FitTrackee/
|
$ cp -R FitTrackee-0.7.14/* FitTrackee/
|
||||||
$ cd FitTrackee
|
$ cd FitTrackee
|
||||||
|
|
||||||
- Update **.env** if needed (see `Environment variables <installation.html#environment-variables>`__).
|
- Update **.env** if needed (see `Environment variables <installation.html#environment-variables>`__).
|
||||||
|
@ -26,3 +26,11 @@ Administrator
|
|||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
- Check the path in `environment variables <../installation.html#envvar-UPLOAD_FOLDER>`__. ``UPLOAD_FOLDER`` must be set with an absolute path.
|
- Check the path in `environment variables <../installation.html#envvar-UPLOAD_FOLDER>`__. ``UPLOAD_FOLDER`` must be set with an absolute path.
|
||||||
|
|
||||||
|
|
||||||
|
`Failed to upload or download files`
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- Check ``client_max_body_size`` in **nginx** config. Increase the value to handle larger files (see **nginx** `documentation <https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size>`_).
|
||||||
|
|
||||||
|
- Increase **gunicorn** `timeout <https://docs.gunicorn.org/en/stable/settings.html#timeout>`__ value if the following error is displayed in gunicorn log: ``[CRITICAL] WORKER TIMEOUT``.
|
@ -25,7 +25,7 @@ from werkzeug.middleware.proxy_fix import ProxyFix
|
|||||||
from fittrackee.emails.email import EmailService
|
from fittrackee.emails.email import EmailService
|
||||||
from fittrackee.request import CustomRequest
|
from fittrackee.request import CustomRequest
|
||||||
|
|
||||||
VERSION = __version__ = '0.7.13'
|
VERSION = __version__ = '0.7.14'
|
||||||
REDIS_URL = os.getenv('REDIS_URL', 'redis://')
|
REDIS_URL = os.getenv('REDIS_URL', 'redis://')
|
||||||
API_RATE_LIMITS = os.environ.get('API_RATE_LIMITS', '300 per 5 minutes').split(
|
API_RATE_LIMITS = os.environ.get('API_RATE_LIMITS', '300 per 5 minutes').split(
|
||||||
','
|
','
|
||||||
|
@ -52,7 +52,7 @@ def get_application_config() -> Union[Dict, HttpResponse]:
|
|||||||
"map_attribution": "© <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors",
|
"map_attribution": "© <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors",
|
||||||
"privacy_policy": null,
|
"privacy_policy": null,
|
||||||
"privacy_policy_date": null,
|
"privacy_policy_date": null,
|
||||||
"version": "0.7.13",
|
"version": "0.7.14",
|
||||||
"weather_provider": null
|
"weather_provider": null
|
||||||
},
|
},
|
||||||
"status": "success"
|
"status": "success"
|
||||||
@ -108,7 +108,7 @@ def update_application_config(auth_user: User) -> Union[Dict, HttpResponse]:
|
|||||||
"map_attribution": "© <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors",
|
"map_attribution": "© <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors",
|
||||||
"privacy_policy": null,
|
"privacy_policy": null,
|
||||||
"privacy_policy_date": null,
|
"privacy_policy_date": null,
|
||||||
"version": "0.7.13",
|
"version": "0.7.14",
|
||||||
"weather_provider": null
|
"weather_provider": null
|
||||||
},
|
},
|
||||||
"status": "success"
|
"status": "success"
|
||||||
|
2
fittrackee/dist/index.html
vendored
@ -1 +1 @@
|
|||||||
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if IE]><link rel="icon" href="/favicon.ico"><![endif]--><link rel="stylesheet" href="/static/css/fork-awesome.min.css"/><link rel="stylesheet" href="/static/css/leaflet.css"/><title>FitTrackee</title><script defer="defer" src="/static/js/chunk-vendors.504d6d07.js"></script><script defer="defer" src="/static/js/app.4a1985d7.js"></script><link href="/static/css/app.e504ceb2.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="/img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/img/icons/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="fittrackee_client"><link rel="apple-touch-icon" href="/img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="/img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="/img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><noscript><strong>We're sorry but FitTrackee doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if IE]><link rel="icon" href="/favicon.ico"><![endif]--><link rel="stylesheet" href="/static/css/fork-awesome.min.css"/><link rel="stylesheet" href="/static/css/leaflet.css"/><title>FitTrackee</title><script defer="defer" src="/static/js/chunk-vendors.504d6d07.js"></script><script defer="defer" src="/static/js/app.f25e8d14.js"></script><link href="/static/css/app.e504ceb2.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="/img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/img/icons/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="fittrackee_client"><link rel="apple-touch-icon" href="/img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="/img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="/img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><noscript><strong>We're sorry but FitTrackee doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
2
fittrackee/dist/service-worker.js
vendored
2
fittrackee/dist/service-worker.js.map
vendored
2
fittrackee/dist/static/js/app.4a1985d7.js
vendored
2
fittrackee/dist/static/js/app.f25e8d14.js
vendored
Normal file
1
fittrackee/dist/static/js/app.f25e8d14.js.map
vendored
Normal file
@ -1,2 +1,2 @@
|
|||||||
"use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[193],{7885:function(e,s,t){t.r(s),t.d(s,{default:function(){return A}});var a=t(6252),r=t(2262),l=t(3577),o=(t(7658),t(9150)),n=t(436);const c={class:"chart-menu"},i={class:"chart-arrow"},u={class:"time-frames custom-checkboxes-group"},d={class:"time-frames-checkboxes custom-checkboxes"},p=["id","name","checked","onInput"],m={class:"chart-arrow"};var v=(0,a.aZ)({__name:"StatsMenu",emits:["arrowClick","timeFrameUpdate"],setup(e,{emit:s}){const t=(0,r.iH)("month"),o=["week","month","year"];function n(e){t.value=e,s("timeFrameUpdate",e)}return(e,r)=>((0,a.wg)(),(0,a.iD)("div",c,[(0,a._)("div",i,[(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true",onClick:r[0]||(r[0]=e=>s("arrowClick",!0))})]),(0,a._)("div",u,[(0,a._)("div",d,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(o,(s=>(0,a._)("div",{class:"time-frame custom-checkbox",key:s},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:s,name:s,checked:t.value===s,onInput:e=>n(s)},null,40,p),(0,a._)("span",null,(0,l.zw)(e.$t(`statistics.TIME_FRAMES.${s}`)),1)])]))),64))])]),(0,a._)("div",m,[(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true",onClick:r[1]||(r[1]=e=>s("arrowClick",!1))})])]))}}),k=t(3744);const _=(0,k.Z)(v,[["__scopeId","data-v-22d55de2"]]);var S=_,w=t(631);const f={class:"sports-menu"},h=["id","name","checked","onInput"],U={class:"sport-label"};var b=(0,a.aZ)({__name:"StatsSportsMenu",props:{userSports:null,selectedSportIds:{default:()=>[]}},emits:["selectedSportIdsUpdate"],setup(e,{emit:s}){const t=e,{t:n}=(0,o.QT)(),c=(0,a.f3)("sportColors"),{selectedSportIds:i}=(0,r.BK)(t),u=(0,a.Fl)((()=>(0,w.xH)(t.userSports,n)));function d(e){s("selectedSportIdsUpdate",e)}return(e,s)=>{const t=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",f,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,r.SU)(u),(e=>((0,a.wg)(),(0,a.iD)("label",{type:"checkbox",key:e.id,style:(0,l.j5)({color:e.color?e.color:(0,r.SU)(c)[e.label]})},[(0,a._)("input",{type:"checkbox",id:e.id,name:e.label,checked:(0,r.SU)(i).includes(e.id),onInput:s=>d(e.id)},null,40,h),(0,a.Wm)(t,{"sport-label":e.label,color:e.color},null,8,["sport-label","color"]),(0,a._)("span",U,(0,l.zw)(e.translatedLabel),1)],4)))),128))])}}});const I=b;var g=I,T=t(9318);const y={key:0,id:"user-statistics"};var C=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const s=e,{t:t}=(0,o.QT)(),{sports:l,user:c}=(0,r.BK)(s),i=(0,r.iH)("month"),u=(0,r.iH)(v(i.value)),d=(0,a.Fl)((()=>(0,w.xH)(s.sports,t))),p=(0,r.iH)(_(s.sports));function m(e){i.value=e,u.value=v(i.value)}function v(e){return(0,T.aZ)(new Date,e,s.user.weekm)}function k(e){u.value=(0,T.FN)(u.value,e,s.user.weekm)}function _(e){return e.map((e=>e.id))}function f(e){p.value.includes(e)?p.value=p.value.filter((s=>s!==e)):p.value.push(e)}return(0,a.YP)((()=>s.sports),(e=>{p.value=_(e)})),(e,s)=>(0,r.SU)(d)?((0,a.wg)(),(0,a.iD)("div",y,[(0,a.Wm)(S,{onTimeFrameUpdate:m,onArrowClick:k}),(0,a.Wm)(n.Z,{sports:(0,r.SU)(l),user:(0,r.SU)(c),chartParams:u.value,"displayed-sport-ids":p.value,fullStats:!0},null,8,["sports","user","chartParams","displayed-sport-ids"]),(0,a.Wm)(g,{"selected-sport-ids":p.value,"user-sports":(0,r.SU)(l),onSelectedSportIdsUpdate:f},null,8,["selected-sport-ids","user-sports"])])):(0,a.kq)("",!0)}});const F=(0,k.Z)(C,[["__scopeId","data-v-30799d13"]]);var Z=F,x=t(5630),D=t(5801),H=t(9917);const E={id:"statistics",class:"view"},R={key:0,class:"container"};var W=(0,a.aZ)({__name:"StatisticsView",setup(e){const s=(0,H.o)(),t=(0,a.Fl)((()=>s.getters[D.YN.GETTERS.AUTH_USER_PROFILE])),o=(0,a.Fl)((()=>s.getters[D.O8.GETTERS.SPORTS].filter((e=>t.value.sports_list.includes(e.id)))));return(e,s)=>{const n=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",E,[(0,r.SU)(t).username?((0,a.wg)(),(0,a.iD)("div",R,[(0,a.Wm)(n,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,l.zw)(e.$t("statistics.STATISTICS")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Z,{class:(0,l.C_)({"stats-disabled":0===(0,r.SU)(t).nb_workouts}),user:(0,r.SU)(t),sports:(0,r.SU)(o)},null,8,["class","user","sports"])])),_:1}),0===(0,r.SU)(t).nb_workouts?((0,a.wg)(),(0,a.j4)(x.Z,{key:0})):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])}}});const P=(0,k.Z)(W,[["__scopeId","data-v-2e341d4e"]]);var A=P}}]);
|
"use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[193],{7885:function(e,s,t){t.r(s),t.d(s,{default:function(){return A}});var a=t(6252),r=t(2262),l=t(3577),o=(t(7658),t(9150)),n=t(436);const c={class:"chart-menu"},i={class:"chart-arrow"},u={class:"time-frames custom-checkboxes-group"},d={class:"time-frames-checkboxes custom-checkboxes"},p=["id","name","checked","onInput"],m={class:"chart-arrow"};var v=(0,a.aZ)({__name:"StatsMenu",emits:["arrowClick","timeFrameUpdate"],setup(e,{emit:s}){const t=(0,r.iH)("month"),o=["week","month","year"];function n(e){t.value=e,s("timeFrameUpdate",e)}return(e,r)=>((0,a.wg)(),(0,a.iD)("div",c,[(0,a._)("div",i,[(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true",onClick:r[0]||(r[0]=e=>s("arrowClick",!0))})]),(0,a._)("div",u,[(0,a._)("div",d,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(o,(s=>(0,a._)("div",{class:"time-frame custom-checkbox",key:s},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:s,name:s,checked:t.value===s,onInput:e=>n(s)},null,40,p),(0,a._)("span",null,(0,l.zw)(e.$t(`statistics.TIME_FRAMES.${s}`)),1)])]))),64))])]),(0,a._)("div",m,[(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true",onClick:r[1]||(r[1]=e=>s("arrowClick",!1))})])]))}}),k=t(3744);const _=(0,k.Z)(v,[["__scopeId","data-v-22d55de2"]]);var S=_,w=t(631);const f={class:"sports-menu"},h=["id","name","checked","onInput"],U={class:"sport-label"};var b=(0,a.aZ)({__name:"StatsSportsMenu",props:{userSports:null,selectedSportIds:{default:()=>[]}},emits:["selectedSportIdsUpdate"],setup(e,{emit:s}){const t=e,{t:n}=(0,o.QT)(),c=(0,a.f3)("sportColors"),{selectedSportIds:i}=(0,r.BK)(t),u=(0,a.Fl)((()=>(0,w.xH)(t.userSports,n)));function d(e){s("selectedSportIdsUpdate",e)}return(e,s)=>{const t=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",f,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,r.SU)(u),(e=>((0,a.wg)(),(0,a.iD)("label",{type:"checkbox",key:e.id,style:(0,l.j5)({color:e.color?e.color:(0,r.SU)(c)[e.label]})},[(0,a._)("input",{type:"checkbox",id:e.id,name:e.label,checked:(0,r.SU)(i).includes(e.id),onInput:s=>d(e.id)},null,40,h),(0,a.Wm)(t,{"sport-label":e.label,color:e.color},null,8,["sport-label","color"]),(0,a._)("span",U,(0,l.zw)(e.translatedLabel),1)],4)))),128))])}}});const I=b;var g=I,T=t(9318);const y={key:0,id:"user-statistics"};var C=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const s=e,{t:t}=(0,o.QT)(),{sports:l,user:c}=(0,r.BK)(s),i=(0,r.iH)("month"),u=(0,r.iH)(v(i.value)),d=(0,a.Fl)((()=>(0,w.xH)(s.sports,t))),p=(0,r.iH)(_(s.sports));function m(e){i.value=e,u.value=v(i.value)}function v(e){return(0,T.aZ)(new Date,e,s.user.weekm)}function k(e){u.value=(0,T.FN)(u.value,e,s.user.weekm)}function _(e){return e.map((e=>e.id))}function f(e){p.value.includes(e)?p.value=p.value.filter((s=>s!==e)):p.value.push(e)}return(0,a.YP)((()=>s.sports),(e=>{p.value=_(e)})),(e,s)=>(0,r.SU)(d)?((0,a.wg)(),(0,a.iD)("div",y,[(0,a.Wm)(S,{onTimeFrameUpdate:m,onArrowClick:k}),(0,a.Wm)(n.Z,{sports:(0,r.SU)(l),user:(0,r.SU)(c),chartParams:u.value,"displayed-sport-ids":p.value,fullStats:!0},null,8,["sports","user","chartParams","displayed-sport-ids"]),(0,a.Wm)(g,{"selected-sport-ids":p.value,"user-sports":(0,r.SU)(l),onSelectedSportIdsUpdate:f},null,8,["selected-sport-ids","user-sports"])])):(0,a.kq)("",!0)}});const F=(0,k.Z)(C,[["__scopeId","data-v-30799d13"]]);var Z=F,x=t(5630),D=t(5801),H=t(9917);const E={id:"statistics",class:"view"},R={key:0,class:"container"};var W=(0,a.aZ)({__name:"StatisticsView",setup(e){const s=(0,H.o)(),t=(0,a.Fl)((()=>s.getters[D.YN.GETTERS.AUTH_USER_PROFILE])),o=(0,a.Fl)((()=>s.getters[D.O8.GETTERS.SPORTS].filter((e=>t.value.sports_list.includes(e.id)))));return(e,s)=>{const n=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",E,[(0,r.SU)(t).username?((0,a.wg)(),(0,a.iD)("div",R,[(0,a.Wm)(n,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,l.zw)(e.$t("statistics.STATISTICS")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Z,{class:(0,l.C_)({"stats-disabled":0===(0,r.SU)(t).nb_workouts}),user:(0,r.SU)(t),sports:(0,r.SU)(o)},null,8,["class","user","sports"])])),_:1}),0===(0,r.SU)(t).nb_workouts?((0,a.wg)(),(0,a.j4)(x.Z,{key:0})):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])}}});const P=(0,k.Z)(W,[["__scopeId","data-v-2e341d4e"]]);var A=P}}]);
|
||||||
//# sourceMappingURL=statistics.d3c3c7bd.js.map
|
//# sourceMappingURL=statistics.5228e1ba.js.map
|
@ -217,6 +217,24 @@ def assert_workout_data_wo_gpx(data: Dict) -> None:
|
|||||||
assert records[3]['value'] == 10.0
|
assert records[3]['value'] == 10.0
|
||||||
|
|
||||||
|
|
||||||
|
def assert_files_are_deleted(
|
||||||
|
app: Flask, user: User, expected_count: Optional[int] = 0
|
||||||
|
) -> None:
|
||||||
|
upload_directory = os.path.join(
|
||||||
|
app.config["UPLOAD_FOLDER"], f"workouts/{user.id}"
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
len(
|
||||||
|
[
|
||||||
|
name
|
||||||
|
for name in os.listdir(upload_directory)
|
||||||
|
if os.path.isfile(os.path.join(upload_directory, name))
|
||||||
|
]
|
||||||
|
)
|
||||||
|
== expected_count
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TestPostWorkoutWithGpx(ApiTestCaseMixin, CallArgsMixin):
|
class TestPostWorkoutWithGpx(ApiTestCaseMixin, CallArgsMixin):
|
||||||
def test_it_returns_error_if_user_is_not_authenticated(
|
def test_it_returns_error_if_user_is_not_authenticated(
|
||||||
self, app: Flask, sport_1_cycling: Sport, gpx_file: str
|
self, app: Flask, sport_1_cycling: Sport, gpx_file: str
|
||||||
@ -800,6 +818,96 @@ class TestPostWorkoutWithGpx(ApiTestCaseMixin, CallArgsMixin):
|
|||||||
)
|
)
|
||||||
assert 'data' not in data
|
assert 'data' not in data
|
||||||
|
|
||||||
|
def test_it_cleans_uploaded_file_on_gpx_processing_error(
|
||||||
|
self, app: Flask, user_1: User, sport_1_cycling: Sport, gpx_file: str
|
||||||
|
) -> None:
|
||||||
|
client, auth_token = self.get_test_client_and_auth_token(
|
||||||
|
app, user_1.email
|
||||||
|
)
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
'fittrackee.workouts.utils.workouts.generate_map',
|
||||||
|
side_effect=Exception(),
|
||||||
|
):
|
||||||
|
client.post(
|
||||||
|
'/api/workouts',
|
||||||
|
data=dict(
|
||||||
|
file=(BytesIO(str.encode(gpx_file)), 'example.gpx'),
|
||||||
|
data='{"sport_id": 1}',
|
||||||
|
),
|
||||||
|
headers=dict(
|
||||||
|
content_type='multipart/form-data',
|
||||||
|
Authorization=f'Bearer {auth_token}',
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
assert_files_are_deleted(app, user_1)
|
||||||
|
|
||||||
|
def test_it_deletes_only_errored_file(
|
||||||
|
self, app: Flask, user_1: User, sport_1_cycling: Sport, gpx_file: str
|
||||||
|
) -> None:
|
||||||
|
client, auth_token = self.get_test_client_and_auth_token(
|
||||||
|
app, user_1.email
|
||||||
|
)
|
||||||
|
client.post(
|
||||||
|
'/api/workouts',
|
||||||
|
data=dict(
|
||||||
|
file=(BytesIO(str.encode(gpx_file)), 'example.gpx'),
|
||||||
|
data='{"sport_id": 1}',
|
||||||
|
),
|
||||||
|
headers=dict(
|
||||||
|
content_type='multipart/form-data',
|
||||||
|
Authorization=f'Bearer {auth_token}',
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
'fittrackee.workouts.utils.workouts.generate_map',
|
||||||
|
side_effect=Exception(),
|
||||||
|
):
|
||||||
|
client.post(
|
||||||
|
'/api/workouts',
|
||||||
|
data=dict(
|
||||||
|
file=(BytesIO(str.encode(gpx_file)), 'example.gpx'),
|
||||||
|
data='{"sport_id": 2}',
|
||||||
|
),
|
||||||
|
headers=dict(
|
||||||
|
content_type='multipart/form-data',
|
||||||
|
Authorization=f'Bearer {auth_token}',
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
assert_files_are_deleted(app, user_1, expected_count=2)
|
||||||
|
upload_directory = os.path.join(app.config["UPLOAD_FOLDER"])
|
||||||
|
workout = Workout.query.first()
|
||||||
|
os.path.exists(os.path.join(upload_directory, workout.gpx))
|
||||||
|
os.path.exists(os.path.join(upload_directory, workout.map))
|
||||||
|
|
||||||
|
def test_it_cleans_uploaded_file_and_static_map_on_segments_creation_error(
|
||||||
|
self, app: Flask, user_1: User, sport_1_cycling: Sport, gpx_file: str
|
||||||
|
) -> None:
|
||||||
|
client, auth_token = self.get_test_client_and_auth_token(
|
||||||
|
app, user_1.email
|
||||||
|
)
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
'fittrackee.workouts.utils.workouts.create_segment',
|
||||||
|
side_effect=ValueError(),
|
||||||
|
):
|
||||||
|
client.post(
|
||||||
|
'/api/workouts',
|
||||||
|
data=dict(
|
||||||
|
file=(BytesIO(str.encode(gpx_file)), 'example.gpx'),
|
||||||
|
data='{"sport_id": 1}',
|
||||||
|
),
|
||||||
|
headers=dict(
|
||||||
|
content_type='multipart/form-data',
|
||||||
|
Authorization=f'Bearer {auth_token}',
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
assert_files_are_deleted(app, user_1)
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
'client_scope, can_access',
|
'client_scope, can_access',
|
||||||
[
|
[
|
||||||
@ -1399,6 +1507,31 @@ class TestPostWorkoutWithZipArchive(ApiTestCaseMixin):
|
|||||||
)
|
)
|
||||||
assert 'data' not in data
|
assert 'data' not in data
|
||||||
|
|
||||||
|
def test_it_cleans_uploaded_file_on_error(
|
||||||
|
self, app: Flask, user_1: User, sport_1_cycling: Sport
|
||||||
|
) -> None:
|
||||||
|
client, auth_token = self.get_test_client_and_auth_token(
|
||||||
|
app, user_1.email
|
||||||
|
)
|
||||||
|
file_path = os.path.join(app.root_path, 'tests/files/gpx_test.zip')
|
||||||
|
# 'gpx_test.zip' contains 3 gpx files (same data) and 1 non-gpx file
|
||||||
|
with open(file_path, 'rb') as zip_file, patch(
|
||||||
|
'fittrackee.workouts.utils.workouts.generate_map',
|
||||||
|
side_effect=Exception(),
|
||||||
|
):
|
||||||
|
client.post(
|
||||||
|
'/api/workouts',
|
||||||
|
data=dict(
|
||||||
|
file=(zip_file, 'gpx_test.zip'), data='{"sport_id": 1}'
|
||||||
|
),
|
||||||
|
headers=dict(
|
||||||
|
content_type='multipart/form-data',
|
||||||
|
Authorization=f'Bearer {auth_token}',
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
assert_files_are_deleted(app, user_1)
|
||||||
|
|
||||||
|
|
||||||
class TestPostAndGetWorkoutWithGpx(ApiTestCaseMixin):
|
class TestPostAndGetWorkoutWithGpx(ApiTestCaseMixin):
|
||||||
def workout_assertion(
|
def workout_assertion(
|
||||||
|
@ -40,5 +40,5 @@ class WeatherService:
|
|||||||
try:
|
try:
|
||||||
return self.weather_api.get_weather(point)
|
return self.weather_api.get_weather(point)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
appLog.error(e)
|
appLog.error(f'error when getting weather data: {e}')
|
||||||
return None
|
return None
|
||||||
|
@ -8,11 +8,10 @@ from uuid import UUID
|
|||||||
import gpxpy.gpx
|
import gpxpy.gpx
|
||||||
import pytz
|
import pytz
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
from sqlalchemy import exc
|
|
||||||
from werkzeug.datastructures import FileStorage
|
from werkzeug.datastructures import FileStorage
|
||||||
from werkzeug.utils import secure_filename
|
from werkzeug.utils import secure_filename
|
||||||
|
|
||||||
from fittrackee import db
|
from fittrackee import appLog, db
|
||||||
from fittrackee.files import get_absolute_file_path
|
from fittrackee.files import get_absolute_file_path
|
||||||
from fittrackee.users.models import User, UserSportPreference
|
from fittrackee.users.models import User, UserSportPreference
|
||||||
|
|
||||||
@ -279,12 +278,26 @@ def get_new_file_path(
|
|||||||
return file_path
|
return file_path
|
||||||
|
|
||||||
|
|
||||||
|
def delete_files(
|
||||||
|
absolute_gpx_filepath: Optional[str], absolute_map_filepath: Optional[str]
|
||||||
|
) -> None:
|
||||||
|
try:
|
||||||
|
if absolute_gpx_filepath and os.path.exists(absolute_gpx_filepath):
|
||||||
|
os.remove(absolute_gpx_filepath)
|
||||||
|
if absolute_map_filepath and os.path.exists(absolute_map_filepath):
|
||||||
|
os.remove(absolute_map_filepath)
|
||||||
|
except Exception:
|
||||||
|
appLog.error('Unable to delete files after processing error.')
|
||||||
|
|
||||||
|
|
||||||
def process_one_gpx_file(
|
def process_one_gpx_file(
|
||||||
params: Dict, filename: str, stopped_speed_threshold: float
|
params: Dict, filename: str, stopped_speed_threshold: float
|
||||||
) -> Workout:
|
) -> Workout:
|
||||||
"""
|
"""
|
||||||
Get all data from a gpx file to create a workout with map image
|
Get all data from a gpx file to create a workout with map image
|
||||||
"""
|
"""
|
||||||
|
absolute_gpx_filepath = None
|
||||||
|
absolute_map_filepath = None
|
||||||
try:
|
try:
|
||||||
gpx_data, map_data, weather_data = get_gpx_info(
|
gpx_data, map_data, weather_data = get_gpx_info(
|
||||||
params['file_path'], stopped_speed_threshold
|
params['file_path'], stopped_speed_threshold
|
||||||
@ -314,8 +327,10 @@ def process_one_gpx_file(
|
|||||||
absolute_map_filepath = get_absolute_file_path(map_filepath)
|
absolute_map_filepath = get_absolute_file_path(map_filepath)
|
||||||
generate_map(absolute_map_filepath, map_data)
|
generate_map(absolute_map_filepath, map_data)
|
||||||
except (gpxpy.gpx.GPXXMLSyntaxException, TypeError) as e:
|
except (gpxpy.gpx.GPXXMLSyntaxException, TypeError) as e:
|
||||||
|
delete_files(absolute_gpx_filepath, absolute_map_filepath)
|
||||||
raise WorkoutException('error', 'error during gpx file parsing', e)
|
raise WorkoutException('error', 'error during gpx file parsing', e)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
delete_files(absolute_gpx_filepath, absolute_map_filepath)
|
||||||
raise WorkoutException('error', 'error during gpx processing', e)
|
raise WorkoutException('error', 'error during gpx processing', e)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -336,8 +351,9 @@ def process_one_gpx_file(
|
|||||||
db.session.add(new_segment)
|
db.session.add(new_segment)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return new_workout
|
return new_workout
|
||||||
except (exc.IntegrityError, ValueError) as e:
|
except Exception as e:
|
||||||
raise WorkoutException('fail', 'Error during workout save.', e)
|
delete_files(absolute_gpx_filepath, absolute_map_filepath)
|
||||||
|
raise WorkoutException('error', 'error when saving workout', e)
|
||||||
|
|
||||||
|
|
||||||
def is_gpx_file(filename: str) -> bool:
|
def is_gpx_file(filename: str) -> bool:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "fittrackee_client",
|
"name": "fittrackee_client",
|
||||||
"version": "0.7.13",
|
"version": "0.7.14",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"serve": "vue-cli-service serve",
|
"serve": "vue-cli-service serve",
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
"error during gpx file parsing": "Error during gpx file parsing.",
|
"error during gpx file parsing": "Error during gpx file parsing.",
|
||||||
"error during gpx processing": "Error during gpx processing.",
|
"error during gpx processing": "Error during gpx processing.",
|
||||||
"error on getting configuration": "Error on getting configuration.",
|
"error on getting configuration": "Error on getting configuration.",
|
||||||
|
"error when saving workout": "Error when saving workout.",
|
||||||
"error when updating configuration": "Error when updating configuration",
|
"error when updating configuration": "Error when updating configuration",
|
||||||
"error, please try again or contact the administrator": "Error, please try again or contact the administrator.",
|
"error, please try again or contact the administrator": "Error, please try again or contact the administrator.",
|
||||||
"error, registration is disabled": "Error, registration is disabled.",
|
"error, registration is disabled": "Error, registration is disabled.",
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
"error during gpx file parsing": "Erreur lors de l'analyse du fichier.",
|
"error during gpx file parsing": "Erreur lors de l'analyse du fichier.",
|
||||||
"error during gpx processing": "Erreur lors du traitement du fichier gpx.",
|
"error during gpx processing": "Erreur lors du traitement du fichier gpx.",
|
||||||
"error on getting configuration": "Erreur lors de la récupération de la configuration.",
|
"error on getting configuration": "Erreur lors de la récupération de la configuration.",
|
||||||
|
"error when saving workout": "Erreur lors de l'enregistrement de la séance.",
|
||||||
"error when updating configuration": "Erreur lors de la mise à jour de la configuration",
|
"error when updating configuration": "Erreur lors de la mise à jour de la configuration",
|
||||||
"error, please try again or contact the administrator": "Erreur, veuillez réessayer ou contacter l'administrateur.",
|
"error, please try again or contact the administrator": "Erreur, veuillez réessayer ou contacter l'administrateur.",
|
||||||
"error, registration is disabled": "Erreur, les inscriptions sont désactivées.",
|
"error, registration is disabled": "Erreur, les inscriptions sont désactivées.",
|
||||||
|
@ -118,7 +118,7 @@
|
|||||||
"REGISTER_DISABLED": "Sorry, registreren is uitgeschakeld.",
|
"REGISTER_DISABLED": "Sorry, registreren is uitgeschakeld.",
|
||||||
"RESENT_ACCOUNT_CONFIRMATION": "Opnieuw zenden van account bevestigingsmail",
|
"RESENT_ACCOUNT_CONFIRMATION": "Opnieuw zenden van account bevestigingsmail",
|
||||||
"RESET_PASSWORD": "Reset uw wachtwoord",
|
"RESET_PASSWORD": "Reset uw wachtwoord",
|
||||||
"REVIEW": "beoordeling",
|
"REVIEW": "beoordeel",
|
||||||
"SHOW_PASSWORD": "toon wachtwoord",
|
"SHOW_PASSWORD": "toon wachtwoord",
|
||||||
"THIS_USER_ACCOUNT_IS_INACTIVE": "Deze account is niet actief.",
|
"THIS_USER_ACCOUNT_IS_INACTIVE": "Deze account is niet actief.",
|
||||||
"USERNAME": "Gebruikersnaam",
|
"USERNAME": "Gebruikersnaam",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "fittrackee"
|
name = "fittrackee"
|
||||||
version = "0.7.13"
|
version = "0.7.14"
|
||||||
description = "Self-hosted outdoor workout/activity tracker"
|
description = "Self-hosted outdoor workout/activity tracker"
|
||||||
authors = ["SamR1"]
|
authors = ["SamR1"]
|
||||||
license = "AGPL-3.0"
|
license = "AGPL-3.0"
|
||||||
|