Merge branch 'master' into dev
							
								
								
									
										37
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						@@ -1,5 +1,42 @@
 | 
			
		||||
# Change log
 | 
			
		||||
 | 
			
		||||
## 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.  
 | 
			
		||||
A default policy is available and a custom policy can be defined in the administration.  
 | 
			
		||||
**Note:** After **FitTrackee** upgrade, a message will be displayed to all users in order to review the policy.  
 | 
			
		||||
 | 
			
		||||
A user can now request a data export (containing user info, workout data and uploaded gpx files).
 | 
			
		||||
 | 
			
		||||
Lastly, additional information that may be useful to users can be displayed in **About** page.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Features and enhancements
 | 
			
		||||
 | 
			
		||||
* [#301](https://github.com/SamR1/FitTrackee/issues/301) - add privacy policy
 | 
			
		||||
* [#304](https://github.com/SamR1/FitTrackee/issues/304) - add user data export
 | 
			
		||||
* [#305](https://github.com/SamR1/FitTrackee/issues/305) - add additional information in About page
 | 
			
		||||
 | 
			
		||||
### Bugs Fixed
 | 
			
		||||
 | 
			
		||||
* [PR#307](https://github.com/SamR1/FitTrackee/pull/307) - Minor fixes
 | 
			
		||||
  * update workout and map files name
 | 
			
		||||
  * fix error message when api is not running
 | 
			
		||||
  * fix modal position
 | 
			
		||||
 | 
			
		||||
### Translations
 | 
			
		||||
 | 
			
		||||
* [PR#297](https://github.com/SamR1/FitTrackee/pull/297) - Translations update from Hosted Weblate (Dutch)
 | 
			
		||||
* [PR#308](https://github.com/SamR1/FitTrackee/pull/308) - Translations update from Hosted Weblate (Dutch)
 | 
			
		||||
* [PR#310](https://github.com/SamR1/FitTrackee/pull/310) - Translations update from Hosted Weblate (Dutch and German)
 | 
			
		||||
 | 
			
		||||
Thanks to the contributors:
 | 
			
		||||
- @bjornclauw
 | 
			
		||||
- @qwerty287
 | 
			
		||||
 | 
			
		||||
**Note:** This release contains database migration (see upgrade instructions in [documentation](https://samr1.github.io/FitTrackee/installation.html#upgrade))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Version 0.7.12 (2023/02/16)
 | 
			
		||||
 | 
			
		||||
### Translations
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
# 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.
 | 
			
		||||
config: ac8aa6be93dbbca43a66932db34df2ce
 | 
			
		||||
config: 27f4394ace216ce3fd5ef2a67c1bf1ef
 | 
			
		||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
 | 
			
		||||
 
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 566 KiB After Width: | Height: | Size: 568 KiB  | 
| 
		 Before Width: | Height: | Size: 386 KiB After Width: | Height: | Size: 387 KiB  | 
| 
		 Before Width: | Height: | Size: 216 KiB After Width: | Height: | Size: 218 KiB  | 
| 
		 Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB  | 
| 
		 Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 68 KiB  | 
| 
		 Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 122 KiB  | 
| 
		 Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 132 KiB  | 
| 
		 Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB  | 
@@ -1,5 +1,5 @@
 | 
			
		||||
Authentication
 | 
			
		||||
##############
 | 
			
		||||
Authentication and account
 | 
			
		||||
##########################
 | 
			
		||||
 | 
			
		||||
.. autoflask:: fittrackee:create_app()
 | 
			
		||||
   :endpoints:
 | 
			
		||||
@@ -18,4 +18,8 @@ Authentication
 | 
			
		||||
    auth.update_user_account,
 | 
			
		||||
    auth.update_password,
 | 
			
		||||
    auth.update_email,
 | 
			
		||||
    auth.logout_user
 | 
			
		||||
    auth.logout_user,
 | 
			
		||||
    auth.accept_privacy_policy,
 | 
			
		||||
    auth.get_user_data_export,
 | 
			
		||||
    auth.request_user_data_export,
 | 
			
		||||
    auth.download_data_export
 | 
			
		||||
@@ -1,5 +1,42 @@
 | 
			
		||||
# Change log
 | 
			
		||||
 | 
			
		||||
## 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.  
 | 
			
		||||
A default policy is available and a custom policy can be defined in the administration.  
 | 
			
		||||
**Note:** After **FitTrackee** upgrade, a message will be displayed to all users in order to review the policy.  
 | 
			
		||||
 | 
			
		||||
A user can now request a data export (containing user info, workout data and uploaded gpx files).
 | 
			
		||||
 | 
			
		||||
Lastly, additional information that may be useful to users can be displayed in **About** page.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Features and enhancements
 | 
			
		||||
 | 
			
		||||
* [#301](https://github.com/SamR1/FitTrackee/issues/301) - add privacy policy
 | 
			
		||||
* [#304](https://github.com/SamR1/FitTrackee/issues/304) - add user data export
 | 
			
		||||
* [#305](https://github.com/SamR1/FitTrackee/issues/305) - add additional information in About page
 | 
			
		||||
 | 
			
		||||
### Bugs Fixed
 | 
			
		||||
 | 
			
		||||
* [PR#307](https://github.com/SamR1/FitTrackee/pull/307) - Minor fixes
 | 
			
		||||
  * update workout and map files name
 | 
			
		||||
  * fix error message when api is not running
 | 
			
		||||
  * fix modal position
 | 
			
		||||
 | 
			
		||||
### Translations
 | 
			
		||||
 | 
			
		||||
* [PR#297](https://github.com/SamR1/FitTrackee/pull/297) - Translations update from Hosted Weblate (Dutch)
 | 
			
		||||
* [PR#308](https://github.com/SamR1/FitTrackee/pull/308) - Translations update from Hosted Weblate (Dutch)
 | 
			
		||||
* [PR#310](https://github.com/SamR1/FitTrackee/pull/310) - Translations update from Hosted Weblate (Dutch and German)
 | 
			
		||||
 | 
			
		||||
Thanks to the contributors:
 | 
			
		||||
- @bjornclauw
 | 
			
		||||
- @qwerty287
 | 
			
		||||
 | 
			
		||||
**Note:** This release contains database migration (see upgrade instructions in [documentation](https://samr1.github.io/FitTrackee/installation.html#upgrade))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Version 0.7.12 (2023/02/16)
 | 
			
		||||
 | 
			
		||||
### Translations
 | 
			
		||||
 
 | 
			
		||||
@@ -28,13 +28,6 @@ A command line interface (CLI) is available to manage database, OAuth2 tokens an
 | 
			
		||||
Database
 | 
			
		||||
~~~~~~~~
 | 
			
		||||
 | 
			
		||||
``ftcli db upgrade``
 | 
			
		||||
""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.6.5
 | 
			
		||||
 | 
			
		||||
Apply migrations.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
``ftcli db drop``
 | 
			
		||||
"""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.6.5
 | 
			
		||||
@@ -42,6 +35,13 @@ Apply migrations.
 | 
			
		||||
Empty database and delete uploaded files, only on development environments.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
``ftcli db upgrade``
 | 
			
		||||
""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.6.5
 | 
			
		||||
 | 
			
		||||
Apply migrations.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
OAuth2
 | 
			
		||||
~~~~~~
 | 
			
		||||
 | 
			
		||||
@@ -66,6 +66,23 @@ Remove tokens expired for more than provided number of days
 | 
			
		||||
Users
 | 
			
		||||
~~~~~
 | 
			
		||||
 | 
			
		||||
``ftcli users clean_archives``
 | 
			
		||||
""""""""""""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.7.13
 | 
			
		||||
 | 
			
		||||
Delete export requests and related archives created more than provided number of days.
 | 
			
		||||
 | 
			
		||||
.. cssclass:: table-bordered
 | 
			
		||||
.. list-table::
 | 
			
		||||
   :widths: 25 50
 | 
			
		||||
   :header-rows: 1
 | 
			
		||||
 | 
			
		||||
   * - Options
 | 
			
		||||
     - Description
 | 
			
		||||
   * - ``--days``
 | 
			
		||||
     - Number of days.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
``ftcli users clean_tokens``
 | 
			
		||||
""""""""""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.7.0
 | 
			
		||||
@@ -83,6 +100,24 @@ Remove blacklisted tokens expired for more than provided number of days.
 | 
			
		||||
     - Number of days.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
``ftcli users export_archives``
 | 
			
		||||
"""""""""""""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.7.13
 | 
			
		||||
 | 
			
		||||
Process incomplete user export requests.
 | 
			
		||||
Can be used if redis is not set (no dramatiq workers running).
 | 
			
		||||
 | 
			
		||||
.. cssclass:: table-bordered
 | 
			
		||||
.. list-table::
 | 
			
		||||
   :widths: 25 50
 | 
			
		||||
   :header-rows: 1
 | 
			
		||||
 | 
			
		||||
   * - Options
 | 
			
		||||
     - Description
 | 
			
		||||
   * - ``--max``
 | 
			
		||||
     - Maximum number of export requests to process.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
``ftcli users update``
 | 
			
		||||
""""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.6.5
 | 
			
		||||
 
 | 
			
		||||
@@ -74,9 +74,10 @@ Workouts
 | 
			
		||||
Account & preferences
 | 
			
		||||
^^^^^^^^^^^^^^^^^^^^^
 | 
			
		||||
- A user can create, update and deleted his account.
 | 
			
		||||
- The user must agree to the privacy policy to register. If a more recent policy is available, a message is displayed on the dashboard to review the new version (*new in 0.7.13*).
 | 
			
		||||
- On registration, the user account is created with selected language in dropdown as user preference (*new in 0.6.9*).
 | 
			
		||||
- After registration, the user account is inactive and an email with confirmation instructions is sent to activate it.
 | 
			
		||||
  A user with an inactive account cannot log in. (*new in 0.6.0*)
 | 
			
		||||
  A user with an inactive account cannot log in. (*new in 0.6.0*).
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
  In case email sending is not configured, a `command line <cli.html#ftcli-users-update>`__ allows to activate users account.
 | 
			
		||||
@@ -98,42 +99,70 @@ Account & preferences
 | 
			
		||||
  | A workout with a disabled sport will still be displayed in the application.
 | 
			
		||||
 | 
			
		||||
- A user can create `clients <apps.html>`__ for third-party applications (*new in 0.7.0*).
 | 
			
		||||
- | A user can request a data export (*new in 0.7.13*).
 | 
			
		||||
  | It generates a zip archive containing 2 ``json`` files (user info and workouts data) and all uploaded gpx files.
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
  For now, it's not possible to import these files into another **FitTrackee** instance.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Administration
 | 
			
		||||
^^^^^^^^^^^^^^
 | 
			
		||||
(*new in 0.3.0*)
 | 
			
		||||
 | 
			
		||||
- **Application**
 | 
			
		||||
Application
 | 
			
		||||
"""""""""""
 | 
			
		||||
 | 
			
		||||
  The following parameters can be set:
 | 
			
		||||
**Configuration**
 | 
			
		||||
 | 
			
		||||
  - active users limit. If 0, registration is enabled (no limit defined)
 | 
			
		||||
  - maximum size of gpx file (individually uploaded or in a zip archive) (*changed in 0.7.4*)
 | 
			
		||||
  - maximum size of zip archive
 | 
			
		||||
  - maximum number of files in the zip archive (*changed in 0.7.4*)
 | 
			
		||||
  - administrator email for contact (*new in 0.6.0*)
 | 
			
		||||
The following parameters can be set:
 | 
			
		||||
 | 
			
		||||
  .. warning::
 | 
			
		||||
      Updating server configuration may be necessary to handle large files (like `nginx <https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size>`_ for instance).
 | 
			
		||||
- active users limit. If 0, registration is enabled (no limit defined).
 | 
			
		||||
- maximum size of gpx file (individually uploaded or in a zip archive) (*changed in 0.7.4*)
 | 
			
		||||
- maximum size of zip archive
 | 
			
		||||
- maximum number of files in the zip archive (*changed in 0.7.4*)
 | 
			
		||||
- administrator email for contact (*new in 0.6.0*)
 | 
			
		||||
 | 
			
		||||
  .. note::
 | 
			
		||||
      If email sending is disabled, a warning is displayed.
 | 
			
		||||
.. warning::
 | 
			
		||||
  Updating server configuration may be necessary to handle large files (like `nginx <https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size>`_ for instance).
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
  If email sending is disabled, a warning is displayed.
 | 
			
		||||
 | 
			
		||||
**About**
 | 
			
		||||
 | 
			
		||||
(*new in 0.7.13*)
 | 
			
		||||
 | 
			
		||||
| It is possible displayed additional information that may be useful to users in **About** page.
 | 
			
		||||
| Markdown syntax can be used.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- **Users**
 | 
			
		||||
**Privacy policy**
 | 
			
		||||
 | 
			
		||||
  - display and filter users list
 | 
			
		||||
  - edit a user to:
 | 
			
		||||
      - add/remove administration rights
 | 
			
		||||
      - activate his account (*new in 0.6.0*)
 | 
			
		||||
      - update his email (in case his account is locked) (*new in 0.6.0*)
 | 
			
		||||
      - reset his password (in case his account is locked) (*new in 0.6.0*). If email sending is disabled, it is only possible via CLI.
 | 
			
		||||
  - delete a user
 | 
			
		||||
(*new in 0.7.13*)
 | 
			
		||||
 | 
			
		||||
- **Sports**
 | 
			
		||||
| A default privacy policy is available (originally adapted from the `Discourse <https://github.com/discourse/discourse>`__ privacy policy).
 | 
			
		||||
| A custom privacy policy can set if needed (Markdown syntax can be used). A policy update will display a message on users dashboard to review it.
 | 
			
		||||
 | 
			
		||||
  - enable or disable a sport (a sport can be disabled even if workout with this sport exists)
 | 
			
		||||
.. note::
 | 
			
		||||
  Only the default privacy policy is translated (if the translation is available).
 | 
			
		||||
 | 
			
		||||
Users
 | 
			
		||||
"""""
 | 
			
		||||
 | 
			
		||||
- display and filter users list
 | 
			
		||||
- edit a user to:
 | 
			
		||||
 | 
			
		||||
  - add/remove administration rights
 | 
			
		||||
  - activate his account (*new in 0.6.0*)
 | 
			
		||||
  - update his email (in case his account is locked) (*new in 0.6.0*)
 | 
			
		||||
  - reset his password (in case his account is locked) (*new in 0.6.0*). If email sending is disabled, it is only possible via CLI.
 | 
			
		||||
- delete a user
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Sports
 | 
			
		||||
""""""
 | 
			
		||||
- enable or disable a sport (a sport can be disabled even if workout with this sport exists)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Translations
 | 
			
		||||
 
 | 
			
		||||
@@ -26,13 +26,16 @@ Prerequisites
 | 
			
		||||
    - Python 3.7+
 | 
			
		||||
    - PostgreSQL 11+
 | 
			
		||||
- optional
 | 
			
		||||
    - Redis for task queue (if email sending is enabled) and API rate limits
 | 
			
		||||
    - Redis for task queue (if email sending is enabled and for data export requests) and API rate limits
 | 
			
		||||
    - SMTP provider (if email sending is enabled)
 | 
			
		||||
    - API key from a `weather data provider <installation.html#weather-data>`__
 | 
			
		||||
    - `Poetry <https://poetry.eustace.io>`__ (for installation from sources only)
 | 
			
		||||
    - `Yarn <https://yarnpkg.com>`__ (for development only)
 | 
			
		||||
    -  Docker and Docker Compose (for development or evaluation purposes)
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
    | If registration is enabled, it is recommended to set Redis and a SMTP provider for email sending and data export requests.
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
    | The following steps describe an installation on Linux systems (tested
 | 
			
		||||
      on Debian and Arch).
 | 
			
		||||
@@ -273,11 +276,13 @@ Emails sent by FitTrackee are:
 | 
			
		||||
- password reset request
 | 
			
		||||
- email change (to old and new email adresses)
 | 
			
		||||
- password change
 | 
			
		||||
- notification when a data export archive is ready to download (*new in 0.7.13*)
 | 
			
		||||
 | 
			
		||||
.. versionchanged:: 0.6.5
 | 
			
		||||
 | 
			
		||||
| For single-user instance, it is possible to disable email sending with an empty ``EMAIL_URL`` (in this case, no need to start dramatiq workers).
 | 
			
		||||
| A `CLI <cli.html#ftcli-users-update>`__ is available to activate account and modify email and password.
 | 
			
		||||
For single-user instance, it is possible to disable email sending with an empty ``EMAIL_URL`` (in this case, no need to start dramatiq workers).
 | 
			
		||||
 | 
			
		||||
A `CLI <cli.html#ftcli-users-update>`__ is available to activate account, modify email and password and handle data export requests.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Map tile server
 | 
			
		||||
@@ -293,7 +298,7 @@ To keep using **ThunderForest Outdoors**, the configuration is:
 | 
			
		||||
- ``MAP_ATTRIBUTION=© <a href="http://www.thunderforest.com/">Thunderforest</a>, © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors``
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
    | Check the terms of service of tile provider for map attribution
 | 
			
		||||
    | Check the terms of service of tile provider for map attribution.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. versionchanged:: 0.6.10
 | 
			
		||||
@@ -502,13 +507,13 @@ Production environment
 | 
			
		||||
.. warning::
 | 
			
		||||
    | Note that FitTrackee is under heavy development, some features may be unstable.
 | 
			
		||||
 | 
			
		||||
-  Download the last release (for now, it is the release v0.7.12):
 | 
			
		||||
-  Download the last release (for now, it is the release v0.7.13):
 | 
			
		||||
 | 
			
		||||
.. code:: bash
 | 
			
		||||
 | 
			
		||||
   $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.12.tar.gz
 | 
			
		||||
   $ tar -xzf v0.7.12.tar.gz
 | 
			
		||||
   $ mv FitTrackee-0.7.12 FitTrackee
 | 
			
		||||
   $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.13.tar.gz
 | 
			
		||||
   $ tar -xzf v0.7.13.tar.gz
 | 
			
		||||
   $ mv FitTrackee-0.7.13 FitTrackee
 | 
			
		||||
   $ cd FitTrackee
 | 
			
		||||
 | 
			
		||||
-  Create **.env** from example and update it
 | 
			
		||||
@@ -628,13 +633,13 @@ Prod environment
 | 
			
		||||
 | 
			
		||||
- Change to the directory where FitTrackee directory is located
 | 
			
		||||
 | 
			
		||||
- Download the last release (for now, it is the release v0.7.12) and overwrite existing files:
 | 
			
		||||
- Download the last release (for now, it is the release v0.7.13) and overwrite existing files:
 | 
			
		||||
 | 
			
		||||
.. code:: bash
 | 
			
		||||
 | 
			
		||||
   $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.12.tar.gz
 | 
			
		||||
   $ tar -xzf v0.7.12.tar.gz
 | 
			
		||||
   $ cp -R FitTrackee-0.7.12/* FitTrackee/
 | 
			
		||||
   $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.13.tar.gz
 | 
			
		||||
   $ tar -xzf v0.7.13.tar.gz
 | 
			
		||||
   $ cp -R FitTrackee-0.7.13/* FitTrackee/
 | 
			
		||||
   $ cd FitTrackee
 | 
			
		||||
 | 
			
		||||
- Update **.env** if needed (see `Environment variables <installation.html#environment-variables>`__).
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								docs/_static/documentation_options.js
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -1,6 +1,6 @@
 | 
			
		||||
var DOCUMENTATION_OPTIONS = {
 | 
			
		||||
    URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
 | 
			
		||||
    VERSION: '0.7.12',
 | 
			
		||||
    VERSION: '0.7.13',
 | 
			
		||||
    LANGUAGE: 'en',
 | 
			
		||||
    COLLAPSE_INDEX: false,
 | 
			
		||||
    BUILDER: 'html',
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>Authentication — FitTrackee 0.7.12
 | 
			
		||||
    <title>Authentication and account — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="../index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -82,7 +82,7 @@
 | 
			
		||||
  <ul class="dropdown-menu localtoc"
 | 
			
		||||
      role="menu"
 | 
			
		||||
      aria-labelledby="dLabelLocalToc"><ul>
 | 
			
		||||
<li><a class="reference internal" href="#">Authentication</a></li>
 | 
			
		||||
<li><a class="reference internal" href="#">Authentication and account</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</ul>
 | 
			
		||||
</li>
 | 
			
		||||
@@ -130,8 +130,8 @@
 | 
			
		||||
  <div class="row">
 | 
			
		||||
    <div class="body col-md-12 content" role="main">
 | 
			
		||||
      
 | 
			
		||||
  <section id="authentication">
 | 
			
		||||
<h1>Authentication<a class="headerlink" href="#authentication" title="Permalink to this heading">¶</a></h1>
 | 
			
		||||
  <section id="authentication-and-account">
 | 
			
		||||
<h1>Authentication and account<a class="headerlink" href="#authentication-and-account" title="Permalink to this heading">¶</a></h1>
 | 
			
		||||
<dl class="http post">
 | 
			
		||||
<dt class="sig sig-object http" id="post--api-auth-register">
 | 
			
		||||
<span class="sig-name descname"><span class="pre">POST</span> </span><span class="sig-name descname"><span class="pre">/api/auth/register</span></span><a class="headerlink" href="#post--api-auth-register" title="Permalink to this definition">¶</a></dt>
 | 
			
		||||
@@ -175,6 +175,7 @@ to activate it.</p>
 | 
			
		||||
<li><p><strong>password</strong> (<em>string</em>) – password (8 characters required)</p></li>
 | 
			
		||||
<li><p><strong>lang</strong> (<em>string</em>) – user language preferences (if not provided or invalid,
 | 
			
		||||
fallback to ‘en’ (english))</p></li>
 | 
			
		||||
<li><p><strong>accepted_policy</strong> (<em>boolean</em>) – true if user accepted privacy policy</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt class="field-even">Status Codes<span class="colon">:</span></dt>
 | 
			
		||||
@@ -347,6 +348,7 @@ character “_” allowed</p></li>
 | 
			
		||||
 | 
			
		||||
<span class="p">{</span>
 | 
			
		||||
<span class="w">  </span><span class="nt">"data"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
 | 
			
		||||
<span class="w">    </span><span class="nt">"accepted_privacy_policy"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Sat, 25 Fev 2023 13:52:58 GMT"</span><span class="p">,</span>
 | 
			
		||||
<span class="w">    </span><span class="nt">"admin"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
 | 
			
		||||
<span class="w">    </span><span class="nt">"bio"</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">"birth_date"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
 | 
			
		||||
@@ -689,6 +691,7 @@ character “_” allowed</p></li>
 | 
			
		||||
<li><p><strong>language</strong> (<em>string</em>) – language preferences</p></li>
 | 
			
		||||
<li><p><strong>timezone</strong> (<em>string</em>) – user time zone</p></li>
 | 
			
		||||
<li><p><strong>weekm</strong> (<em>boolean</em>) – does week start on Monday?</p></li>
 | 
			
		||||
<li><p><strong>weekm</strong> – does week start on Monday?</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt class="field-even">Request Headers<span class="colon">:</span></dt>
 | 
			
		||||
@@ -1224,6 +1227,209 @@ for other reasons.</p></li>
 | 
			
		||||
</dl>
 | 
			
		||||
</dd></dl>
 | 
			
		||||
 | 
			
		||||
<dl class="http post">
 | 
			
		||||
<dt class="sig sig-object http" id="post--api-auth-account-privacy-policy">
 | 
			
		||||
<span class="sig-name descname"><span class="pre">POST</span> </span><span class="sig-name descname"><span class="pre">/api/auth/account/privacy-policy</span></span><a class="headerlink" href="#post--api-auth-account-privacy-policy" title="Permalink to this definition">¶</a></dt>
 | 
			
		||||
<dd><p>The authenticated user accepts the privacy policy.</p>
 | 
			
		||||
<p><strong>Example request</strong>:</p>
 | 
			
		||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/auth/account/privacy-policy</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
 | 
			
		||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
 | 
			
		||||
</pre></div>
 | 
			
		||||
</div>
 | 
			
		||||
<p><strong>Example response</strong>:</p>
 | 
			
		||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
 | 
			
		||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</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="p">}</span>
 | 
			
		||||
</pre></div>
 | 
			
		||||
</div>
 | 
			
		||||
<dl class="field-list simple">
 | 
			
		||||
<dt class="field-odd">Request JSON Object<span class="colon">:</span></dt>
 | 
			
		||||
<dd class="field-odd"><ul class="simple">
 | 
			
		||||
<li><p><strong>accepted_policy</strong> (<em>boolean</em>) – true if user accepted privacy policy</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt class="field-even">Request Headers<span class="colon">:</span></dt>
 | 
			
		||||
<dd class="field-even"><ul class="simple">
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.rfc-editor.org/rfc/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt class="field-odd">Status Codes<span class="colon">:</span></dt>
 | 
			
		||||
<dd class="field-odd"><ul class="simple">
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul>
 | 
			
		||||
<li><p>invalid payload</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</p></li>
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
 | 
			
		||||
<li><p>provide a valid auth token</p></li>
 | 
			
		||||
<li><p>signature expired, please log in again</p></li>
 | 
			
		||||
<li><p>invalid token, please log in again</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</p></li>
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – internal server error</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
</dd></dl>
 | 
			
		||||
 | 
			
		||||
<dl class="http get">
 | 
			
		||||
<dt class="sig sig-object http" id="get--api-auth-account-export">
 | 
			
		||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/auth/account/export</span></span><a class="headerlink" href="#get--api-auth-account-export" title="Permalink to this definition">¶</a></dt>
 | 
			
		||||
<dd><p>Get a data export info for authenticated user if a request exists.</p>
 | 
			
		||||
<p>It returns:</p>
 | 
			
		||||
<ul class="simple">
 | 
			
		||||
<li><p>export creation date</p></li>
 | 
			
		||||
<li><p>export status (<code class="docutils literal notranslate"><span class="pre">in_progress</span></code>, <code class="docutils literal notranslate"><span class="pre">successful</span></code> and <code class="docutils literal notranslate"><span class="pre">errored</span></code>)</p></li>
 | 
			
		||||
<li><p>file name and size (in bytes) when export is successful</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<p><strong>Example request</strong>:</p>
 | 
			
		||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/auth/account/export</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
 | 
			
		||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
 | 
			
		||||
</pre></div>
 | 
			
		||||
</div>
 | 
			
		||||
<p><strong>Example response</strong>:</p>
 | 
			
		||||
<ul class="simple">
 | 
			
		||||
<li><p>if a request exists</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
 | 
			
		||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</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="p">,</span>
 | 
			
		||||
<span class="w">  </span><span class="nt">"request"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
 | 
			
		||||
<span class="w">      </span><span class="nt">"created_at"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Wed, 01 Mar 2023 12:31:17 GMT"</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">"successful"</span><span class="p">,</span>
 | 
			
		||||
<span class="w">      </span><span class="nt">"file_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"archive_rgjsR3fHt295ywNQr5Yp.zip"</span><span class="p">,</span>
 | 
			
		||||
<span class="w">      </span><span class="nt">"file_size"</span><span class="p">:</span><span class="w"> </span><span class="mi">924</span>
 | 
			
		||||
<span class="w">  </span><span class="p">}</span>
 | 
			
		||||
<span class="p">}</span>
 | 
			
		||||
</pre></div>
 | 
			
		||||
</div>
 | 
			
		||||
<ul class="simple">
 | 
			
		||||
<li><p>if no request</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
 | 
			
		||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</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="p">,</span>
 | 
			
		||||
<span class="w">  </span><span class="nt">"request"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span>
 | 
			
		||||
<span class="p">}</span>
 | 
			
		||||
</pre></div>
 | 
			
		||||
</div>
 | 
			
		||||
<dl class="field-list simple">
 | 
			
		||||
<dt class="field-odd">Request Headers<span class="colon">:</span></dt>
 | 
			
		||||
<dd class="field-odd"><ul class="simple">
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.rfc-editor.org/rfc/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt class="field-even">Status Codes<span class="colon">:</span></dt>
 | 
			
		||||
<dd class="field-even"><ul class="simple">
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
 | 
			
		||||
<li><p>provide a valid auth token</p></li>
 | 
			
		||||
<li><p>signature expired, please log in again</p></li>
 | 
			
		||||
<li><p>invalid token, please log in again</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
</dd></dl>
 | 
			
		||||
 | 
			
		||||
<dl class="http post">
 | 
			
		||||
<dt class="sig sig-object http" id="post--api-auth-account-export-request">
 | 
			
		||||
<span class="sig-name descname"><span class="pre">POST</span> </span><span class="sig-name descname"><span class="pre">/api/auth/account/export/request</span></span><a class="headerlink" href="#post--api-auth-account-export-request" title="Permalink to this definition">¶</a></dt>
 | 
			
		||||
<dd><p>Request a data export for authenticated user.</p>
 | 
			
		||||
<p><strong>Example request</strong>:</p>
 | 
			
		||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/auth/account/export/request</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
 | 
			
		||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
 | 
			
		||||
</pre></div>
 | 
			
		||||
</div>
 | 
			
		||||
<p><strong>Example response</strong>:</p>
 | 
			
		||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
 | 
			
		||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</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="p">,</span>
 | 
			
		||||
<span class="w">  </span><span class="nt">"request"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
 | 
			
		||||
<span class="w">      </span><span class="nt">"created_at"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Wed, 01 Mar 2023 12:31:17 GMT"</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">"in_progress"</span><span class="p">,</span>
 | 
			
		||||
<span class="w">      </span><span class="nt">"file_name"</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">"file_size"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span>
 | 
			
		||||
<span class="w">  </span><span class="p">}</span>
 | 
			
		||||
<span class="p">}</span>
 | 
			
		||||
</pre></div>
 | 
			
		||||
</div>
 | 
			
		||||
<dl class="field-list simple">
 | 
			
		||||
<dt class="field-odd">Request Headers<span class="colon">:</span></dt>
 | 
			
		||||
<dd class="field-odd"><ul class="simple">
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.rfc-editor.org/rfc/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt class="field-even">Status Codes<span class="colon">:</span></dt>
 | 
			
		||||
<dd class="field-even"><ul class="simple">
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a></span> – <ul>
 | 
			
		||||
<li><p>ongoing request exists</p></li>
 | 
			
		||||
<li><p>completed request already exists</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</p></li>
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
 | 
			
		||||
<li><p>provide a valid auth token</p></li>
 | 
			
		||||
<li><p>signature expired, please log in again</p></li>
 | 
			
		||||
<li><p>invalid token, please log in again</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</p></li>
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a></span> – internal server error</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
</dd></dl>
 | 
			
		||||
 | 
			
		||||
<dl class="http get">
 | 
			
		||||
<dt class="sig sig-object http" id="get--api-auth-account-export-(string-file_name)">
 | 
			
		||||
<span class="sig-name descname"><span class="pre">GET</span> </span><span class="sig-name descname"><span class="pre">/api/auth/account/export/</span></span><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">file_name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-auth-account-export-(string-file_name)" title="Permalink to this definition">¶</a></dt>
 | 
			
		||||
<dd><p>Download a data export archive</p>
 | 
			
		||||
<p><strong>Example request</strong>:</p>
 | 
			
		||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/auth/account/export/download/archive_rgjsR3fHr5Yp.zip</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
 | 
			
		||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
 | 
			
		||||
</pre></div>
 | 
			
		||||
</div>
 | 
			
		||||
<p><strong>Example response</strong>:</p>
 | 
			
		||||
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
 | 
			
		||||
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/x-gzip</span>
 | 
			
		||||
</pre></div>
 | 
			
		||||
</div>
 | 
			
		||||
<dl class="field-list simple">
 | 
			
		||||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
 | 
			
		||||
<dd class="field-odd"><ul class="simple">
 | 
			
		||||
<li><p><strong>file_name</strong> (<em>string</em>) – filename</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt class="field-even">Request Headers<span class="colon">:</span></dt>
 | 
			
		||||
<dd class="field-even"><ul class="simple">
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.rfc-editor.org/rfc/rfc7235#section-4.2">Authorization</a></span> – OAuth 2.0 Bearer Token</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt class="field-odd">Status Codes<span class="colon">:</span></dt>
 | 
			
		||||
<dd class="field-odd"><ul class="simple">
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a></span> – success</p></li>
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a></span> – <ul>
 | 
			
		||||
<li><p>provide a valid auth token</p></li>
 | 
			
		||||
<li><p>signature expired, please log in again</p></li>
 | 
			
		||||
<li><p>invalid token, please log in again</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</p></li>
 | 
			
		||||
<li><p><span><a class="reference external" href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a></span> – file not found</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
</dd></dl>
 | 
			
		||||
 | 
			
		||||
</section>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1239,7 +1445,7 @@ for other reasons.</p></li>
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>Configuration — FitTrackee 0.7.12
 | 
			
		||||
    <title>Configuration — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
    <link rel="index" title="Index" href="../genindex.html" />
 | 
			
		||||
    <link rel="search" title="Search" href="../search.html" />
 | 
			
		||||
    <link rel="next" title="OAuth2" href="oauth2.html" />
 | 
			
		||||
    <link rel="prev" title="Authentication" href="auth.html" />
 | 
			
		||||
    <link rel="prev" title="Authentication and account" href="auth.html" />
 | 
			
		||||
<meta charset='utf-8'>
 | 
			
		||||
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
 | 
			
		||||
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="../index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -92,7 +92,7 @@
 | 
			
		||||
              
 | 
			
		||||
                
 | 
			
		||||
  <li>
 | 
			
		||||
    <a href="auth.html" title="Previous Chapter: Authentication"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">« Authentication</span>
 | 
			
		||||
    <a href="auth.html" title="Previous Chapter: Authentication and account"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">« Authenticatio...</span>
 | 
			
		||||
    </a>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li>
 | 
			
		||||
@@ -147,6 +147,7 @@
 | 
			
		||||
 | 
			
		||||
<span class="p">{</span>
 | 
			
		||||
<span class="w">  </span><span class="nt">"data"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
 | 
			
		||||
<span class="w">    </span><span class="nt">"about"</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">"admin_contact"</span><span class="p">:</span><span class="w"> </span><span class="s2">"admin@example.com"</span><span class="p">,</span>
 | 
			
		||||
<span class="w">    </span><span class="nt">"gpx_limit_import"</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span>
 | 
			
		||||
<span class="w">    </span><span class="nt">"is_email_sending_enabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
 | 
			
		||||
@@ -155,7 +156,9 @@
 | 
			
		||||
<span class="w">    </span><span class="nt">"max_users"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
 | 
			
		||||
<span class="w">    </span><span class="nt">"max_zip_file_size"</span><span class="p">:</span><span class="w"> </span><span class="mi">10485760</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">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.7.12"</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">"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">"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="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"success"</span>
 | 
			
		||||
@@ -189,6 +192,7 @@
 | 
			
		||||
 | 
			
		||||
<span class="p">{</span>
 | 
			
		||||
<span class="w">  </span><span class="nt">"data"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
 | 
			
		||||
<span class="w">    </span><span class="nt">"about"</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">"admin_contact"</span><span class="p">:</span><span class="w"> </span><span class="s2">"admin@example.com"</span><span class="p">,</span>
 | 
			
		||||
<span class="w">    </span><span class="nt">"gpx_limit_import"</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span>
 | 
			
		||||
<span class="w">    </span><span class="nt">"is_email_sending_enabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
 | 
			
		||||
@@ -197,7 +201,9 @@
 | 
			
		||||
<span class="w">    </span><span class="nt">"max_users"</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span>
 | 
			
		||||
<span class="w">    </span><span class="nt">"max_zip_file_size"</span><span class="p">:</span><span class="w"> </span><span class="mi">10485760</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">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.7.12"</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">"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">"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="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"success"</span>
 | 
			
		||||
@@ -207,12 +213,14 @@
 | 
			
		||||
<dl class="field-list simple">
 | 
			
		||||
<dt class="field-odd">Request JSON Object<span class="colon">:</span></dt>
 | 
			
		||||
<dd class="field-odd"><ul class="simple">
 | 
			
		||||
<li><p><strong>about</strong> (<em>string</em>) – instance information</p></li>
 | 
			
		||||
<li><p><strong>admin_contact</strong> (<em>string</em>) – email to contact the administrator</p></li>
 | 
			
		||||
<li><p><strong>gpx_limit_import</strong> (<em>integer</em>) – max number of files in zip archive</p></li>
 | 
			
		||||
<li><p><strong>is_registration_enabled</strong> (<em>boolean</em>) – is registration enabled?</p></li>
 | 
			
		||||
<li><p><strong>max_single_file_size</strong> (<em>integer</em>) – max size of a single file</p></li>
 | 
			
		||||
<li><p><strong>max_users</strong> (<em>integer</em>) – max users allowed to register on instance</p></li>
 | 
			
		||||
<li><p><strong>max_zip_file_size</strong> (<em>integer</em>) – max size of a zip archive</p></li>
 | 
			
		||||
<li><p><strong>privacy_policy</strong> (<em>string</em>) – instance privacy policy</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt class="field-even">Request Headers<span class="colon">:</span></dt>
 | 
			
		||||
@@ -281,7 +289,7 @@
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>API documentation — FitTrackee 0.7.12
 | 
			
		||||
    <title>API documentation — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -19,7 +19,7 @@
 | 
			
		||||
    <script src="../_static/sphinx_highlight.js"></script>
 | 
			
		||||
    <link rel="index" title="Index" href="../genindex.html" />
 | 
			
		||||
    <link rel="search" title="Search" href="../search.html" />
 | 
			
		||||
    <link rel="next" title="Authentication" href="auth.html" />
 | 
			
		||||
    <link rel="next" title="Authentication and account" href="auth.html" />
 | 
			
		||||
    <link rel="prev" title="Command line interface" href="../cli.html" />
 | 
			
		||||
<meta charset='utf-8'>
 | 
			
		||||
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="../index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -96,7 +96,7 @@
 | 
			
		||||
    </a>
 | 
			
		||||
  </li>
 | 
			
		||||
  <li>
 | 
			
		||||
    <a href="auth.html" title="Next Chapter: Authentication"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">Authentication »</span>
 | 
			
		||||
    <a href="auth.html" title="Next Chapter: Authentication and account"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">Authenticatio... »</span>
 | 
			
		||||
    </a>
 | 
			
		||||
  </li>
 | 
			
		||||
              
 | 
			
		||||
@@ -135,7 +135,7 @@
 | 
			
		||||
<div class="toctree-wrapper compound">
 | 
			
		||||
<p class="caption" role="heading"><span class="caption-text">Endpoints:</span></p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li class="toctree-l1"><a class="reference internal" href="auth.html">Authentication</a></li>
 | 
			
		||||
<li class="toctree-l1"><a class="reference internal" href="auth.html">Authentication and account</a></li>
 | 
			
		||||
<li class="toctree-l1"><a class="reference internal" href="configuration.html">Configuration</a></li>
 | 
			
		||||
<li class="toctree-l1"><a class="reference internal" href="oauth2.html">OAuth2</a></li>
 | 
			
		||||
<li class="toctree-l1"><a class="reference internal" href="records.html">Records</a></li>
 | 
			
		||||
@@ -160,7 +160,7 @@
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>OAuth2 — FitTrackee 0.7.12
 | 
			
		||||
    <title>OAuth2 — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="../index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -694,7 +694,7 @@ are supported by FitTrackee)</p></li>
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>Records — FitTrackee 0.7.12
 | 
			
		||||
    <title>Records — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="../index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -262,7 +262,7 @@
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>Sports — FitTrackee 0.7.12
 | 
			
		||||
    <title>Sports — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="../index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -492,7 +492,7 @@
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>Statistics — FitTrackee 0.7.12
 | 
			
		||||
    <title>Statistics — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="../index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -419,7 +419,7 @@
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>Users — FitTrackee 0.7.12
 | 
			
		||||
    <title>Users — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="../index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -663,7 +663,7 @@ one admin.</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>.
 | 
			
		||||
      Last updated on Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>Workouts — FitTrackee 0.7.12
 | 
			
		||||
    <title>Workouts — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="../index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -1187,7 +1187,7 @@ must be provided with ascent)</p></li>
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>Third-party applications — FitTrackee 0.7.12
 | 
			
		||||
    <title>Third-party applications — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -259,7 +259,7 @@ It is recommended to use PKCE to provide a better security.</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>.
 | 
			
		||||
      Last updated on Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>Command line interface — FitTrackee 0.7.12
 | 
			
		||||
    <title>Command line interface — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -84,8 +84,8 @@
 | 
			
		||||
      aria-labelledby="dLabelLocalToc"><ul>
 | 
			
		||||
<li><a class="reference internal" href="#">Command line interface</a><ul>
 | 
			
		||||
<li><a class="reference internal" href="#database">Database</a><ul>
 | 
			
		||||
<li><a class="reference internal" href="#ftcli-db-upgrade"><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">db</span> <span class="pre">upgrade</span></code></a></li>
 | 
			
		||||
<li><a class="reference internal" href="#ftcli-db-drop"><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">db</span> <span class="pre">drop</span></code></a></li>
 | 
			
		||||
<li><a class="reference internal" href="#ftcli-db-upgrade"><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">db</span> <span class="pre">upgrade</span></code></a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</li>
 | 
			
		||||
<li><a class="reference internal" href="#oauth2">OAuth2</a><ul>
 | 
			
		||||
@@ -93,7 +93,9 @@
 | 
			
		||||
</ul>
 | 
			
		||||
</li>
 | 
			
		||||
<li><a class="reference internal" href="#users">Users</a><ul>
 | 
			
		||||
<li><a class="reference internal" href="#ftcli-users-clean-archives"><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">users</span> <span class="pre">clean_archives</span></code></a></li>
 | 
			
		||||
<li><a class="reference internal" href="#ftcli-users-clean-tokens"><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">users</span> <span class="pre">clean_tokens</span></code></a></li>
 | 
			
		||||
<li><a class="reference internal" href="#ftcli-users-export-archives"><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">users</span> <span class="pre">export_archives</span></code></a></li>
 | 
			
		||||
<li><a class="reference internal" href="#ftcli-users-update"><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">users</span> <span class="pre">update</span></code></a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</li>
 | 
			
		||||
@@ -174,13 +176,6 @@ Commands:
 | 
			
		||||
</div>
 | 
			
		||||
<section id="database">
 | 
			
		||||
<h2>Database<a class="headerlink" href="#database" title="Permalink to this heading">¶</a></h2>
 | 
			
		||||
<section id="ftcli-db-upgrade">
 | 
			
		||||
<h3><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">db</span> <span class="pre">upgrade</span></code><a class="headerlink" href="#ftcli-db-upgrade" title="Permalink to this heading">¶</a></h3>
 | 
			
		||||
<div class="versionadded">
 | 
			
		||||
<p><span class="versionmodified added">New in version 0.6.5.</span></p>
 | 
			
		||||
</div>
 | 
			
		||||
<p>Apply migrations.</p>
 | 
			
		||||
</section>
 | 
			
		||||
<section id="ftcli-db-drop">
 | 
			
		||||
<h3><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">db</span> <span class="pre">drop</span></code><a class="headerlink" href="#ftcli-db-drop" title="Permalink to this heading">¶</a></h3>
 | 
			
		||||
<div class="versionadded">
 | 
			
		||||
@@ -188,6 +183,13 @@ Commands:
 | 
			
		||||
</div>
 | 
			
		||||
<p>Empty database and delete uploaded files, only on development environments.</p>
 | 
			
		||||
</section>
 | 
			
		||||
<section id="ftcli-db-upgrade">
 | 
			
		||||
<h3><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">db</span> <span class="pre">upgrade</span></code><a class="headerlink" href="#ftcli-db-upgrade" title="Permalink to this heading">¶</a></h3>
 | 
			
		||||
<div class="versionadded">
 | 
			
		||||
<p><span class="versionmodified added">New in version 0.6.5.</span></p>
 | 
			
		||||
</div>
 | 
			
		||||
<p>Apply migrations.</p>
 | 
			
		||||
</section>
 | 
			
		||||
</section>
 | 
			
		||||
<section id="oauth2">
 | 
			
		||||
<h2>OAuth2<a class="headerlink" href="#oauth2" title="Permalink to this heading">¶</a></h2>
 | 
			
		||||
@@ -217,6 +219,29 @@ Commands:
 | 
			
		||||
</section>
 | 
			
		||||
<section id="users">
 | 
			
		||||
<h2>Users<a class="headerlink" href="#users" title="Permalink to this heading">¶</a></h2>
 | 
			
		||||
<section id="ftcli-users-clean-archives">
 | 
			
		||||
<h3><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">users</span> <span class="pre">clean_archives</span></code><a class="headerlink" href="#ftcli-users-clean-archives" title="Permalink to this heading">¶</a></h3>
 | 
			
		||||
<div class="versionadded">
 | 
			
		||||
<p><span class="versionmodified added">New in version 0.7.13.</span></p>
 | 
			
		||||
</div>
 | 
			
		||||
<p>Delete export requests and related archives created more than provided number of days.</p>
 | 
			
		||||
<table class="table-bordered docutils align-default">
 | 
			
		||||
<colgroup>
 | 
			
		||||
<col style="width: 33.3%" />
 | 
			
		||||
<col style="width: 66.7%" />
 | 
			
		||||
</colgroup>
 | 
			
		||||
<thead>
 | 
			
		||||
<tr class="row-odd"><th class="head"><p>Options</p></th>
 | 
			
		||||
<th class="head"><p>Description</p></th>
 | 
			
		||||
</tr>
 | 
			
		||||
</thead>
 | 
			
		||||
<tbody>
 | 
			
		||||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">--days</span></code></p></td>
 | 
			
		||||
<td><p>Number of days.</p></td>
 | 
			
		||||
</tr>
 | 
			
		||||
</tbody>
 | 
			
		||||
</table>
 | 
			
		||||
</section>
 | 
			
		||||
<section id="ftcli-users-clean-tokens">
 | 
			
		||||
<h3><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">users</span> <span class="pre">clean_tokens</span></code><a class="headerlink" href="#ftcli-users-clean-tokens" title="Permalink to this heading">¶</a></h3>
 | 
			
		||||
<div class="versionadded">
 | 
			
		||||
@@ -240,6 +265,30 @@ Commands:
 | 
			
		||||
</tbody>
 | 
			
		||||
</table>
 | 
			
		||||
</section>
 | 
			
		||||
<section id="ftcli-users-export-archives">
 | 
			
		||||
<h3><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">users</span> <span class="pre">export_archives</span></code><a class="headerlink" href="#ftcli-users-export-archives" title="Permalink to this heading">¶</a></h3>
 | 
			
		||||
<div class="versionadded">
 | 
			
		||||
<p><span class="versionmodified added">New in version 0.7.13.</span></p>
 | 
			
		||||
</div>
 | 
			
		||||
<p>Process incomplete user export requests.
 | 
			
		||||
Can be used if redis is not set (no dramatiq workers running).</p>
 | 
			
		||||
<table class="table-bordered docutils align-default">
 | 
			
		||||
<colgroup>
 | 
			
		||||
<col style="width: 33.3%" />
 | 
			
		||||
<col style="width: 66.7%" />
 | 
			
		||||
</colgroup>
 | 
			
		||||
<thead>
 | 
			
		||||
<tr class="row-odd"><th class="head"><p>Options</p></th>
 | 
			
		||||
<th class="head"><p>Description</p></th>
 | 
			
		||||
</tr>
 | 
			
		||||
</thead>
 | 
			
		||||
<tbody>
 | 
			
		||||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">--max</span></code></p></td>
 | 
			
		||||
<td><p>Maximum number of export requests to process.</p></td>
 | 
			
		||||
</tr>
 | 
			
		||||
</tbody>
 | 
			
		||||
</table>
 | 
			
		||||
</section>
 | 
			
		||||
<section id="ftcli-users-update">
 | 
			
		||||
<h3><code class="docutils literal notranslate"><span class="pre">ftcli</span> <span class="pre">users</span> <span class="pre">update</span></code><a class="headerlink" href="#ftcli-users-update" title="Permalink to this heading">¶</a></h3>
 | 
			
		||||
<div class="versionadded">
 | 
			
		||||
@@ -288,7 +337,7 @@ Commands:
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>Features — FitTrackee 0.7.12
 | 
			
		||||
    <title>Features — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -85,7 +85,12 @@
 | 
			
		||||
<li><a class="reference internal" href="#">Features</a><ul>
 | 
			
		||||
<li><a class="reference internal" href="#workouts">Workouts</a></li>
 | 
			
		||||
<li><a class="reference internal" href="#account-preferences">Account & preferences</a></li>
 | 
			
		||||
<li><a class="reference internal" href="#administration">Administration</a></li>
 | 
			
		||||
<li><a class="reference internal" href="#administration">Administration</a><ul>
 | 
			
		||||
<li><a class="reference internal" href="#application">Application</a></li>
 | 
			
		||||
<li><a class="reference internal" href="#users">Users</a></li>
 | 
			
		||||
<li><a class="reference internal" href="#sports">Sports</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</li>
 | 
			
		||||
<li><a class="reference internal" href="#translations">Translations</a></li>
 | 
			
		||||
<li><a class="reference internal" href="#screenshots">Screenshots</a><ul>
 | 
			
		||||
<li><a class="reference internal" href="#dashboard">Dashboard</a></li>
 | 
			
		||||
@@ -253,9 +258,10 @@
 | 
			
		||||
<h2>Account & preferences<a class="headerlink" href="#account-preferences" title="Permalink to this heading">¶</a></h2>
 | 
			
		||||
<ul class="simple">
 | 
			
		||||
<li><p>A user can create, update and deleted his account.</p></li>
 | 
			
		||||
<li><p>The user must agree to the privacy policy to register. If a more recent policy is available, a message is displayed on the dashboard to review the new version (<em>new in 0.7.13</em>).</p></li>
 | 
			
		||||
<li><p>On registration, the user account is created with selected language in dropdown as user preference (<em>new in 0.6.9</em>).</p></li>
 | 
			
		||||
<li><p>After registration, the user account is inactive and an email with confirmation instructions is sent to activate it.
 | 
			
		||||
A user with an inactive account cannot log in. (<em>new in 0.6.0</em>)</p></li>
 | 
			
		||||
A user with an inactive account cannot log in. (<em>new in 0.6.0</em>).</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<div class="admonition note">
 | 
			
		||||
<p class="admonition-title">Note</p>
 | 
			
		||||
@@ -286,18 +292,28 @@ A user with an inactive account cannot log in. (<em>new in 0.6.0</em>)</p></li>
 | 
			
		||||
<div class="line">A workout with a disabled sport will still be displayed in the application.</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
<ul class="simple">
 | 
			
		||||
<ul>
 | 
			
		||||
<li><p>A user can create <a class="reference external" href="apps.html">clients</a> for third-party applications (<em>new in 0.7.0</em>).</p></li>
 | 
			
		||||
<li><div class="line-block">
 | 
			
		||||
<div class="line">A user can request a data export (<em>new in 0.7.13</em>).</div>
 | 
			
		||||
<div class="line">It generates a zip archive containing 2 <code class="docutils literal notranslate"><span class="pre">json</span></code> files (user info and workouts data) and all uploaded gpx files.</div>
 | 
			
		||||
</div>
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
<div class="admonition note">
 | 
			
		||||
<p class="admonition-title">Note</p>
 | 
			
		||||
<p>For now, it’s not possible to import these files into another <strong>FitTrackee</strong> instance.</p>
 | 
			
		||||
</div>
 | 
			
		||||
</section>
 | 
			
		||||
<section id="administration">
 | 
			
		||||
<h2>Administration<a class="headerlink" href="#administration" title="Permalink to this heading">¶</a></h2>
 | 
			
		||||
<p>(<em>new in 0.3.0</em>)</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><p><strong>Application</strong></p>
 | 
			
		||||
<section id="application">
 | 
			
		||||
<h3>Application<a class="headerlink" href="#application" title="Permalink to this heading">¶</a></h3>
 | 
			
		||||
<p><strong>Configuration</strong></p>
 | 
			
		||||
<p>The following parameters can be set:</p>
 | 
			
		||||
<ul class="simple">
 | 
			
		||||
<li><p>active users limit. If 0, registration is enabled (no limit defined)</p></li>
 | 
			
		||||
<li><p>active users limit. If 0, registration is enabled (no limit defined).</p></li>
 | 
			
		||||
<li><p>maximum size of gpx file (individually uploaded or in a zip archive) (<em>changed in 0.7.4</em>)</p></li>
 | 
			
		||||
<li><p>maximum size of zip archive</p></li>
 | 
			
		||||
<li><p>maximum number of files in the zip archive (<em>changed in 0.7.4</em>)</p></li>
 | 
			
		||||
@@ -311,29 +327,44 @@ A user with an inactive account cannot log in. (<em>new in 0.6.0</em>)</p></li>
 | 
			
		||||
<p class="admonition-title">Note</p>
 | 
			
		||||
<p>If email sending is disabled, a warning is displayed.</p>
 | 
			
		||||
</div>
 | 
			
		||||
</li>
 | 
			
		||||
<li><p><strong>Users</strong></p>
 | 
			
		||||
<p><strong>About</strong></p>
 | 
			
		||||
<p>(<em>new in 0.7.13</em>)</p>
 | 
			
		||||
<div class="line-block">
 | 
			
		||||
<div class="line">It is possible displayed additional information that may be useful to users in <strong>About</strong> page.</div>
 | 
			
		||||
<div class="line">Markdown syntax can be used.</div>
 | 
			
		||||
</div>
 | 
			
		||||
<p><strong>Privacy policy</strong></p>
 | 
			
		||||
<p>(<em>new in 0.7.13</em>)</p>
 | 
			
		||||
<div class="line-block">
 | 
			
		||||
<div class="line">A default privacy policy is available (originally adapted from the <a class="reference external" href="https://github.com/discourse/discourse">Discourse</a> privacy policy).</div>
 | 
			
		||||
<div class="line">A custom privacy policy can set if needed (Markdown syntax can be used). A policy update will display a message on users dashboard to review it.</div>
 | 
			
		||||
</div>
 | 
			
		||||
<div class="admonition note">
 | 
			
		||||
<p class="admonition-title">Note</p>
 | 
			
		||||
<p>Only the default privacy policy is translated (if the translation is available).</p>
 | 
			
		||||
</div>
 | 
			
		||||
</section>
 | 
			
		||||
<section id="users">
 | 
			
		||||
<h3>Users<a class="headerlink" href="#users" title="Permalink to this heading">¶</a></h3>
 | 
			
		||||
<ul class="simple">
 | 
			
		||||
<li><p>display and filter users list</p></li>
 | 
			
		||||
<li><dl class="simple">
 | 
			
		||||
<dt>edit a user to:</dt><dd><ul>
 | 
			
		||||
<li><p>edit a user to:</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><p>add/remove administration rights</p></li>
 | 
			
		||||
<li><p>activate his account (<em>new in 0.6.0</em>)</p></li>
 | 
			
		||||
<li><p>update his email (in case his account is locked) (<em>new in 0.6.0</em>)</p></li>
 | 
			
		||||
<li><p>reset his password (in case his account is locked) (<em>new in 0.6.0</em>). If email sending is disabled, it is only possible via CLI.</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
</li>
 | 
			
		||||
<li><p>delete a user</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</li>
 | 
			
		||||
<li><p><strong>Sports</strong></p>
 | 
			
		||||
</section>
 | 
			
		||||
<section id="sports">
 | 
			
		||||
<h3>Sports<a class="headerlink" href="#sports" title="Permalink to this heading">¶</a></h3>
 | 
			
		||||
<ul class="simple">
 | 
			
		||||
<li><p>enable or disable a sport (a sport can be disabled even if workout with this sport exists)</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
</section>
 | 
			
		||||
</section>
 | 
			
		||||
<section id="translations">
 | 
			
		||||
<h2>Translations<a class="headerlink" href="#translations" title="Permalink to this heading">¶</a></h2>
 | 
			
		||||
@@ -400,7 +431,7 @@ A user with an inactive account cannot log in. (<em>new in 0.6.0</em>)</p></li>
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 | 
			
		||||
    <title>Index — FitTrackee 0.7.12
 | 
			
		||||
    <title>Index — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -40,7 +40,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -190,7 +190,7 @@
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 | 
			
		||||
    <title>HTTP Routing Table — FitTrackee 0.7.12
 | 
			
		||||
    <title>HTTP Routing Table — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -47,7 +47,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -130,6 +130,16 @@
 | 
			
		||||
     <tr class="pcap"><td></td><td> </td><td></td></tr>
 | 
			
		||||
     <tr class="cap" id="cap-/api"><td></td><td>
 | 
			
		||||
       <strong>/api</strong></td><td></td></tr>
 | 
			
		||||
     <tr>
 | 
			
		||||
       <td></td>
 | 
			
		||||
       <td>
 | 
			
		||||
       <a href="api/auth.html#get--api-auth-account-export"><code class="xref">GET /api/auth/account/export</code></a></td><td>
 | 
			
		||||
       <em></em></td></tr>
 | 
			
		||||
     <tr>
 | 
			
		||||
       <td></td>
 | 
			
		||||
       <td>
 | 
			
		||||
       <a href="api/auth.html#get--api-auth-account-export-(string-file_name)"><code class="xref">GET /api/auth/account/export/(string:file_name)</code></a></td><td>
 | 
			
		||||
       <em></em></td></tr>
 | 
			
		||||
     <tr>
 | 
			
		||||
       <td></td>
 | 
			
		||||
       <td>
 | 
			
		||||
@@ -255,6 +265,16 @@
 | 
			
		||||
       <td>
 | 
			
		||||
       <a href="api/auth.html#post--api-auth-account-confirm"><code class="xref">POST /api/auth/account/confirm</code></a></td><td>
 | 
			
		||||
       <em></em></td></tr>
 | 
			
		||||
     <tr>
 | 
			
		||||
       <td></td>
 | 
			
		||||
       <td>
 | 
			
		||||
       <a href="api/auth.html#post--api-auth-account-export-request"><code class="xref">POST /api/auth/account/export/request</code></a></td><td>
 | 
			
		||||
       <em></em></td></tr>
 | 
			
		||||
     <tr>
 | 
			
		||||
       <td></td>
 | 
			
		||||
       <td>
 | 
			
		||||
       <a href="api/auth.html#post--api-auth-account-privacy-policy"><code class="xref">POST /api/auth/account/privacy-policy</code></a></td><td>
 | 
			
		||||
       <em></em></td></tr>
 | 
			
		||||
     <tr>
 | 
			
		||||
       <td></td>
 | 
			
		||||
       <td>
 | 
			
		||||
@@ -410,7 +430,7 @@
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>FitTrackee — FitTrackee 0.7.12
 | 
			
		||||
    <title>FitTrackee — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -42,7 +42,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="#">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -180,7 +180,7 @@ Map</a>.</div>
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>Installation — FitTrackee 0.7.12
 | 
			
		||||
    <title>Installation — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -208,7 +208,7 @@
 | 
			
		||||
</li>
 | 
			
		||||
<li><dl class="simple">
 | 
			
		||||
<dt>optional</dt><dd><ul>
 | 
			
		||||
<li><p>Redis for task queue (if email sending is enabled) and API rate limits</p></li>
 | 
			
		||||
<li><p>Redis for task queue (if email sending is enabled and for data export requests) and API rate limits</p></li>
 | 
			
		||||
<li><p>SMTP provider (if email sending is enabled)</p></li>
 | 
			
		||||
<li><p>API key from a <a class="reference external" href="installation.html#weather-data">weather data provider</a></p></li>
 | 
			
		||||
<li><p><a class="reference external" href="https://poetry.eustace.io">Poetry</a> (for installation from sources only)</p></li>
 | 
			
		||||
@@ -222,6 +222,12 @@
 | 
			
		||||
<div class="admonition note">
 | 
			
		||||
<p class="admonition-title">Note</p>
 | 
			
		||||
<div class="line-block">
 | 
			
		||||
<div class="line">If registration is enabled, it is recommended to set Redis and a SMTP provider for email sending and data export requests.</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
<div class="admonition note">
 | 
			
		||||
<p class="admonition-title">Note</p>
 | 
			
		||||
<div class="line-block">
 | 
			
		||||
<div class="line">The following steps describe an installation on Linux systems (tested
 | 
			
		||||
on Debian and Arch).</div>
 | 
			
		||||
<div class="line">On other OS, some issues can be encountered and adaptations may be
 | 
			
		||||
@@ -574,14 +580,13 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p
 | 
			
		||||
<li><p>password reset request</p></li>
 | 
			
		||||
<li><p>email change (to old and new email adresses)</p></li>
 | 
			
		||||
<li><p>password change</p></li>
 | 
			
		||||
<li><p>notification when a data export archive is ready to download (<em>new in 0.7.13</em>)</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<div class="versionchanged">
 | 
			
		||||
<p><span class="versionmodified changed">Changed in version 0.6.5.</span></p>
 | 
			
		||||
</div>
 | 
			
		||||
<div class="line-block">
 | 
			
		||||
<div class="line">For single-user instance, it is possible to disable email sending with an empty <code class="docutils literal notranslate"><span class="pre">EMAIL_URL</span></code> (in this case, no need to start dramatiq workers).</div>
 | 
			
		||||
<div class="line">A <a class="reference external" href="cli.html#ftcli-users-update">CLI</a> is available to activate account and modify email and password.</div>
 | 
			
		||||
</div>
 | 
			
		||||
<p>For single-user instance, it is possible to disable email sending with an empty <code class="docutils literal notranslate"><span class="pre">EMAIL_URL</span></code> (in this case, no need to start dramatiq workers).</p>
 | 
			
		||||
<p>A <a class="reference external" href="cli.html#ftcli-users-update">CLI</a> is available to activate account, modify email and password and handle data export requests.</p>
 | 
			
		||||
</section>
 | 
			
		||||
<section id="map-tile-server">
 | 
			
		||||
<h3>Map tile server<a class="headerlink" href="#map-tile-server" title="Permalink to this heading">¶</a></h3>
 | 
			
		||||
@@ -598,7 +603,7 @@ The tile server can be changed by updating <code class="docutils literal notrans
 | 
			
		||||
<div class="admonition note">
 | 
			
		||||
<p class="admonition-title">Note</p>
 | 
			
		||||
<div class="line-block">
 | 
			
		||||
<div class="line">Check the terms of service of tile provider for map attribution</div>
 | 
			
		||||
<div class="line">Check the terms of service of tile provider for map attribution.</div>
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
<div class="versionchanged">
 | 
			
		||||
@@ -821,11 +826,11 @@ $<span class="w"> </span>make<span class="w"> </span>install-db
 | 
			
		||||
</div>
 | 
			
		||||
</div>
 | 
			
		||||
<ul class="simple">
 | 
			
		||||
<li><p>Download the last release (for now, it is the release v0.7.12):</p></li>
 | 
			
		||||
<li><p>Download the last release (for now, it is the release v0.7.13):</p></li>
 | 
			
		||||
</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.12.tar.gz
 | 
			
		||||
$<span class="w"> </span>tar<span class="w"> </span>-xzf<span class="w"> </span>v0.7.12.tar.gz
 | 
			
		||||
$<span class="w"> </span>mv<span class="w"> </span>FitTrackee-0.7.12<span class="w"> </span>FitTrackee
 | 
			
		||||
<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
 | 
			
		||||
$<span class="w"> </span>tar<span class="w"> </span>-xzf<span class="w"> </span>v0.7.13.tar.gz
 | 
			
		||||
$<span class="w"> </span>mv<span class="w"> </span>FitTrackee-0.7.13<span class="w"> </span>FitTrackee
 | 
			
		||||
$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>FitTrackee
 | 
			
		||||
</pre></div>
 | 
			
		||||
</div>
 | 
			
		||||
@@ -945,11 +950,11 @@ $<span class="w"> </span><span class="nb">source</span><span class="w"> </span>.
 | 
			
		||||
<ul class="simple">
 | 
			
		||||
<li><p>Stop the application</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.12) and overwrite existing files:</p></li>
 | 
			
		||||
<li><p>Download the last release (for now, it is the release v0.7.13) and overwrite existing files:</p></li>
 | 
			
		||||
</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.12.tar.gz
 | 
			
		||||
$<span class="w"> </span>tar<span class="w"> </span>-xzf<span class="w"> </span>v0.7.12.tar.gz
 | 
			
		||||
$<span class="w"> </span>cp<span class="w"> </span>-R<span class="w"> </span>FitTrackee-0.7.12/*<span class="w"> </span>FitTrackee/
 | 
			
		||||
<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
 | 
			
		||||
$<span class="w"> </span>tar<span class="w"> </span>-xzf<span class="w"> </span>v0.7.13.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><span class="nb">cd</span><span class="w"> </span>FitTrackee
 | 
			
		||||
</pre></div>
 | 
			
		||||
</div>
 | 
			
		||||
@@ -1208,7 +1213,7 @@ $<span class="w"> </span>make<span class="w"> </span>docker-test-python<span cla
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								docs/objects.inv
									
									
									
									
									
								
							
							
						
						@@ -4,7 +4,7 @@
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8" />
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 | 
			
		||||
    <title>Search — FitTrackee 0.7.12
 | 
			
		||||
    <title>Search — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -47,7 +47,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -154,7 +154,7 @@
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>Administrator — FitTrackee 0.7.12
 | 
			
		||||
    <title>Administrator — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="../index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -174,7 +174,7 @@
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>Troubleshooting — FitTrackee 0.7.12
 | 
			
		||||
    <title>Troubleshooting — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="../index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -157,7 +157,7 @@
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
    <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/" />
 | 
			
		||||
 | 
			
		||||
    <title>User — FitTrackee 0.7.12
 | 
			
		||||
    <title>User — FitTrackee 0.7.13
 | 
			
		||||
 documentation</title>
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
 | 
			
		||||
    <link rel="stylesheet" type="text/css" href="../_static/bootstrap-sphinx.css" />
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
        </button>
 | 
			
		||||
        <a class="navbar-brand" href="../index.html">
 | 
			
		||||
          FitTrackee</a>
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.12
 | 
			
		||||
        <span class="navbar-text navbar-version pull-left"><b>0.7.13
 | 
			
		||||
</b></span>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
@@ -148,7 +148,7 @@
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        © 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 Feb 20, 2023.<br/>
 | 
			
		||||
      Last updated on Mar 05, 2023.<br/>
 | 
			
		||||
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
 | 
			
		||||
    </p>
 | 
			
		||||
  </div>
 | 
			
		||||
 
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 566 KiB After Width: | Height: | Size: 568 KiB  | 
| 
		 Before Width: | Height: | Size: 386 KiB After Width: | Height: | Size: 387 KiB  | 
| 
		 Before Width: | Height: | Size: 216 KiB After Width: | Height: | Size: 218 KiB  | 
| 
		 Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB  | 
| 
		 Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 68 KiB  | 
| 
		 Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 122 KiB  | 
| 
		 Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 132 KiB  | 
| 
		 Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB  | 
@@ -1,5 +1,5 @@
 | 
			
		||||
Authentication
 | 
			
		||||
##############
 | 
			
		||||
Authentication and account
 | 
			
		||||
##########################
 | 
			
		||||
 | 
			
		||||
.. autoflask:: fittrackee:create_app()
 | 
			
		||||
   :endpoints:
 | 
			
		||||
 
 | 
			
		||||
@@ -28,13 +28,6 @@ A command line interface (CLI) is available to manage database, OAuth2 tokens an
 | 
			
		||||
Database
 | 
			
		||||
~~~~~~~~
 | 
			
		||||
 | 
			
		||||
``ftcli db upgrade``
 | 
			
		||||
""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.6.5
 | 
			
		||||
 | 
			
		||||
Apply migrations.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
``ftcli db drop``
 | 
			
		||||
"""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.6.5
 | 
			
		||||
@@ -42,6 +35,13 @@ Apply migrations.
 | 
			
		||||
Empty database and delete uploaded files, only on development environments.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
``ftcli db upgrade``
 | 
			
		||||
""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.6.5
 | 
			
		||||
 | 
			
		||||
Apply migrations.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
OAuth2
 | 
			
		||||
~~~~~~
 | 
			
		||||
 | 
			
		||||
@@ -66,6 +66,23 @@ Remove tokens expired for more than provided number of days
 | 
			
		||||
Users
 | 
			
		||||
~~~~~
 | 
			
		||||
 | 
			
		||||
``ftcli users clean_archives``
 | 
			
		||||
""""""""""""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.7.13
 | 
			
		||||
 | 
			
		||||
Delete export requests and related archives created more than provided number of days.
 | 
			
		||||
 | 
			
		||||
.. cssclass:: table-bordered
 | 
			
		||||
.. list-table::
 | 
			
		||||
   :widths: 25 50
 | 
			
		||||
   :header-rows: 1
 | 
			
		||||
 | 
			
		||||
   * - Options
 | 
			
		||||
     - Description
 | 
			
		||||
   * - ``--days``
 | 
			
		||||
     - Number of days.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
``ftcli users clean_tokens``
 | 
			
		||||
""""""""""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.7.0
 | 
			
		||||
@@ -83,6 +100,24 @@ Remove blacklisted tokens expired for more than provided number of days.
 | 
			
		||||
     - Number of days.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
``ftcli users export_archives``
 | 
			
		||||
"""""""""""""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.7.13
 | 
			
		||||
 | 
			
		||||
Process incomplete user export requests.
 | 
			
		||||
Can be used if redis is not set (no dramatiq workers running).
 | 
			
		||||
 | 
			
		||||
.. cssclass:: table-bordered
 | 
			
		||||
.. list-table::
 | 
			
		||||
   :widths: 25 50
 | 
			
		||||
   :header-rows: 1
 | 
			
		||||
 | 
			
		||||
   * - Options
 | 
			
		||||
     - Description
 | 
			
		||||
   * - ``--max``
 | 
			
		||||
     - Maximum number of export requests to process.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
``ftcli users update``
 | 
			
		||||
""""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.6.5
 | 
			
		||||
@@ -104,39 +139,3 @@ Modify a user account (admin rights, active status, email and password).
 | 
			
		||||
     - Reset user password (a new password will be displayed).
 | 
			
		||||
   * - ``--update-email EMAIL``
 | 
			
		||||
     - Update user email.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
``ftcli users clean_archives``
 | 
			
		||||
""""""""""""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.7.13
 | 
			
		||||
 | 
			
		||||
Delete export requests and related archives created more than provided number of days.
 | 
			
		||||
 | 
			
		||||
.. cssclass:: table-bordered
 | 
			
		||||
.. list-table::
 | 
			
		||||
   :widths: 25 50
 | 
			
		||||
   :header-rows: 1
 | 
			
		||||
 | 
			
		||||
   * - Options
 | 
			
		||||
     - Description
 | 
			
		||||
   * - ``--days``
 | 
			
		||||
     - Number of days.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
``ftcli users export_archives``
 | 
			
		||||
"""""""""""""""""""""""""""""""
 | 
			
		||||
.. versionadded:: 0.7.13
 | 
			
		||||
 | 
			
		||||
Process incomplete user export requests.
 | 
			
		||||
Can be used if redis is not set (no dramatiq workers running).
 | 
			
		||||
 | 
			
		||||
.. cssclass:: table-bordered
 | 
			
		||||
.. list-table::
 | 
			
		||||
   :widths: 25 50
 | 
			
		||||
   :header-rows: 1
 | 
			
		||||
 | 
			
		||||
   * - Options
 | 
			
		||||
     - Description
 | 
			
		||||
   * - ``--max``
 | 
			
		||||
     - Maximum number of export requests to process.
 | 
			
		||||
@@ -74,7 +74,7 @@ Workouts
 | 
			
		||||
Account & preferences
 | 
			
		||||
^^^^^^^^^^^^^^^^^^^^^
 | 
			
		||||
- A user can create, update and deleted his account.
 | 
			
		||||
- The user must accept the privacy policy to register. If the privacy change, a message is displayed on the dashboard to review the new version and validate it (*new in 0.7.13*).
 | 
			
		||||
- The user must agree to the privacy policy to register. If a more recent policy is available, a message is displayed on the dashboard to review the new version (*new in 0.7.13*).
 | 
			
		||||
- On registration, the user account is created with selected language in dropdown as user preference (*new in 0.6.9*).
 | 
			
		||||
- After registration, the user account is inactive and an email with confirmation instructions is sent to activate it.
 | 
			
		||||
  A user with an inactive account cannot log in. (*new in 0.6.0*).
 | 
			
		||||
@@ -99,7 +99,11 @@ Account & preferences
 | 
			
		||||
  | A workout with a disabled sport will still be displayed in the application.
 | 
			
		||||
 | 
			
		||||
- A user can create `clients <apps.html>`__ for third-party applications (*new in 0.7.0*).
 | 
			
		||||
- A user can request a data export (*new in 0.7.13*).
 | 
			
		||||
- | A user can request a data export (*new in 0.7.13*).
 | 
			
		||||
  | It generates a zip archive containing 2 ``json`` files (user info and workouts data) and all uploaded gpx files.
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
  For now, it's not possible to import these files into another **FitTrackee** instance.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Administration
 | 
			
		||||
@@ -138,10 +142,10 @@ The following parameters can be set:
 | 
			
		||||
(*new in 0.7.13*)
 | 
			
		||||
 | 
			
		||||
| A default privacy policy is available (originally adapted from the `Discourse <https://github.com/discourse/discourse>`__ privacy policy).
 | 
			
		||||
| A custom privacy policy can set if needed (Markdown syntax can be used). A policy update will display a message on users dashboard to review and validate it.
 | 
			
		||||
| A custom privacy policy can set if needed (Markdown syntax can be used). A policy update will display a message on users dashboard to review it.
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
  Only the default privacy policy is translated (if translation is available).
 | 
			
		||||
  Only the default privacy policy is translated (if the translation is available).
 | 
			
		||||
 | 
			
		||||
Users
 | 
			
		||||
"""""
 | 
			
		||||
 
 | 
			
		||||
@@ -33,15 +33,15 @@ Prerequisites
 | 
			
		||||
    - `Yarn <https://yarnpkg.com>`__ (for development only)
 | 
			
		||||
    -  Docker and Docker Compose (for development or evaluation purposes)
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
    | If registration is enabled, it is recommended to set Redis and a SMTP provider for email sending and data export requests.
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
    | The following steps describe an installation on Linux systems (tested
 | 
			
		||||
      on Debian and Arch).
 | 
			
		||||
    | On other OS, some issues can be encountered and adaptations may be
 | 
			
		||||
      necessary.
 | 
			
		||||
 | 
			
		||||
.. warning::
 | 
			
		||||
    | If registration is enabled, it is recommended to set Redis and a SMTP provider for email sending and data export requests.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Environment variables
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
@@ -276,7 +276,7 @@ Emails sent by FitTrackee are:
 | 
			
		||||
- password reset request
 | 
			
		||||
- email change (to old and new email adresses)
 | 
			
		||||
- password change
 | 
			
		||||
- when a data export archive is ready to download (*new in 0.7.13*)
 | 
			
		||||
- notification when a data export archive is ready to download (*new in 0.7.13*)
 | 
			
		||||
 | 
			
		||||
.. versionchanged:: 0.6.5
 | 
			
		||||
 | 
			
		||||
@@ -298,7 +298,7 @@ To keep using **ThunderForest Outdoors**, the configuration is:
 | 
			
		||||
- ``MAP_ATTRIBUTION=© <a href="http://www.thunderforest.com/">Thunderforest</a>, © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors``
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
    | Check the terms of service of tile provider for map attribution
 | 
			
		||||
    | Check the terms of service of tile provider for map attribution.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. versionchanged:: 0.6.10
 | 
			
		||||
@@ -507,13 +507,13 @@ Production environment
 | 
			
		||||
.. warning::
 | 
			
		||||
    | Note that FitTrackee is under heavy development, some features may be unstable.
 | 
			
		||||
 | 
			
		||||
-  Download the last release (for now, it is the release v0.7.12):
 | 
			
		||||
-  Download the last release (for now, it is the release v0.7.13):
 | 
			
		||||
 | 
			
		||||
.. code:: bash
 | 
			
		||||
 | 
			
		||||
   $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.12.tar.gz
 | 
			
		||||
   $ tar -xzf v0.7.12.tar.gz
 | 
			
		||||
   $ mv FitTrackee-0.7.12 FitTrackee
 | 
			
		||||
   $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.13.tar.gz
 | 
			
		||||
   $ tar -xzf v0.7.13.tar.gz
 | 
			
		||||
   $ mv FitTrackee-0.7.13 FitTrackee
 | 
			
		||||
   $ cd FitTrackee
 | 
			
		||||
 | 
			
		||||
-  Create **.env** from example and update it
 | 
			
		||||
@@ -633,13 +633,13 @@ Prod environment
 | 
			
		||||
 | 
			
		||||
- Change to the directory where FitTrackee directory is located
 | 
			
		||||
 | 
			
		||||
- Download the last release (for now, it is the release v0.7.12) and overwrite existing files:
 | 
			
		||||
- Download the last release (for now, it is the release v0.7.13) and overwrite existing files:
 | 
			
		||||
 | 
			
		||||
.. code:: bash
 | 
			
		||||
 | 
			
		||||
   $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.12.tar.gz
 | 
			
		||||
   $ tar -xzf v0.7.12.tar.gz
 | 
			
		||||
   $ cp -R FitTrackee-0.7.12/* FitTrackee/
 | 
			
		||||
   $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.13.tar.gz
 | 
			
		||||
   $ tar -xzf v0.7.13.tar.gz
 | 
			
		||||
   $ cp -R FitTrackee-0.7.13/* FitTrackee/
 | 
			
		||||
   $ cd FitTrackee
 | 
			
		||||
 | 
			
		||||
- Update **.env** if needed (see `Environment variables <installation.html#environment-variables>`__).
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ from werkzeug.middleware.proxy_fix import ProxyFix
 | 
			
		||||
from fittrackee.emails.email import EmailService
 | 
			
		||||
from fittrackee.request import CustomRequest
 | 
			
		||||
 | 
			
		||||
VERSION = __version__ = '0.7.12'
 | 
			
		||||
VERSION = __version__ = '0.7.13'
 | 
			
		||||
REDIS_URL = os.getenv('REDIS_URL', 'redis://')
 | 
			
		||||
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",
 | 
			
		||||
          "privacy_policy": null,
 | 
			
		||||
          "privacy_policy_date": null,
 | 
			
		||||
          "version": "0.7.12",
 | 
			
		||||
          "version": "0.7.13",
 | 
			
		||||
          "weather_provider": null
 | 
			
		||||
        },
 | 
			
		||||
        "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",
 | 
			
		||||
          "privacy_policy": null,
 | 
			
		||||
          "privacy_policy_date": null,
 | 
			
		||||
          "version": "0.7.12",
 | 
			
		||||
          "version": "0.7.13",
 | 
			
		||||
          "weather_provider": null
 | 
			
		||||
        },
 | 
			
		||||
        "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.169de3d0.js"></script><script defer="defer" src="/static/js/app.a065c1ff.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.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>
 | 
			
		||||
							
								
								
									
										2
									
								
								fittrackee/dist/service-worker.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
							
								
								
									
										2
									
								
								fittrackee/dist/service-worker.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -1,2 +1,2 @@
 | 
			
		||||
"use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[328],{6e3:function(t,e,i){i.r(e),i.d(e,{default:function(){return _}});var a=i(6252),n=i(2262),s=i(8273),c=i(5801),r=i(9917);const S=t=>((0,a.dD)("data-v-64629971"),t=t(),(0,a.Cn)(),t),l={id:"admin",class:"view"},p={key:0,class:"container"},u=S((()=>(0,a._)("div",{id:"bottom"},null,-1)));var T=(0,a.aZ)({__name:"AdminView",setup(t){const e=(0,r.o)(),i=(0,a.Fl)((()=>e.getters[c.SY.GETTERS.APP_CONFIG])),S=(0,a.Fl)((()=>e.getters[c.SY.GETTERS.APP_STATS])),T=(0,a.Fl)((()=>e.getters[c.YN.GETTERS.IS_ADMIN])),d=(0,a.Fl)((()=>e.getters[c.YN.GETTERS.USER_LOADING]));return(0,a.wF)((()=>e.dispatch(c.SY.ACTIONS.GET_APPLICATION_STATS))),(t,e)=>{const c=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",l,[(0,n.SU)(d)?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",p,[(0,n.SU)(T)?((0,a.wg)(),(0,a.j4)(c,{key:0,appConfig:(0,n.SU)(i),appStatistics:(0,n.SU)(S)},null,8,["appConfig","appStatistics"])):((0,a.wg)(),(0,a.j4)(s.Z,{key:1})),u]))])}}}),d=i(3744);const o=(0,d.Z)(T,[["__scopeId","data-v-64629971"]]);var _=o}}]);
 | 
			
		||||
//# sourceMappingURL=admin.ce9a282b.js.map
 | 
			
		||||
//# sourceMappingURL=admin.4313b7d9.js.map
 | 
			
		||||
@@ -1 +1 @@
 | 
			
		||||
{"version":3,"file":"static/js/admin.ce9a282b.js","mappings":"mOAGA,MAAMA,EAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,EAAa,CACjBC,GAAI,QACJC,MAAO,QAEHC,EAAa,CACjBC,IAAK,EACLF,MAAO,aAEHG,EAA2BT,GAAa,KAAmBU,EAAAA,EAAAA,GAAoB,MAAO,CAAEL,GAAI,UAAY,MAAO,KAUrH,OAA4BM,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,YACRC,MAAMC,GAEN,MAAMC,GAAQC,EAAAA,EAAAA,KAERC,GAAqCC,EAAAA,EAAAA,KACzC,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,cAEhBC,GAA6CH,EAAAA,EAAAA,KACjD,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,aAEhBE,GAAuCJ,EAAAA,EAAAA,KAC3C,IAAMH,EAAMI,QAAQI,EAAAA,GAAAA,QAAAA,YAEhBC,GAAoCN,EAAAA,EAAAA,KACxC,IAAMH,EAAMI,QAAQI,EAAAA,GAAAA,QAAAA,gBAKxB,OAFEE,EAAAA,EAAAA,KAAc,IAAMV,EAAMW,SAASN,EAAAA,GAAAA,QAAAA,yBAE9B,CAACO,EAAUC,KAChB,MAAMC,GAAyBC,EAAAA,EAAAA,IAAkB,eAEjD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO5B,EAAY,EACzD6B,EAAAA,EAAAA,IAAOT,IAWLU,EAAAA,EAAAA,IAAoB,IAAI,KAVvBH,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOzB,EAAY,EACnD0B,EAAAA,EAAAA,IAAOX,KACHS,EAAAA,EAAAA,OAAcI,EAAAA,EAAAA,IAAaN,EAAwB,CAClDrB,IAAK,EACLS,WAAWgB,EAAAA,EAAAA,IAAOhB,GAClBI,eAAeY,EAAAA,EAAAA,IAAOZ,IACrB,KAAM,EAAG,CAAC,YAAa,qBACzBU,EAAAA,EAAAA,OAAcI,EAAAA,EAAAA,IAAaC,EAAAA,EAAU,CAAE5B,IAAK,KACjDC,MAGN,CAEJ,I,UCvDA,MAAM4B,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O","sources":["webpack://fittrackee_client/./src/views/AdminView.vue?67de","webpack://fittrackee_client/./src/views/AdminView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64629971\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n  id: \"admin\",\n  class: \"view\"\n}\nconst _hoisted_2 = {\n  key: 0,\n  class: \"container\"\n}\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport { computed, ComputedRef, onBeforeMount } from 'vue'\n\n  import NotFound from '@/components/Common/NotFound.vue'\n  import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n  import { TAppConfig, IAppStatistics } from '@/types/application'\n  import { useStore } from '@/use/useStore'\n\n  \nexport default /*#__PURE__*/_defineComponent({\n  __name: 'AdminView',\n  setup(__props) {\n\n  const store = useStore()\n\n  const appConfig: ComputedRef<TAppConfig> = computed(\n    () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n  )\n  const appStatistics: ComputedRef<IAppStatistics> = computed(\n    () => store.getters[ROOT_STORE.GETTERS.APP_STATS]\n  )\n  const isAuthUserAmin: ComputedRef<boolean> = computed(\n    () => store.getters[AUTH_USER_STORE.GETTERS.IS_ADMIN]\n  )\n  const userLoading: ComputedRef<boolean> = computed(\n    () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n  )\n\n  onBeforeMount(() => store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_STATS))\n\nreturn (_ctx: any,_cache: any) => {\n  const _component_router_view = _resolveComponent(\"router-view\")!\n\n  return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n    (!_unref(userLoading))\n      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n          (_unref(isAuthUserAmin))\n            ? (_openBlock(), _createBlock(_component_router_view, {\n                key: 0,\n                appConfig: _unref(appConfig),\n                appStatistics: _unref(appStatistics)\n              }, null, 8, [\"appConfig\", \"appStatistics\"]))\n            : (_openBlock(), _createBlock(NotFound, { key: 1 })),\n          _hoisted_3\n        ]))\n      : _createCommentVNode(\"\", true)\n  ]))\n}\n}\n\n})","import script from \"./AdminView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminView.vue?vue&type=style&index=0&id=64629971&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-64629971\"]])\n\nexport default __exports__"],"names":["_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","id","class","_hoisted_2","key","_hoisted_3","_createElementVNode","_defineComponent","__name","setup","__props","store","useStore","appConfig","computed","getters","ROOT_STORE","appStatistics","isAuthUserAmin","AUTH_USER_STORE","userLoading","onBeforeMount","dispatch","_ctx","_cache","_component_router_view","_resolveComponent","_openBlock","_createElementBlock","_unref","_createCommentVNode","_createBlock","NotFound","__exports__"],"sourceRoot":""}
 | 
			
		||||
{"version":3,"file":"static/js/admin.4313b7d9.js","mappings":"mOAGA,MAAMA,EAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,EAAa,CACjBC,GAAI,QACJC,MAAO,QAEHC,EAAa,CACjBC,IAAK,EACLF,MAAO,aAEHG,EAA2BT,GAAa,KAAmBU,EAAAA,EAAAA,GAAoB,MAAO,CAAEL,GAAI,UAAY,MAAO,KAUrH,OAA4BM,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,YACRC,MAAMC,GAEN,MAAMC,GAAQC,EAAAA,EAAAA,KAERC,GAAqCC,EAAAA,EAAAA,KACzC,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,cAEhBC,GAA6CH,EAAAA,EAAAA,KACjD,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,aAEhBE,GAAuCJ,EAAAA,EAAAA,KAC3C,IAAMH,EAAMI,QAAQI,EAAAA,GAAAA,QAAAA,YAEhBC,GAAoCN,EAAAA,EAAAA,KACxC,IAAMH,EAAMI,QAAQI,EAAAA,GAAAA,QAAAA,gBAKxB,OAFEE,EAAAA,EAAAA,KAAc,IAAMV,EAAMW,SAASN,EAAAA,GAAAA,QAAAA,yBAE9B,CAACO,EAAUC,KAChB,MAAMC,GAAyBC,EAAAA,EAAAA,IAAkB,eAEjD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO5B,EAAY,EACzD6B,EAAAA,EAAAA,IAAOT,IAWLU,EAAAA,EAAAA,IAAoB,IAAI,KAVvBH,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOzB,EAAY,EACnD0B,EAAAA,EAAAA,IAAOX,KACHS,EAAAA,EAAAA,OAAcI,EAAAA,EAAAA,IAAaN,EAAwB,CAClDrB,IAAK,EACLS,WAAWgB,EAAAA,EAAAA,IAAOhB,GAClBI,eAAeY,EAAAA,EAAAA,IAAOZ,IACrB,KAAM,EAAG,CAAC,YAAa,qBACzBU,EAAAA,EAAAA,OAAcI,EAAAA,EAAAA,IAAaC,EAAAA,EAAU,CAAE5B,IAAK,KACjDC,MAGN,CAEJ,I,UCvDA,MAAM4B,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O","sources":["webpack://fittrackee_client/./src/views/AdminView.vue?67de","webpack://fittrackee_client/./src/views/AdminView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64629971\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n  id: \"admin\",\n  class: \"view\"\n}\nconst _hoisted_2 = {\n  key: 0,\n  class: \"container\"\n}\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport { computed, ComputedRef, onBeforeMount } from 'vue'\n\n  import NotFound from '@/components/Common/NotFound.vue'\n  import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n  import { TAppConfig, IAppStatistics } from '@/types/application'\n  import { useStore } from '@/use/useStore'\n\n  \nexport default /*#__PURE__*/_defineComponent({\n  __name: 'AdminView',\n  setup(__props) {\n\n  const store = useStore()\n\n  const appConfig: ComputedRef<TAppConfig> = computed(\n    () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n  )\n  const appStatistics: ComputedRef<IAppStatistics> = computed(\n    () => store.getters[ROOT_STORE.GETTERS.APP_STATS]\n  )\n  const isAuthUserAmin: ComputedRef<boolean> = computed(\n    () => store.getters[AUTH_USER_STORE.GETTERS.IS_ADMIN]\n  )\n  const userLoading: ComputedRef<boolean> = computed(\n    () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n  )\n\n  onBeforeMount(() => store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_STATS))\n\nreturn (_ctx: any,_cache: any) => {\n  const _component_router_view = _resolveComponent(\"router-view\")!\n\n  return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n    (!_unref(userLoading))\n      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n          (_unref(isAuthUserAmin))\n            ? (_openBlock(), _createBlock(_component_router_view, {\n                key: 0,\n                appConfig: _unref(appConfig),\n                appStatistics: _unref(appStatistics)\n              }, null, 8, [\"appConfig\", \"appStatistics\"]))\n            : (_openBlock(), _createBlock(NotFound, { key: 1 })),\n          _hoisted_3\n        ]))\n      : _createCommentVNode(\"\", true)\n  ]))\n}\n}\n\n})","import script from \"./AdminView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminView.vue?vue&type=style&index=0&id=64629971&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-64629971\"]])\n\nexport default __exports__"],"names":["_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","id","class","_hoisted_2","key","_hoisted_3","_createElementVNode","_defineComponent","__name","setup","__props","store","useStore","appConfig","computed","getters","ROOT_STORE","appStatistics","isAuthUserAmin","AUTH_USER_STORE","userLoading","onBeforeMount","dispatch","_ctx","_cache","_component_router_view","_resolveComponent","_openBlock","_createElementBlock","_unref","_createCommentVNode","_createBlock","NotFound","__exports__"],"sourceRoot":""}
 | 
			
		||||
							
								
								
									
										1
									
								
								fittrackee/dist/static/js/app.4a1985d7.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								fittrackee/dist/static/js/chunk-vendors.504d6d07.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -1,2 +1,2 @@
 | 
			
		||||
"use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[845],{4264:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});r(7658);var n=r(6252),a=r(2262),s=r(3577),u=r(2201),o=r(7167),c=r(5801),i=r(9917);const l={key:0,id:"account-confirmation",class:"center-card with-margin"},E={class:"error-message"};var _=(0,n.aZ)({__name:"AccountConfirmationView",setup(e){const t=(0,u.yj)(),r=(0,u.tv)(),_=(0,i.o)(),d=(0,n.Fl)((()=>_.getters[c.SY.GETTERS.ERROR_MESSAGES])),S=(0,n.Fl)((()=>t.query.token));function m(){S.value?_.dispatch(c.YN.ACTIONS.CONFIRM_ACCOUNT,{token:S.value}):r.push("/")}return(0,n.wF)((()=>m())),(0,n.Ah)((()=>_.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(e,t)=>{const r=(0,n.up)("router-link");return(0,a.SU)(d)?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(o.Z),(0,n._)("p",E,[(0,n._)("span",null,(0,s.zw)(e.$t("error.SOMETHING_WRONG"))+".",1),(0,n.Wm)(r,{class:"links",to:"/account-confirmation/resend"},{default:(0,n.w5)((()=>[(0,n.Uk)((0,s.zw)(e.$t("buttons.ACCOUNT-CONFIRMATION-RESEND"))+"? ",1)])),_:1})])])):(0,n.kq)("",!0)}}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-785df978"]]);var m=S},8793:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});r(7658);var n=r(6252),a=r(2262),s=r(3577),u=r(2201),o=r(7167),c=r(5801),i=r(9917);const l={key:0,id:"email-update",class:"center-card with-margin"},E={class:"error-message"};var _=(0,n.aZ)({__name:"EmailUpdateView",setup(e){const t=(0,u.yj)(),r=(0,u.tv)(),_=(0,i.o)(),d=(0,n.Fl)((()=>_.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),S=(0,n.Fl)((()=>_.getters[c.YN.GETTERS.IS_AUTHENTICATED])),m=(0,n.Fl)((()=>_.getters[c.SY.GETTERS.ERROR_MESSAGES])),p=(0,n.Fl)((()=>t.query.token));function R(){p.value?_.dispatch(c.YN.ACTIONS.CONFIRM_EMAIL,{token:p.value,refreshUser:S.value}):r.push("/")}return(0,n.wF)((()=>R())),(0,n.Ah)((()=>_.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,n.YP)((()=>m.value),(e=>{d.value.username&&e&&r.push("/")})),(e,t)=>{const r=(0,n.up)("router-link"),u=(0,n.up)("i18n-t");return(0,a.SU)(m)&&!(0,a.SU)(d).username?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(o.Z),(0,n._)("p",E,[(0,n._)("span",null,(0,s.zw)(e.$t("error.SOMETHING_WRONG"))+".",1),(0,n._)("span",null,[(0,n.Wm)(u,{keypath:"user.PROFILE.ERRORED_EMAIL_UPDATE"},{default:(0,n.w5)((()=>[(0,n.Wm)(r,{to:"/login"},{default:(0,n.w5)((()=>[(0,n.Uk)((0,s.zw)(e.$t("user.LOG_IN")),1)])),_:1})])),_:1})])])])):(0,n.kq)("",!0)}}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-8c2ec9ce"]]);var m=S},1133:function(e,t,r){r.r(t),r.d(t,{default:function(){return d}});var n=r(6252),a=r(2262),s=r(5801),u=r(9917);const o=e=>((0,n.dD)("data-v-6646c65e"),e=e(),(0,n.Cn)(),e),c={key:0,id:"profile",class:"view"},i=o((()=>(0,n._)("div",{id:"bottom"},null,-1)));var l=(0,n.aZ)({__name:"ProfileView",setup(e){const t=(0,u.o)(),r=(0,n.Fl)((()=>t.getters[s.YN.GETTERS.AUTH_USER_PROFILE]));return(e,t)=>{const s=(0,n.up)("router-view");return(0,a.SU)(r).username?((0,n.wg)(),(0,n.iD)("div",c,[(0,n.Wm)(s,{user:(0,a.SU)(r)},null,8,["user"]),i])):(0,n.kq)("",!0)}}}),E=r(3744);const _=(0,E.Z)(l,[["__scopeId","data-v-6646c65e"]]);var d=_},9453:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});var n=r(6252),a=r(2262),s=r(2201),u=r(2179),o=r(1585),c=r(5801),i=r(9917);const l={key:0,id:"user",class:"view"},E={class:"box"};var _=(0,n.aZ)({__name:"UserView",props:{fromAdmin:{type:Boolean}},setup(e){const t=e,{fromAdmin:r}=(0,a.BK)(t),_=(0,s.yj)(),d=(0,i.o)(),S=(0,n.Fl)((()=>d.getters[c.RT.GETTERS.USER]));return(0,n.wF)((()=>{_.params.username&&"string"===typeof _.params.username&&d.dispatch(c.RT.ACTIONS.GET_USER,_.params.username)})),(0,n.Jd)((()=>{d.dispatch(c.RT.ACTIONS.EMPTY_USER)})),(e,t)=>(0,a.SU)(S).username?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(u.Z,{user:(0,a.SU)(S)},null,8,["user"]),(0,n._)("div",E,[(0,n.Wm)(o.Z,{user:(0,a.SU)(S),"from-admin":(0,a.SU)(r)},null,8,["user","from-admin"])])])):(0,n.kq)("",!0)}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-af7007f4"]]);var m=S}}]);
 | 
			
		||||
//# sourceMappingURL=profile.d03a9bb9.js.map
 | 
			
		||||
//# sourceMappingURL=profile.98e985f4.js.map
 | 
			
		||||
							
								
								
									
										1
									
								
								fittrackee/dist/static/js/reset.572eac46.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}}]);
 | 
			
		||||
//# sourceMappingURL=statistics.24617f39.js.map
 | 
			
		||||
//# sourceMappingURL=statistics.d3c3c7bd.js.map
 | 
			
		||||
							
								
								
									
										1
									
								
								fittrackee/dist/static/js/statistics.d3c3c7bd.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								fittrackee/dist/static/js/workouts.0fd5b207.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										2
									
								
								fittrackee/dist/workbox-db5fc017.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -3035,11 +3035,38 @@ class TestGetUserDataExportRequest(ApiTestCaseMixin):
 | 
			
		||||
        assert data["status"] == "success"
 | 
			
		||||
        assert data["request"] is None
 | 
			
		||||
 | 
			
		||||
    def test_it_returns_existing_request(
 | 
			
		||||
    def test_it_does_not_return_another_user_existing_request(
 | 
			
		||||
        self,
 | 
			
		||||
        app: Flask,
 | 
			
		||||
        user_1: User,
 | 
			
		||||
        user_2: User,
 | 
			
		||||
    ) -> None:
 | 
			
		||||
        export_expiration = app.config["DATA_EXPORT_EXPIRATION"]
 | 
			
		||||
        completed_export_request = UserDataExport(
 | 
			
		||||
            user_id=user_2.id,
 | 
			
		||||
            created_at=datetime.utcnow() - timedelta(hours=export_expiration),
 | 
			
		||||
        )
 | 
			
		||||
        db.session.add(completed_export_request)
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
        client, auth_token = self.get_test_client_and_auth_token(
 | 
			
		||||
            app, user_1.email
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        response = client.get(
 | 
			
		||||
            '/api/auth/account/export',
 | 
			
		||||
            content_type='application/json',
 | 
			
		||||
            headers=dict(Authorization=f'Bearer {auth_token}'),
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        assert response.status_code == 200
 | 
			
		||||
        data = json.loads(response.data.decode())
 | 
			
		||||
        assert data["status"] == "success"
 | 
			
		||||
        assert data["request"] is None
 | 
			
		||||
 | 
			
		||||
    def test_it_returns_existing_request_for_authenticated_user(
 | 
			
		||||
        self,
 | 
			
		||||
        app: Flask,
 | 
			
		||||
        user_1: User,
 | 
			
		||||
    ) -> None:
 | 
			
		||||
        export_expiration = app.config["DATA_EXPORT_EXPIRATION"]
 | 
			
		||||
        completed_export_request = UserDataExport(
 | 
			
		||||
 
 | 
			
		||||
@@ -190,6 +190,7 @@ class TestUserDataExporterArchive(CallArgsMixin):
 | 
			
		||||
        secrets_mock: Mock,
 | 
			
		||||
        app: Flask,
 | 
			
		||||
        user_1: User,
 | 
			
		||||
        user_2: User,
 | 
			
		||||
    ) -> None:
 | 
			
		||||
        exporter = UserDataExporter(user_1)
 | 
			
		||||
 | 
			
		||||
@@ -212,6 +213,7 @@ class TestUserDataExporterArchive(CallArgsMixin):
 | 
			
		||||
        secrets_mock: Mock,
 | 
			
		||||
        app: Flask,
 | 
			
		||||
        user_1: User,
 | 
			
		||||
        user_2: User,
 | 
			
		||||
    ) -> None:
 | 
			
		||||
        exporter = UserDataExporter(user_1)
 | 
			
		||||
        token_urlsafe = random_string()
 | 
			
		||||
@@ -237,6 +239,7 @@ class TestUserDataExporterArchive(CallArgsMixin):
 | 
			
		||||
        secrets_mock: Mock,
 | 
			
		||||
        app: Flask,
 | 
			
		||||
        user_1: User,
 | 
			
		||||
        user_2: User,
 | 
			
		||||
    ) -> None:
 | 
			
		||||
        exporter = UserDataExporter(user_1)
 | 
			
		||||
        token_urlsafe = random_string()
 | 
			
		||||
@@ -265,6 +268,7 @@ class TestUserDataExporterArchive(CallArgsMixin):
 | 
			
		||||
        secrets_mock: Mock,
 | 
			
		||||
        app: Flask,
 | 
			
		||||
        user_1: User,
 | 
			
		||||
        user_2: User,
 | 
			
		||||
        sport_1_cycling: Sport,
 | 
			
		||||
        gpx_file: str,
 | 
			
		||||
    ) -> None:
 | 
			
		||||
@@ -287,6 +291,38 @@ class TestUserDataExporterArchive(CallArgsMixin):
 | 
			
		||||
            )
 | 
			
		||||
        # fmt: on
 | 
			
		||||
 | 
			
		||||
    @patch.object(secrets, 'token_urlsafe')
 | 
			
		||||
    @patch.object(UserDataExporter, 'export_data')
 | 
			
		||||
    @patch('fittrackee.users.export_data.ZipFile')
 | 
			
		||||
    def test_it_does_not_call_zipfile_for_another_user_gpx_file(
 | 
			
		||||
        self,
 | 
			
		||||
        zipfile_mock: Mock,
 | 
			
		||||
        export_data: Mock,
 | 
			
		||||
        secrets_mock: Mock,
 | 
			
		||||
        app: Flask,
 | 
			
		||||
        user_1: User,
 | 
			
		||||
        user_2: User,
 | 
			
		||||
        sport_1_cycling: Sport,
 | 
			
		||||
        gpx_file: str,
 | 
			
		||||
    ) -> None:
 | 
			
		||||
        _, workout_short_id = post_a_workout(app, gpx_file)
 | 
			
		||||
        workout = Workout.query.first()
 | 
			
		||||
        expected_path = os.path.join(
 | 
			
		||||
            app.config['UPLOAD_FOLDER'],
 | 
			
		||||
            workout.gpx,
 | 
			
		||||
        )
 | 
			
		||||
        exporter = UserDataExporter(user_2)
 | 
			
		||||
 | 
			
		||||
        exporter.generate_archive()
 | 
			
		||||
 | 
			
		||||
        # fmt: off
 | 
			
		||||
        assert (
 | 
			
		||||
            call(expected_path, f"gpx/{workout.gpx.split('/')[-1]}")
 | 
			
		||||
            not in zipfile_mock.return_value.__enter__.
 | 
			
		||||
            return_value.write.call_args_list
 | 
			
		||||
        )
 | 
			
		||||
        # fmt: on
 | 
			
		||||
 | 
			
		||||
    @patch.object(secrets, 'token_urlsafe')
 | 
			
		||||
    @patch.object(UserDataExporter, 'export_data')
 | 
			
		||||
    @patch('fittrackee.users.export_data.ZipFile')
 | 
			
		||||
@@ -297,6 +333,7 @@ class TestUserDataExporterArchive(CallArgsMixin):
 | 
			
		||||
        secrets_mock: Mock,
 | 
			
		||||
        app: Flask,
 | 
			
		||||
        user_1: User,
 | 
			
		||||
        user_2: User,
 | 
			
		||||
        sport_1_cycling: Sport,
 | 
			
		||||
        gpx_file: str,
 | 
			
		||||
    ) -> None:
 | 
			
		||||
@@ -321,6 +358,40 @@ class TestUserDataExporterArchive(CallArgsMixin):
 | 
			
		||||
            )
 | 
			
		||||
        # fmt: on
 | 
			
		||||
 | 
			
		||||
    @patch.object(secrets, 'token_urlsafe')
 | 
			
		||||
    @patch.object(UserDataExporter, 'export_data')
 | 
			
		||||
    @patch('fittrackee.users.export_data.ZipFile')
 | 
			
		||||
    def test_it_does_not_call_zipfile_for_another_user_profile_image(
 | 
			
		||||
        self,
 | 
			
		||||
        zipfile_mock: Mock,
 | 
			
		||||
        export_data: Mock,
 | 
			
		||||
        secrets_mock: Mock,
 | 
			
		||||
        app: Flask,
 | 
			
		||||
        user_1: User,
 | 
			
		||||
        user_2: User,
 | 
			
		||||
        sport_1_cycling: Sport,
 | 
			
		||||
        gpx_file: str,
 | 
			
		||||
    ) -> None:
 | 
			
		||||
        user_1.picture = random_string()
 | 
			
		||||
        expected_path = os.path.join(
 | 
			
		||||
            app.config['UPLOAD_FOLDER'],
 | 
			
		||||
            user_1.picture,
 | 
			
		||||
        )
 | 
			
		||||
        exporter = UserDataExporter(user_2)
 | 
			
		||||
 | 
			
		||||
        with patch(
 | 
			
		||||
            'fittrackee.users.export_data.os.path.isfile', return_value=True
 | 
			
		||||
        ):
 | 
			
		||||
            exporter.generate_archive()
 | 
			
		||||
 | 
			
		||||
        # fmt: off
 | 
			
		||||
        assert (
 | 
			
		||||
            call(expected_path, user_1.picture.split('/')[-1])
 | 
			
		||||
            not in zipfile_mock.return_value.__enter__.
 | 
			
		||||
            return_value.write.call_args_list
 | 
			
		||||
        )
 | 
			
		||||
        # fmt: on
 | 
			
		||||
 | 
			
		||||
    @patch.object(secrets, 'token_urlsafe')
 | 
			
		||||
    def test_it_test_it_generates_a_zip_archive(
 | 
			
		||||
        self,
 | 
			
		||||
 
 | 
			
		||||
@@ -1770,7 +1770,7 @@ def get_user_data_export(auth_user: User) -> Union[Dict, HttpResponse]:
 | 
			
		||||
    It returns:
 | 
			
		||||
 | 
			
		||||
    - export creation date
 | 
			
		||||
    - export status ("in_progress", "successful" and "errored")
 | 
			
		||||
    - export status (``in_progress``, ``successful`` and ``errored``)
 | 
			
		||||
    - file name and size (in bytes) when export is successful
 | 
			
		||||
 | 
			
		||||
    **Example request**:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "fittrackee_client",
 | 
			
		||||
  "version": "0.7.12",
 | 
			
		||||
  "version": "0.7.13",
 | 
			
		||||
  "private": true,
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "serve": "vue-cli-service serve",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
[tool.poetry]
 | 
			
		||||
name = "fittrackee"
 | 
			
		||||
version = "0.7.12"
 | 
			
		||||
version = "0.7.13"
 | 
			
		||||
description = "Self-hosted outdoor workout/activity tracker"
 | 
			
		||||
authors = ["SamR1"]
 | 
			
		||||
license = "AGPL-3.0"
 | 
			
		||||
 
 | 
			
		||||