diff --git a/CHANGELOG.md b/CHANGELOG.md index e161ca39..2e100a11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1013,7 +1013,7 @@ In this release 7 issues were closed. - Cycling (Sport) - Cycling (Transport) - Hiking - - Montain Biking + - Mountain Biking - Running - Walking - Activity creation by uploading a gpx file. An activity can even be created without gpx (the user must enter date, time, duration and distance) diff --git a/Makefile b/Makefile index 7140163b..487ac0ba 100644 --- a/Makefile +++ b/Makefile @@ -150,13 +150,13 @@ html-all: $(MAKE) html LANGUAGE=$$language ; \ done -html-update: +html-update-po: $(SPHINXINTL) update -p "$(GETTEXT)" -d "$(LOCALES_DIRS)" -l $(LANGUAGE) -html-update-all: +html-update-po-all: for language in en fr ; do \ echo -e "\r\nUpdating .po files for '$$language'...\r\n" ; \ - $(MAKE) html-update LANGUAGE=$$language ; \ + $(MAKE) html-update-po LANGUAGE=$$language ; \ done install-db: diff --git a/docs/en/_sources/changelog.md.txt b/docs/en/_sources/changelog.md.txt index e161ca39..2e100a11 100644 --- a/docs/en/_sources/changelog.md.txt +++ b/docs/en/_sources/changelog.md.txt @@ -1013,7 +1013,7 @@ In this release 7 issues were closed. - Cycling (Sport) - Cycling (Transport) - Hiking - - Montain Biking + - Mountain Biking - Running - Walking - Activity creation by uploading a gpx file. An activity can even be created without gpx (the user must enter date, time, duration and distance) diff --git a/docs/en/api/auth.html b/docs/en/api/auth.html index 744a1cbf..1e00c978 100644 --- a/docs/en/api/auth.html +++ b/docs/en/api/auth.html @@ -244,7 +244,7 @@ to activate it.

Example responses:

HTTP/1.1 200 SUCCESS
 Content-Type: application/json
@@ -255,7 +255,7 @@ to activate it.

HTTP/1.1 400 BAD REQUEST
 Content-Type: application/json
@@ -279,26 +279,20 @@ fallback to ‘en’ (english))

Status Codes:
    -
  • 200 OK – success

  • +
  • 200 OKsuccess

  • 400 Bad Request

      -
    • invalid payload

    • -
    • sorry, that username is already taken

    • -
    • -
      Errors:
        -
      • username: 3 to 30 characters required

      • -
      • username: -only alphanumeric characters and the underscore -character “_” allowed

      • -
      • email: valid email must be provided

      • -
      • password: 8 characters required

      • -
      -
      -
      -
    • +
    • invalid payload

    • +
    • sorry, that username is already taken

    • +
    • sorry, you must agree privacy policy to register

    • +
    • username: 3 to 30 characters required

    • +
    • username: only alphanumeric characters and the underscore +character "_" allowed

    • +
    • email: valid email must be provided

    • +
    • password: 8 characters required

  • -
  • 403 Forbidden – error, registration is disabled

  • -
  • 500 Internal Server Error – error, please try again or contact the administrator

  • +
  • 403 Forbiddenerror, registration is disabled

  • +
  • 500 Internal Server Errorerror, please try again or contact the administrator

@@ -332,9 +326,9 @@ character “_” allowed

Status Codes:
@@ -368,10 +362,10 @@ character “_” allowed

Status Codes:
@@ -389,7 +383,7 @@ character “_” allowed

Example responses:

HTTP/1.1 200 OK
 Content-Type: application/json
@@ -422,10 +416,10 @@ character “_” allowed

Status Codes:
@@ -538,11 +532,11 @@ character “_” allowed

Status Codes:
    -
  • 200 OK – success.

  • +
  • 200 OKsuccess

  • 401 Unauthorized

      -
    • provide a valid auth token

    • -
    • signature expired, please log in again

    • -
    • invalid token, please log in again

    • +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

@@ -667,18 +661,15 @@ character “_” allowed

Status Codes:
    -
  • 200 OK – user profile updated

  • -
  • 400 Bad Request

      -
    • invalid payload

    • -
    -

  • +
  • 200 OKuser profile updated

  • +
  • 400 Bad Requestinvalid payload

  • 401 Unauthorized

      -
    • provide a valid auth token

    • -
    • signature expired, please log in again

    • -
    • invalid token, please log in again

    • +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

  • -
  • 500 Internal Server Error – error, please try again or contact the administrator

  • +
  • 500 Internal Server Errorerror, please try again or contact the administrator

@@ -817,19 +808,19 @@ character “_” allowed

Status Codes:
    -
  • 200 OK – user preferences updated

  • +
  • 200 OKuser preferences updated

  • 400 Bad Request

      -
    • invalid payload

    • -
    • password: password and password confirmation don’t match

    • +
    • invalid payload

    • +
    • password: password and password confirmation don't match

  • 401 Unauthorized

      -
    • provide a valid auth token

    • -
    • signature expired, please log in again

    • -
    • invalid token, please log in again

    • +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

  • -
  • 500 Internal Server Error – error, please try again or contact the administrator

  • +
  • 500 Internal Server Errorerror, please try again or contact the administrator

@@ -877,23 +868,20 @@ character “_” allowed

Status Codes:
    -
  • 200 OK – user preferences updated

  • +
  • 200 OKuser sport preferences updated

  • 400 Bad Request

      -
    • invalid payload

    • -
    • invalid hexadecimal color

    • +
    • invalid payload

    • +
    • invalid hexadecimal color

  • 401 Unauthorized

      -
    • provide a valid auth token

    • -
    • signature expired, please log in again

    • -
    • invalid token, please log in again

    • +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

  • -
  • 404 Not Found

      -
    • sport does not exist

    • -
    -

  • -
  • 500 Internal Server Error – error, please try again or contact the administrator

  • +
  • 404 Not Foundsport does not exist

  • +
  • 500 Internal Server Errorerror, please try again or contact the administrator

@@ -929,16 +917,13 @@ character “_” allowed

@@ -977,22 +962,22 @@ character “_” allowed

Status Codes:
    -
  • 200 OK – user picture updated

  • +
  • 200 OKuser picture updated

  • 400 Bad Request

      -
    • invalid payload

    • -
    • no file part

    • -
    • no selected file

    • -
    • file extension not allowed

    • +
    • invalid payload

    • +
    • no file part

    • +
    • no selected file

    • +
    • file extension not allowed

  • 401 Unauthorized

      -
    • provide a valid auth token

    • -
    • signature expired, please log in again

    • -
    • invalid token, please log in again

    • +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

  • -
  • 413 Request Entity Too Large – error during picture update: file size exceeds 1.0MB

  • -
  • 500 Internal Server Error – error during picture update

  • +
  • 413 Request Entity Too Largeerror during picture update: file size exceeds 1.0MB

  • +
  • 500 Internal Server Errorerror during picture update

@@ -1023,12 +1008,12 @@ character “_” allowed

@@ -1062,9 +1047,9 @@ character “_” allowed

Status Codes:
@@ -1195,23 +1180,23 @@ character “_” allowed

Status Codes:
    -
  • 200 OK – user account updated

  • +
  • 200 OKuser account updated

  • 400 Bad Request

      -
    • invalid payload

    • -
    • email is missing

    • -
    • current password is missing

    • -
    • email: valid email must be provided

    • -
    • password: 8 characters required

    • +
    • invalid payload

    • +
    • email is missing

    • +
    • current password is missing

    • +
    • email: valid email must be provided

    • +
    • password: 8 characters required

  • 401 Unauthorized

      -
    • provide a valid auth token

    • -
    • signature expired, please log in again

    • -
    • invalid token, please log in again

    • -
    • invalid credentials

    • +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

    • +
    • invalid credentials

  • -
  • 500 Internal Server Error – error, please try again or contact the administrator

  • +
  • 500 Internal Server Errorerror, please try again or contact the administrator

@@ -1246,10 +1231,10 @@ character “_” allowed

Status Codes:
@@ -1282,9 +1267,9 @@ character “_” allowed

Status Codes:
@@ -1302,7 +1287,7 @@ If a valid token is provided, it will be blacklisted.

Example responses:

HTTP/1.1 200 OK
 Content-Type: application/json
@@ -1314,7 +1299,7 @@ If a valid token is provided, it will be blacklisted.

HTTP/1.1 401 UNAUTHORIZED
 Content-Type: application/json
@@ -1333,17 +1318,14 @@ If a valid token is provided, it will be blacklisted.

Status Codes:
    -
  • 200 OK – successfully logged out

  • +
  • 200 OKsuccessfully logged out

  • 401 Unauthorized

      -
    • provide a valid auth token

    • -
    • The access token provided is expired, revoked, malformed, or invalid -for other reasons.

    • -
    -

  • -
  • 500 Internal Server Error

      -
    • error on token blacklist

    • +
    • provide a valid auth token

    • +
    • The access token provided is expired, revoked, malformed, or invalid +for other reasons.

  • +
  • 500 Internal Server Errorerror on token blacklist

@@ -1380,18 +1362,15 @@ for other reasons.

Status Codes:
@@ -1414,7 +1393,7 @@ for other reasons.

Example response:

    -
  • if a request exists

  • +
  • if a request exists:

HTTP/1.1 200 OK
 Content-Type: application/json
@@ -1431,7 +1410,7 @@ for other reasons.

    -
  • if no request

  • +
  • if no request:

HTTP/1.1 200 OK
 Content-Type: application/json
@@ -1450,11 +1429,11 @@ for other reasons.

Status Codes:
    -
  • 200 OK – success

  • +
  • 200 OKsuccess

  • 401 Unauthorized

      -
    • provide a valid auth token

    • -
    • signature expired, please log in again

    • -
    • invalid token, please log in again

    • +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

@@ -1494,19 +1473,19 @@ for other reasons.

Status Codes:
    -
  • 200 OK – success

  • +
  • 200 OKsuccess

  • 400 Bad Request

      -
    • ongoing request exists

    • -
    • completed request already exists

    • +
    • ongoing request exists

    • +
    • completed request already exists

  • 401 Unauthorized

      -
    • provide a valid auth token

    • -
    • signature expired, please log in again

    • -
    • invalid token, please log in again

    • +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

  • -
  • 500 Internal Server Error – internal server error

  • +
  • 500 Internal Server Errorerror, please try again or contact the administrator

@@ -1539,14 +1518,14 @@ for other reasons.

Status Codes:
    -
  • 200 OK – success

  • +
  • 200 OKsuccess

  • 401 Unauthorized

      -
    • provide a valid auth token

    • -
    • signature expired, please log in again

    • -
    • invalid token, please log in again

    • +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

  • -
  • 404 Not Found – file not found

  • +
  • 404 Not Foundfile not found

diff --git a/docs/en/api/configuration.html b/docs/en/api/configuration.html index 793ec901..36dbfae0 100644 --- a/docs/en/api/configuration.html +++ b/docs/en/api/configuration.html @@ -267,8 +267,8 @@
Status Codes:
@@ -329,17 +329,17 @@
Status Codes:
@@ -367,7 +367,7 @@
Status Codes:
diff --git a/docs/en/api/oauth2.html b/docs/en/api/oauth2.html index f45ae60c..0a314e41 100644 --- a/docs/en/api/oauth2.html +++ b/docs/en/api/oauth2.html @@ -240,14 +240,14 @@ application).

Example request:

    -
  • without parameters

  • +
  • without parameters:

GET /api/oauth/apps HTTP/1.1
 Content-Type: application/json
 
    -
  • with ‘page’ parameter

  • +
  • with ‘page’ parameter:

GET /api/oauth/apps?page=2 HTTP/1.1
 Content-Type: application/json
@@ -298,11 +298,11 @@ application).

Status Codes:
    -
  • 200 OK – success

  • +
  • 200 OKsuccess

  • 401 Unauthorized

      -
    • provide a valid auth token

    • -
    • signature expired, please log in again

    • -
    • invalid token, please log in again

    • +
    • provide a valid auth token

    • +
    • signature expired, please log in again

    • +
    • invalid token, please log in again

@@ -352,7 +352,7 @@ application).

  • client_uri (string) – client URL

  • redirect_uri (array) – list of client redirect URLs (string)

  • scope (string) – client scopes

  • -
  • client_description (string) – client description (OPTIONAL)

  • +
  • client_description (string) – client description (OPTIONAL)

  • Request Headers:
    @@ -362,15 +362,12 @@ application).

    Status Codes:
      -
    • 200 OK – success

    • -
    • 400 Bad Request

        -
      • invalid payload

      • -
      -

    • +
    • 200 OKsuccess

    • +
    • 400 Bad Requestinvalid payload

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    @@ -391,7 +388,7 @@ application).

    Example responses:

      -
    • success

    • +
    • success:

    HTTP/1.1 200 SUCCESS
     Content-Type: application/json
    @@ -416,7 +413,7 @@ application).

      -
    • not found

    • +
    • not found:

    HTTP/1.1 404 NOT FOUND
     Content-Type: application/json
    @@ -440,14 +437,14 @@ application).

    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • -
    • 404 Not Found – OAuth2 client not found

    • +
    • 404 Not FoundOAuth2 client not found

    @@ -466,7 +463,7 @@ application).

    Example responses:

      -
    • success

    • +
    • success:

    HTTP/1.1 200 SUCCESS
     Content-Type: application/json
    @@ -491,7 +488,7 @@ application).

      -
    • not found

    • +
    • not found:

    HTTP/1.1 404 NOT FOUND
     Content-Type: application/json
    @@ -515,14 +512,14 @@ application).

    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • -
    • 404 Not Found – OAuth2 client not found

    • +
    • 404 Not FoundOAuth2 client not found

    @@ -559,12 +556,12 @@ application).

    • 204 No Content – OAuth2 client deleted

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • -
    • 404 Not Found – OAuth2 client not found

    • +
    • 404 Not FoundOAuth2 client not found

    @@ -603,14 +600,14 @@ application).

    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • -
    • 404 Not Found – OAuth2 client not found

    • +
    • 404 Not FoundOAuth2 client not found

    @@ -662,16 +659,16 @@ provided)

    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 400 Bad Request

        -
      • invalid payload

      • +
      • invalid payload

      • errors returned by Authlib library

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    @@ -720,15 +717,12 @@ are supported by FitTrackee)

    Status Codes:
      -
    • 200 OK – success

    • -
    • 400 Bad Request

        -
      • errors returned by Authlib library

      • -
      -

    • +
    • 200 OKsuccess

    • +
    • 400 Bad Request – errors returned by Authlib library

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    @@ -762,15 +756,12 @@ are supported by FitTrackee)

    Status Codes:
      -
    • 200 OK – success

    • -
    • 400 Bad Request

        -
      • errors returned by Authlib library

      • -
      -

    • +
    • 200 OKsuccess

    • +
    • 400 Bad Request – errors returned by Authlib library

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    diff --git a/docs/en/api/records.html b/docs/en/api/records.html index 9b9aa2cd..fbe081e4 100644 --- a/docs/en/api/records.html +++ b/docs/en/api/records.html @@ -334,11 +334,11 @@
    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    diff --git a/docs/en/api/sports.html b/docs/en/api/sports.html index bc5814c3..6a6c6139 100644 --- a/docs/en/api/sports.html +++ b/docs/en/api/sports.html @@ -243,7 +243,7 @@

    Example response:

      -
    • for non admin user :

    • +
    • for non admin user:

    HTTP/1.1 200 OK
     Content-Type: application/json
    @@ -306,7 +306,7 @@
     
      -
    • for admin user :

    • +
    • for admin user:

    HTTP/1.1 200 OK
     Content-Type: application/json
    @@ -382,11 +382,11 @@
     
     
    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    @@ -406,7 +406,7 @@

    Example response:

      -
    • success for non admin user :

    • +
    • success for non admin user:

    HTTP/1.1 200 OK
     Content-Type: application/json
    @@ -429,7 +429,7 @@
     
      -
    • success for admin user :

    • +
    • success for admin user:

    HTTP/1.1 200 OK
     Content-Type: application/json
    @@ -453,7 +453,7 @@
     
      -
    • sport not found

    • +
    • sport not found:

    HTTP/1.1 404 NOT FOUND
     Content-Type: application/json
    @@ -479,14 +479,14 @@
     
     
    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • -
    • 404 Not Found – sport not found

    • +
    • 404 Not Foundsport not found

    @@ -505,7 +505,7 @@

    Example responses:

      -
    • success

    • +
    • success:

    HTTP/1.1 200 OK
     Content-Type: application/json
    @@ -529,7 +529,7 @@
     
      -
    • sport not found

    • +
    • sport not found:

    HTTP/1.1 404 NOT FOUND
     Content-Type: application/json
    @@ -561,16 +561,16 @@
     
    Status Codes:
    diff --git a/docs/en/api/stats.html b/docs/en/api/stats.html index f8c277af..fe0b15e8 100644 --- a/docs/en/api/stats.html +++ b/docs/en/api/stats.html @@ -238,13 +238,13 @@

    Scope: workouts:read

    Example requests:

      -
    • without parameters

    • +
    • without parameters:

    GET /api/stats/admin/by_time HTTP/1.1
     
      -
    • with parameters

    • +
    • with parameters:

    GET /api/stats/admin/by_time?from=2018-01-01&to=2018-06-30&time=week
       HTTP/1.1
    @@ -252,7 +252,7 @@
     

    Example responses:

      -
    • success

    • +
    • success:

    HTTP/1.1 200 OK
     Content-Type: application/json
    @@ -295,7 +295,7 @@
     
      -
    • no workouts

    • +
    • no workouts:

    HTTP/1.1 200 OK
     Content-Type: application/json
    @@ -335,17 +335,14 @@
     
     
    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • -
      -

    • -
    • 404 Not Found

        -
      • user does not exist

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • +
    • 404 Not Founduser does not exist

    @@ -358,20 +355,20 @@

    Scope: workouts:read

    Example requests:

      -
    • without parameters (get stats for all sports with workouts)

    • +
    • without parameters (get stats for all sports with workouts):

    GET /api/stats/admin/by_sport HTTP/1.1
     
      -
    • with sport id

    • +
    • with sport id:

    GET /api/stats/admin/by_sport?sport_id=1 HTTP/1.1
     

    Example responses:

      -
    • success

    • +
    • success:

    HTTP/1.1 200 OK
     Content-Type: application/json
    @@ -410,7 +407,7 @@
     
      -
    • no workouts

    • +
    • no workouts:

    HTTP/1.1 200 OK
     Content-Type: application/json
    @@ -441,16 +438,16 @@
     
     
    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • 404 Not Found

        -
      • user does not exist

      • -
      • sport does not exist

      • +
      • user does not exist

      • +
      • sport does not exist

    @@ -490,14 +487,14 @@
    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • -
    • 403 Forbidden – you do not have permissions

    • +
    • 403 Forbiddenyou do not have permissions

    diff --git a/docs/en/api/users.html b/docs/en/api/users.html index 666ea83d..0c34cb44 100644 --- a/docs/en/api/users.html +++ b/docs/en/api/users.html @@ -240,14 +240,14 @@ has admin rights.

    Scope: users:read

    Example request:

      -
    • without parameters

    • +
    • without parameters:

    GET /api/users HTTP/1.1
     Content-Type: application/json
     
      -
    • with some query parameters

    • +
    • with some query parameters:

    GET /api/users?order_by=workouts_count&par_page=5  HTTP/1.1
     Content-Type: application/json
    @@ -379,11 +379,11 @@ has admin rights.

    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    @@ -499,15 +499,15 @@ details.

    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • 404 Not Found

        -
      • user does not exist

      • +
      • user does not exist

    @@ -537,10 +537,10 @@ details.

    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 404 Not Found

        -
      • user does not exist

      • -
      • No picture.

      • +
      • user does not exist

      • +
      • No picture.

    @@ -670,25 +670,22 @@ if sending enabled)

    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 400 Bad Request

        -
      • invalid payload

      • -
      • valid email must be provided

      • -
      • new email must be different than curent email

      • +
      • invalid payload

      • +
      • valid email must be provided

      • +
      • new email must be different than curent email

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • -
    • 403 Forbidden – you do not have permissions

    • -
    • 404 Not Found

        -
      • user does not exist

      • -
      -

    • -
    • 500 Internal Server Error

    • +
    • 403 Forbiddenyou do not have permissions

    • +
    • 404 Not Founduser does not exist

    • +
    • 500 Internal Server Errorerror, please try again or contact the administrator

    @@ -727,21 +724,18 @@ one admin.

    • 204 No Content – user account deleted

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • 403 Forbidden

        -
      • you do not have permissions

      • -
      • you can not delete your account, no other user has admin rights

      • +
      • you do not have permissions

      • +
      • you can not delete your account, no other user has admin rights

    • -
    • 404 Not Found

        -
      • user does not exist

      • -
      -

    • -
    • 500 Internal Server Error – error, please try again or contact the administrator

    • +
    • 404 Not Founduser does not exist

    • +
    • 500 Internal Server Errorerror, please try again or contact the administrator

    diff --git a/docs/en/api/workouts.html b/docs/en/api/workouts.html index ae176acf..34d3a5f8 100644 --- a/docs/en/api/workouts.html +++ b/docs/en/api/workouts.html @@ -238,20 +238,20 @@

    Scope: workouts:read

    Example requests:

      -
    • without parameters

    • +
    • without parameters:

    GET /api/workouts/ HTTP/1.1
     
      -
    • with some query parameters

    • +
    • with some query parameters:

    GET /api/workouts?from=2019-07-02&to=2019-07-31&sport_id=1  HTTP/1.1
     

    Example responses:

      -
    • returning at least one workout

    • +
    • returning at least one workout:

    HTTP/1.1 200 OK
     Content-Type: application/json
    @@ -361,6 +361,8 @@
     
  • per_page (integer) – number of workouts per page (default: 5, max: 100)

  • sport_id (integer) – sport id

  • +
  • title (string) – any part (or all) of the workout title; +title matching is case-insensitive

  • from (string) – start date (format: %Y-%m-%d)

  • to (string) – end date (format: %Y-%m-%d)

  • distance_from (float) – minimal distance

  • @@ -377,25 +379,21 @@ workout_date)

    -
    Quert string title:
    -

    any part (or all) of the workout title; -title matching is case-insensitive

    -
    -
    Request Headers:
    -
      +
      Request Headers:
      +
      -
      Status Codes:
      -
        -
      • 200 OK – success

      • +
        Status Codes:
        +
          +
        • 200 OKsuccess

        • 401 Unauthorized

            -
          • provide a valid auth token

          • -
          • signature expired, please log in again

          • -
          • invalid token, please log in again

          • +
          • provide a valid auth token

          • +
          • signature expired, please log in again

          • +
          • invalid token, please log in again

        • -
        • 500 Internal Server Error

        • +
        • 500 Internal Server Errorerror, please try again or contact the administrator

        @@ -412,7 +410,7 @@ title matching is case-insensitive

    Example responses:

      -
    • success

    • +
    • success:

    HTTP/1.1 200 OK
     Content-Type: application/json
    @@ -482,15 +480,15 @@ title matching is case-insensitive

    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • -
    • 403 Forbidden – you do not have permissions

    • -
    • 404 Not Found – workout not found

    • +
    • 403 Forbiddenyou do not have permissions

    • +
    • 404 Not Foundworkout not found

    @@ -532,19 +530,19 @@ title matching is case-insensitive

    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • 404 Not Found

        -
      • workout not found

      • -
      • no gpx file for this workout

      • +
      • workout not found

      • +
      • no gpx file for this workout

    • -
    • 500 Internal Server Error

    • +
    • 500 Internal Server Errorerror, please try again or contact the administrator

    @@ -605,19 +603,19 @@ title matching is case-insensitive

    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • 404 Not Found

        -
      • workout not found

      • -
      • no gpx file for this workout

      • +
      • workout not found

      • +
      • no gpx file for this workout

    • -
    • 500 Internal Server Error

    • +
    • 500 Internal Server Errorerror, please try again or contact the administrator

    @@ -626,7 +624,7 @@ title matching is case-insensitive

    GET /api/workouts/(string: workout_short_id)/chart_data/segment/(int: segment_id)#
    -

    Get chart data from a workout gpx file, to display it with Recharts

    +

    Get chart data from a workout gpx file, to display it with Chart.js.

    Scope: workouts:read

    Example request:

    GET /api/workouts/kjxavSTUrJvoAh2wvCeGEF/chart/segment/0 HTTP/1.1
    @@ -679,16 +677,16 @@ title matching is case-insensitive

    Status Codes:
    @@ -731,16 +729,16 @@ title matching is case-insensitive

    Status Codes:
    @@ -768,15 +766,15 @@ title matching is case-insensitive

    Status Codes:
    @@ -830,16 +828,16 @@ title matching is case-insensitive

    Status Codes:
      -
    • 200 OK – success

    • +
    • 200 OKsuccess

    • 401 Unauthorized

        -
      • provide a valid auth token

      • -
      • signature expired, please log in again

      • -
      • invalid token, please log in again

      • +
      • provide a valid auth token

      • +
      • signature expired, please log in again

      • +
      • invalid token, please log in again

    • 404 Not Found

        -
      • workout not found

      • -
      • no gpx file for workout

      • +
      • workout not found

      • +
      • no gpx file for workout

    @@ -953,20 +951,20 @@ Double quotes in notes must be escaped.

    @@ -1085,14 +1083,14 @@ must be provided with ascent)

    Status Codes:
    @@ -1219,15 +1217,15 @@ must be provided with ascent)

    Status Codes:
    @@ -1263,13 +1261,13 @@ must be provided with ascent)

    diff --git a/docs/en/changelog.html b/docs/en/changelog.html index 3bb6e222..a2aa1047 100644 --- a/docs/en/changelog.html +++ b/docs/en/changelog.html @@ -1425,7 +1425,7 @@ add URL interceptors to simplify routes definition

  • Cycling (Sport)

  • Cycling (Transport)

  • Hiking

  • -
  • Montain Biking

  • +
  • Mountain Biking

  • Running

  • Walking

  • diff --git a/docs/en/searchindex.js b/docs/en/searchindex.js index 6cac645a..ab5d0a06 100644 --- a/docs/en/searchindex.js +++ b/docs/en/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api/auth", "api/configuration", "api/index", "api/oauth2", "api/records", "api/sports", "api/stats", "api/users", "api/workouts", "changelog", "cli", "features", "index", "installation", "oauth", "third_party_tools", "troubleshooting/administrator", "troubleshooting/index"], "filenames": ["api/auth.rst", "api/configuration.rst", "api/index.rst", "api/oauth2.rst", "api/records.rst", "api/sports.rst", "api/stats.rst", "api/users.rst", "api/workouts.rst", "changelog.md", "cli.rst", "features.rst", "index.rst", "installation.rst", "oauth.rst", "third_party_tools.rst", "troubleshooting/administrator.rst", "troubleshooting/index.rst"], "titles": ["Authentication and account", "Configuration", "API documentation", "OAuth2", "Records", "Sports", "Statistics", "Users", "Workouts", "Change log", "Command line interface", "Features", "FitTrackee", "Installation", "OAuth 2.0", "Third-party tools", "Administrator", "Troubleshooting"], "terms": {"post": [0, 3, 8, 14], "api": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14], "auth": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "regist": [0, 1, 9, 11, 13], "user": [0, 1, 2, 3, 4, 5, 6, 8, 9, 13, 14], "send": [0, 7, 9, 11, 13], "confirm": [0, 3, 9, 11, 13], "email": [0, 1, 7, 9, 10, 11, 16], "The": [0, 9, 10, 11, 13, 14], "newli": [0, 10, 13], "creat": [0, 3, 8, 9, 11, 13, 14], "i": [0, 1, 3, 8, 9, 10, 11, 12, 13, 14, 17], "inact": [0, 7, 11, 13], "must": [0, 1, 3, 5, 7, 8, 9, 11, 13, 14, 16], "hi": [0, 7, 9, 11], "activ": [0, 5, 7, 9, 10, 11, 12, 13], "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "request": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14], "http": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "1": [0, 1, 3, 4, 5, 6, 7, 8, 11, 13], "content": [0, 1, 3, 4, 5, 6, 7, 8, 9], "type": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "applic": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "json": [0, 1, 3, 4, 5, 6, 7, 8, 11], "respons": [0, 1, 3, 4, 5, 6, 7, 8], "success": [0, 1, 3, 4, 5, 6, 7, 8], "200": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "statu": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11], "error": [0, 1, 3, 5, 7, 8, 9, 11, 13, 16], "registr": [0, 1, 9, 10, 11, 13, 14], "400": [0, 1, 3, 5, 7, 8], "bad": [0, 1, 3, 5, 7, 8], "messag": [0, 1, 3, 8, 9, 10, 11, 13], "valid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13, 16], "provid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16], "n": 0, "object": [0, 1, 5, 7, 8], "usernam": [0, 6, 7, 9, 10, 13], "string": [0, 1, 3, 5, 6, 7, 8, 13, 14], "3": [0, 5, 6, 7, 8, 11, 13], "30": [0, 6], "charact": [0, 9], "requir": [0, 9, 13, 14], "password": [0, 7, 9, 10, 11, 13], "8": [0, 8, 11, 13], "lang": [0, 9], "languag": [0, 7, 9, 11], "prefer": [0, 7, 9], "invalid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "fallback": 0, "en": [0, 7], "english": [0, 9, 11], "accepted_polici": 0, "boolean": [0, 1, 3, 7, 10], "true": [0, 1, 3, 5, 7, 9, 13], "accept": 0, "privaci": [0, 1, 9, 11], "polici": [0, 1, 9, 11], "code": [0, 1, 3, 4, 5, 6, 7, 8, 9, 14], "ok": [0, 1, 3, 4, 5, 6, 7, 8], "payload": [0, 1, 3, 5, 7, 8], "sorri": 0, "alreadi": [0, 10], "taken": 0, "onli": [0, 3, 7, 8, 9, 10, 11, 13, 14], "alphanumer": [0, 9], "underscor": 0, "_": [0, 9], "allow": [0, 1, 8, 9, 10, 11, 12, 13, 14], "403": [0, 1, 5, 6, 7, 8], "forbidden": [0, 1, 5, 6, 7, 8], "disabl": [0, 9, 10, 11, 13], "500": [0, 1, 5, 7, 8, 9], "intern": [0, 1, 5, 7, 8], "server": [0, 1, 5, 7, 8, 9, 11, 12], "pleas": [0, 1, 3, 4, 5, 6, 7, 8, 9], "try": [0, 7, 8], "again": [0, 1, 3, 4, 5, 6, 7, 8], "contact": [0, 1, 7, 8, 11], "administr": [0, 1, 7, 8, 14, 17], "after": [0, 3, 9, 11, 13, 14], "auth_token": 0, "web": [0, 12, 13, 14], "token": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 14], "resend": 0, "instruct": [0, 9, 11, 13], "If": [0, 3, 11, 13, 14], "thi": [0, 3, 8, 9, 10, 11, 12, 13], "endpoint": [0, 1, 3, 9, 13, 14], "avail": [0, 4, 10, 11, 13, 14, 15], "resent": 0, "404": [0, 3, 5, 6, 7, 8, 9], "Not": [0, 3, 5, 6, 7, 8], "found": [0, 3, 5, 6, 7, 8, 9], "url": [0, 3, 9, 13, 14, 16], "wa": [0, 9], "login": 0, "an": [0, 1, 3, 5, 7, 9, 11, 13, 14, 16], "can": [0, 7, 9, 10, 11, 12, 13, 14, 16], "log": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13, 16], "successfulli": 0, "401": [0, 1, 3, 4, 5, 6, 7, 8], "unauthor": [0, 1, 3, 4, 5, 6, 7, 8], "credenti": [0, 13], "get": [0, 1, 3, 4, 5, 6, 7, 8, 14], "profil": [0, 3, 9, 14], "info": [0, 9, 11], "scope": [0, 1, 3, 4, 5, 6, 7, 8], "read": [0, 3, 4, 5, 6, 7, 8, 9, 14], "data": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14], "accepted_privacy_polici": 0, "admin": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 13], "fals": [0, 1, 3, 5, 7, 8, 13], "bio": [0, 7], "null": [0, 1, 5, 7, 8, 9], "birth_dat": [0, 7], "created_at": [0, 7], "sun": [0, 4, 7, 8], "14": [0, 3, 7, 8, 11], "jul": [0, 4, 7, 8], "2019": [0, 4, 6, 7, 8], "09": [0, 7], "58": [0, 7, 9], "gmt": [0, 3, 4, 7, 8], "date_format": 0, "dd": 0, "mm": 0, "yyyi": 0, "display_asc": 0, "sam": [0, 4, 7, 8], "com": [0, 1, 3, 7, 9, 13, 14], "email_to_confirm": 0, "first_nam": [0, 7], "imperial_unit": [0, 7], "is_act": [0, 5, 7], "last_nam": [0, 7], "locat": [0, 7, 13], "nb_sport": [0, 7], "nb_workout": [0, 6, 7], "6": [0, 5, 7, 8, 10, 11, 13], "pictur": [0, 7, 8, 9], "record": [0, 2, 7, 8, 9, 11], "id": [0, 3, 4, 5, 6, 7, 8, 14], "9": [0, 4, 7, 11, 13], "record_typ": [0, 4, 7, 8], "AS": [0, 4, 7, 8], "sport_id": [0, 4, 5, 6, 7, 8], "valu": [0, 3, 4, 7, 8, 9, 11, 13, 14, 16], "18": [0, 4, 7, 8, 9], "workout_d": [0, 4, 7, 8], "07": [0, 4, 7, 8], "08": [0, 4, 7, 8], "00": [0, 4, 7, 8], "workout_id": [0, 4, 7, 8], "hvybqybra7wwxpastwr4v2": [0, 4, 7, 8], "10": [0, 1, 4, 7, 8, 11, 13], "fd": [0, 4, 7, 8], "13": [0, 4, 7, 8, 10, 11, 13], "ha": [0, 4, 7, 8, 9, 11, 12], "43": [0, 4, 7, 8, 9], "97": [0, 4, 7, 8], "11": [0, 4, 7, 11, 13], "ld": [0, 4, 7, 8], "01": [0, 4, 6, 7, 8], "12": [0, 4, 7, 8], "m": [0, 4, 6, 7, 8], "sports_list": [0, 7], "4": [0, 5, 6, 7, 8, 11, 13], "start_elevation_at_zero": 0, "timezon": [0, 7, 8, 9, 11], "europ": [0, 7], "pari": [0, 7], "total_asc": [0, 6], "720": 0, "35": [0, 9], "total_dist": [0, 6, 7], "67": [0, 7], "895": [0, 7], "total_dur": [0, 6, 7], "50": [0, 7, 9, 13], "27": [0, 3, 7], "use_raw_gpx_spe": 0, "weekm": [0, 6, 7], "header": [0, 1, 3, 4, 5, 6, 7, 8, 14], "author": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "oauth": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13], "2": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13], "0": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "bearer": [0, 1, 3, 4, 5, 6, 7, 8], "signatur": [0, 1, 3, 4, 5, 6, 7, 8], "expir": [0, 1, 3, 4, 5, 6, 7, 8, 10], "edit": [0, 9, 11], "write": [0, 1, 3, 5, 7, 8, 14], "updat": [0, 1, 5, 7, 8, 9, 11, 13], "first": [0, 3, 11, 14], "name": [0, 3, 7, 9, 13], "last": [0, 9, 13], "biographi": 0, "birth": [0, 9], "date": [0, 6, 8, 9, 11], "format": [0, 6, 8, 9, 11], "y": [0, 6, 8, 13], "d": [0, 6, 8], "support": [0, 3, 9, 11, 13, 14, 16], "default": [0, 3, 6, 7, 8, 9, 11, 13], "date_str": 0, "correspond": [0, 13], "client": [0, 3, 9, 11, 13, 14], "mmm": 0, "do": [0, 1, 5, 6, 7, 8], "local": [0, 9, 12, 13], "e": 0, "fr": [0, 7, 13], "gl": 0, "nl": 0, "de": [0, 13], "nb": 0, "us": [0, 3, 7, 8, 9, 10, 11, 12, 13, 14], "displai": [0, 8, 9, 10, 11, 12, 13, 14, 17], "app": [0, 3, 9, 11, 12, 13, 14], "highest": [0, 4, 11], "ascent": [0, 4, 8, 9, 11], "total": [0, 3, 9, 11], "distanc": [0, 4, 8, 9, 11], "imperi": [0, 9, 11], "unit": [0, 9, 13], "elev": [0, 8, 9, 11, 13], "plot": 0, "start": [0, 6, 8, 9, 11, 13, 17], "zero": [0, 9, 11], "time": [0, 6, 8, 9, 11], "zone": 0, "unfilt": 0, "gpx": [0, 3, 8, 9, 11, 12, 13, 15], "calcul": [0, 9, 11], "speed": [0, 4, 8, 9, 11, 13], "doe": [0, 6, 7, 8, 9], "week": [0, 6, 9, 11], "mondai": [0, 6, 11], "don": 0, "t": [0, 9, 16], "match": [0, 8, 9], "sport": [0, 2, 6, 8, 9, 13], "color": [0, 5, 9, 11], "000000": 0, "stopped_speed_threshold": [0, 5], "user_id": 0, "hexadecim": 0, "when": [0, 1, 9, 10, 11, 13], "ad": [0, 9, 10, 11], "workout": [0, 2, 3, 4, 5, 6, 9, 12, 14, 15, 17], "float": [0, 8], "stop": [0, 9, 11, 13], "threshold": [0, 9, 11], "gpxpy": [0, 11, 13], "exist": [0, 6, 7, 8, 9, 11, 12, 13], "delet": [0, 3, 7, 8, 9, 10, 11], "reset": [0, 7, 9, 10, 11, 13], "given": [0, 3], "204": [0, 3, 7, 8], "paramet": [0, 3, 5, 6, 7, 8, 9, 11, 13, 14], "No": [0, 3, 7, 8, 9, 12], "multipart": [0, 3, 8], "form": [0, 3, 8], "file": [0, 1, 8, 9, 10, 11, 12, 13, 15, 17], "imag": [0, 7, 8, 9, 11, 13, 17], "extens": [0, 8, 13], "jpg": 0, "png": [0, 8, 13], "gif": 0, "part": [0, 8], "select": [0, 8, 11], "413": [0, 8], "entiti": [0, 8], "too": [0, 8], "larg": [0, 8, 11, 13], "dure": [0, 8], "size": [0, 1, 8, 9, 11, 13], "exce": [0, 8, 9], "0mb": [0, 8], "NO": [0, 3, 7, 8], "handl": [0, 11, 13, 16], "process": [0, 9, 10, 13], "patch": [0, 1, 5, 7, 8], "It": [0, 7, 9, 11, 12, 14, 16], "enabl": [0, 1, 7, 11, 13], "chang": [0, 11, 12, 13], "one": [0, 7, 8, 11], "current": [0, 9], "address": [0, 11, 13], "inform": [0, 1, 9, 11, 12, 13], "anoth": [0, 7, 11, 13], "new": [0, 7, 10, 11, 13, 14], "new_password": 0, "miss": [0, 9], "logout": [0, 9], "blacklist": [0, 10], "out": 0, "access": [0, 3, 9, 13, 14], "revok": [0, 3], "malform": 0, "other": [0, 7, 13], "reason": 0, "export": [0, 9, 10, 11, 12, 13], "return": [0, 3, 4, 7, 8, 9, 13], "creation": [0, 9, 11], "in_progress": 0, "byte": 0, "wed": 0, "mar": 0, "2023": [0, 13], "31": [0, 8, 13], "17": [0, 1, 8, 13], "file_nam": 0, "archive_rgjsr3fht295ywnqr5yp": 0, "zip": [0, 1, 8, 9, 11], "file_s": 0, "924": 0, "ongo": 0, "complet": [0, 9], "download": [0, 8, 9, 11, 13, 17], "archiv": [0, 1, 9, 10, 11, 13], "archive_rgjsr3fhr5yp": 0, "x": [0, 8, 9, 13, 14], "gzip": 0, "filenam": 0, "config": [1, 9, 13, 16], "about": [1, 9, 11, 13, 14], "admin_contact": 1, "gpx_limit_import": 1, "is_email_sending_en": 1, "is_registration_en": 1, "max_single_file_s": 1, "1048576": 1, "max_us": 1, "max_zip_file_s": 1, "10485760": 1, "map_attribut": [1, 13], "copi": [1, 13], "href": [1, 13], "www": [1, 13], "openstreetmap": [1, 9, 13], "org": [1, 13], "copyright": [1, 13], "contributor": [1, 9, 13, 15], "privacy_polici": 1, "privacy_policy_d": 1, "version": [1, 10, 11, 13], "7": [1, 8, 10, 11, 13, 14], "weather_provid": 1, "authent": [1, 2, 3, 4, 5, 7, 8, 14], "instanc": [1, 3, 9, 11, 13, 14], "integ": [1, 3, 5, 6, 7, 8], "max": [1, 7, 8, 9, 10], "number": [1, 7, 8, 9, 10, 11, 13], "singl": [1, 7, 9, 11, 13], "you": [1, 5, 6, 7, 8, 11, 12, 13], "have": [1, 5, 6, 7, 8, 9], "permiss": [1, 5, 6, 7, 8], "ping": 1, "health": 1, "check": [1, 9, 13, 16], "pong": 1, "account": [2, 7, 9, 10, 13, 15], "configur": [2, 9, 11, 13, 14], "oauth2": [2, 14], "statist": 2, "pagin": [3, 7, 8], "5": [3, 5, 6, 7, 8, 10, 11, 13], "page": [3, 7, 8, 9, 11], "fittracke": [3, 10, 11, 13, 14, 15, 17], "parti": [3, 11, 12, 14], "without": [3, 6, 7, 8, 9, 11, 12], "client_descript": 3, "client_id": [3, 14], "o22a27s2abpuoxjbxv3ujdox": 3, "issued_at": 3, "thu": 3, "juli": 3, "2022": 3, "06": [3, 6], "53": [3, 9], "import": [3, 9, 11, 13, 15], "redirect_uri": 3, "callback": [3, 14], "websit": 3, "has_next": 3, "has_prev": 3, "queri": [3, 6, 7, 8], "client_secret": 3, "secret": [3, 13, 14], "client_nam": 3, "client_uri": 3, "arrai": 3, "list": [3, 9, 12, 13], "redirect": [3, 14], "descript": [3, 10, 13], "option": [3, 9, 10, 13, 14], "client_client_id": 3, "NOT": [3, 5, 8], "int": [3, 5, 8], "by_id": 3, "all": [3, 4, 5, 6, 7, 8, 9, 11, 13], "associ": 3, "issu": [3, 12, 13], "response_typ": [3, 14], "state": [3, 14], "uniqu": [3, 14], "prevent": [3, 13, 14], "cross": [3, 11, 13, 14], "site": [3, 14], "forgeri": [3, 14], "mandatori": [3, 8, 9, 10, 13, 14], "recommend": [3, 13, 14], "code_challeng": [3, 14], "gener": [3, 9, 10, 11, 13, 14], "from": [3, 6, 8, 9, 11, 12, 14, 15], "verifi": [3, 14], "pkce": [3, 14], "code_challenge_method": [3, 14], "method": [3, 13, 14], "challeng": [3, 14], "s256": [3, 14], "authlib": [3, 13, 14], "librari": [3, 13, 14], "refresh": [3, 9], "access_token": 3, "roehv64thcg28wcewzhrnvlusoduvw8nvnhkcml57": 3, "expires_in": 3, "864000": 3, "refresh_token": 3, "nuv9cy8vqonrqkhtz5pqaq2zw7msh0mornpjr14amswd6f6i": 3, "token_typ": 3, "expires_at": 3, "1658660147": 3, "0667062": 3, "grant_typ": 3, "grant": [3, 14], "authorization_cod": [3, 14], "ar": [3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 17], "code_verifi": 3, "follow": [4, 10, 11, 13, 14, 15, 16], "averag": [4, 8, 9, 11], "farthest": [4, 9, 11], "longest": [4, 9, 11], "durat": [4, 8, 9, 11], "maximum": [4, 9, 10, 11], "non": [5, 12], "is_active_for_us": 5, "label": [5, 9], "cycl": [5, 9, 11], "transport": [5, 9, 11], "hike": [5, 9, 11], "mountain": [5, 9, 11], "bike": [5, 8, 9, 11], "run": [5, 9, 10, 11, 13, 14], "walk": [5, 9, 11], "has_workout": 5, "stat": [6, 9], "user_nam": [6, 7], "by_tim": 6, "2018": [6, 8], "2017": [6, 8], "average_spe": 6, "48": 6, "203": 6, "156": [6, 9], "15": [6, 8, 10, 11, 13], "282": [6, 9], "12341": 6, "16": [6, 8, 11, 13], "99": [6, 9], "150": 6, "178": [6, 9], "47": [6, 8, 9], "9960": 6, "95": [6, 9], "46": [6, 9], "78": 6, "613": 6, "1267": 6, "end": [6, 8], "frame": 6, "sundai": [6, 8, 11], "month": [6, 9, 11], "year": [6, 11], "by_sport": 6, "uploads_dir_s": 6, "1000": 6, "regardless": 7, "right": [7, 9, 10, 11, 13, 14], "some": [7, 8, 9, 11, 12, 13, 14], "order_bi": [7, 8], "workouts_count": 7, "par_pag": 7, "is_admin": 7, "sat": 7, "20": 7, "03": [7, 8], "per_pag": [7, 8], "per": [7, 8, 9, 13], "q": 7, "order": [7, 8, 9, 14], "sort": [7, 8, 11], "asc": [7, 8], "desc": [7, 8], "criteria": [7, 8], "detail": [7, 9, 13, 17], "jpeg": 7, "add": [7, 9, 10, 11, 12], "remov": [7, 9, 10, 11], "modifi": [7, 9, 10, 13], "new_email": 7, "reset_password": 7, "differ": [7, 9, 11], "than": [7, 9, 10], "curent": 7, "A": [7, 9, 10, 11, 13, 16], "own": [7, 11, 12], "except": [7, 13, 16], "he": 7, "": [7, 8, 9, 11, 13], "john_do": 7, "your": [7, 11, 12, 13], "02": 8, "least": 8, "ave_spe": 8, "bound": 8, "creation_d": 8, "51": 8, "descent": [8, 9, 11], "04": 8, "kjxavsturjvoah2wvcegef": 8, "map": [8, 9, 11, 12, 17], "max_alt": 8, "max_spe": 8, "min_alt": 8, "modification_d": 8, "move": [8, 9], "next_workout": 8, "note": [8, 9, 11, 13], "paus": [8, 9], "previous_workout": 8, "mon": 8, "jan": 8, "segment": [8, 9, 11], "titl": [8, 9, 11], "weather_end": 8, "weather_start": 8, "with_gpx": 8, "100": [8, 9, 11], "distance_from": 8, "minim": [8, 14], "distance_to": 8, "maxim": 8, "duration_from": 8, "h": [8, 11], "duration_to": 8, "ave_speed_from": 8, "ave_speed_to": 8, "max_speed_from": 8, "max_speed_to": 8, "quert": 8, "ani": 8, "case": [8, 11, 13], "insensit": [8, 13], "workout_short_id": 8, "57": [8, 9], "45": 8, "22": 8, "morn": 8, "short": 8, "leaflet": [8, 13], "chart_data": 8, "chart": [8, 9, 11, 13], "j": [8, 9, 13], "279": [8, 9], "latitud": 8, "5078118": 8, "longitud": 8, "1232004": 8, "63": 8, "fri": 8, "44": [8, 9], "7380": 8, "280": [8, 9], "5079733": 8, "1234538": 8, "39": 8, "segment_id": 8, "rechart": 8, "map_id": 8, "fa33f4d996844a5c73ecd1ae24456ab8": 8, "1563529507772": 8, "map_til": 8, "z": [8, 13], "tile": [8, 9, 11], "c": [8, 13], "4109": 8, "2930": 8, "subdomain": [8, 9, 13], "zoom": 8, "index": 8, "along": 8, "axi": [8, 9, 11], "xml": 8, "201": [8, 9], "doubl": 8, "quot": 8, "escap": 8, "no_gpx": 8, "uuid": [8, 9], "km": [8, 11], "second": 8, "pr": 9, "366": 9, "369": 9, "host": [9, 13], "weblat": [9, 11], "galician": [9, 11], "thank": [9, 15], "xmgz": 9, "367": 9, "spanish": [9, 11], "dutch": [9, 11], "german": [9, 11], "italian": [9, 11], "87": 9, "norwegian": [9, 11], "bokm\u00e5l": [9, 11], "36": 9, "polish": [9, 11], "358": 9, "filter": [9, 11], "359": 9, "footer": 9, "overlap": 9, "350": 9, "352": 9, "356": 9, "init": [9, 13], "357": 9, "365": 9, "yet": [9, 11, 12], "interfac": [9, 11, 12, 13], "bjornclauw": 9, "gallegonovato": 9, "gnu": 9, "ewm": 9, "jat255": 9, "contain": [9, 11, 13], "databas": [9, 11, 13, 16], "migrat": [9, 10, 13], "see": [9, 11, 12, 13, 14, 16], "upgrad": 9, "among": 9, "now": [9, 10, 11, 13], "partial": 9, "below": [9, 13], "darkski": [9, 13], "sinc": [9, 13, 14], "servic": [9, 13], "shut": [9, 13], "down": [9, 13], "march": [9, 13], "319": 9, "cli": [9, 10, 11, 13], "329": 9, "make": [9, 13], "sticki": 9, "333": 9, "338": 9, "relev": 9, "328": 9, "altitud": [9, 11], "track": [9, 12], "incorrect": 9, "b29ed7a": 9, "dashboard": 9, "250": 9, "320": 9, "323": 9, "06ba975": 9, "bcc568e": 9, "ea0ac99": 9, "a458f5f": 9, "075aeb9": 9, "60e164d": 9, "98": 9, "318": 9, "weather": [9, 11], "comradekingu": 9, "qwerty287": 9, "lavoi": 9, "mondstern": 9, "314": 9, "fail": [9, 17], "315": 9, "agre": [9, 11], "custom": [9, 11, 13], "defin": [9, 11], "review": [9, 11], "upload": [9, 10, 11, 13, 15, 17], "lastli": 9, "addit": [9, 11, 13], "mai": [9, 11, 12, 13], "301": [9, 13], "304": 9, "305": 9, "307": 9, "modal": 9, "posit": [9, 11], "297": 9, "308": 9, "310": 9, "290": 9, "294": 9, "drop": 9, "postgresql10": 9, "depend": [9, 13], "265": 9, "implement": [9, 14], "altern": 9, "visualcross": 9, "environ": [9, 10, 16], "variabl": [9, 16], "set": [9, 10, 11, 13, 14, 16], "weather_api_provid": [9, 13], "287": 9, "289": 9, "dperruso": 9, "92": 9, "c88a515": 9, "f96dcef": 9, "278": 9, "270": 9, "nederland": 9, "258": 9, "pars": [9, 13], "link": [9, 13], "area": 9, "271": 9, "273": 9, "274": 9, "test": [9, 13], "parallel": 9, "275": 9, "worker": [9, 10, 13, 16], "entri": [9, 13], "point": [9, 13], "fittrackee_work": [9, 10, 13], "command": [9, 11, 12, 13], "flask": [9, 13], "dramatiq": [9, 10, 13], "3c8d9c2": 9, "trail": [9, 11], "comma": [9, 13], "dev": 9, "264": 9, "ui": 9, "white": 9, "grai": 9, "background": 9, "266": 9, "260": 9, "261": 9, "should": [9, 13], "limit": [9, 11], "still": [9, 11, 12, 13], "need": [9, 11, 13, 14], "89": 9, "b1536fc": 9, "257": 9, "bodi": [9, 13, 14], "nginx": [9, 11, 13, 14, 16], "112": 9, "244": 9, "virtual": [9, 11], "ride": 9, "246": 9, "postgresql": [9, 13, 16], "247": 9, "microsecond": 9, "252": 9, "242": 9, "241": 9, "strength": 9, "estim": 9, "packag": [9, 13], "239": 9, "cb9d02f": 9, "88": 9, "231": 9, "236": 9, "rate": 9, "232": 9, "hidden": [9, 11], "237": 9, "212": 9, "230": 9, "problem": 9, "225": 9, "grammar": 9, "skylan0916": 9, "In": [9, 11], "execut": 9, "lower": 9, "v0": [9, 13], "postgr": [9, 16], "213": 9, "measur": 9, "ft": 9, "mi": 9, "223": 9, "icon": [9, 13], "167": 9, "162": 9, "fmstrat": 9, "210": 9, "could": 9, "staticmap_subdomain": [9, 13], "209": 9, "multipl": 9, "gorgobacka": 9, "And": 9, "detect": 9, "browser": 9, "208": 9, "card": 9, "html": 9, "attribut": [9, 13], "197": 9, "196": 9, "manag": [9, 10, 13], "tool": [9, 12, 13], "190": 9, "were": 9, "193": 9, "192": 9, "instead": [9, 11], "191": 9, "layout": 9, "includ": 9, "195": 9, "affect": [9, 11], "previous": 9, "cc4287e": 9, "docker": 9, "env": [9, 13], "offset": 9, "refacto": 9, "befor": [9, 13], "introduc": 9, "possibl": [9, 11, 12, 13], "smtp": [9, 13], "reduc": 9, "pre": 9, "requisit": 9, "To": [9, 13, 14], "180": 9, "cannot": [9, 11], "tl": [9, 13], "177": 9, "small": 9, "screen": [9, 11], "175": 9, "173": 9, "171": 9, "correctli": 9, "sent": [9, 11, 13, 14], "155": 9, "106": 9, "169": 9, "161": 9, "160": 9, "sever": [9, 11, 12, 13], "danielsiersleben": 9, "report": 9, "initi": [9, 13], "149": 9, "initialis": [9, 13], "152": 9, "autoescap": 9, "jinja": 9, "templat": 9, "151": 9, "sanit": 9, "input": 9, "serv": [9, 13], "warn": [9, 11], "launch": 9, "w": 9, "script": 9, "entrypoint": 9, "avoid": 9, "product": 9, "dotenv": 9, "146": 9, "145": 9, "model": 9, "140": 9, "fullscreen": 9, "control": [9, 11, 13], "138": 9, "135": 9, "finish": 9, "marker": 9, "134": 9, "wind": [9, 11], "direct": [9, 11], "877fa0f": 9, "calendar": [9, 11], "resolut": 9, "131": 9, "129": 9, "127": [9, 13], "legitim": 9, "uri": 9, "localhost": [9, 13], "25": [9, 13], "123": 9, "121": 9, "snowsho": [9, 11], "116": 9, "better": [9, 14], "button": 9, "graph": 9, "115": 9, "91": 9, "min": 9, "90": 9, "seem": 9, "104": 9, "switch": 9, "agplv3": 9, "licens": [9, 12, 13], "101": 9, "full": [9, 11], "develop": [9, 10, 12], "109": 9, "slow": 9, "movement": 9, "84": 9, "93": 9, "paf38": 9, "83": 9, "static": [9, 11, 13], "keep": [9, 12, 13], "default_staticmap": [9, 13], "81": 9, "remain": 9, "textarea": 9, "82": 9, "dai": [9, 10, 11, 13], "80": [9, 13], "save": [9, 11], "79": 9, "rebuild": 9, "75": 9, "same": 9, "python": [9, 13, 14], "javascript": [9, 13], "due": 9, "sqlalchemi": [9, 13, 16], "engin": [9, 13, 16], "longer": [9, 16], "database_url": [9, 13], "72": 9, "exceed": 9, "71": 9, "greater": 9, "70": 9, "less": 9, "66": 9, "64": 9, "shown": [9, 14, 17], "62": 9, "refactor": 9, "evalu": [9, 13], "purpos": [9, 13], "standard": [9, 13], "term": [9, 13], "directori": [9, 11, 13], "also": [9, 10, 11, 12, 13], "59": 9, "major": 9, "instal": [9, 12], "becom": 9, "more": [9, 10, 11, 12, 13], "easi": 9, "been": [9, 12], "renam": 9, "layer": [9, 13], "replac": [9, 13], "thunderforest": [9, 13], "outdoor": [9, 11, 12, 13], "54": 9, "simplifi": [9, 14], "redi": [9, 10, 13], "side": 9, "4c3fc34": 9, "empti": [9, 10, 13], "34614d5": 9, "spinner": 9, "load": [9, 16], "b862a77": 9, "2e1ee2c": 9, "interceptor": 9, "rout": [9, 13], "definit": 9, "weekend": 9, "40": 9, "i18n": 9, "41": 9, "show": [9, 10, 13], "mous": 9, "over": 9, "choos": [9, 11], "33": 9, "37": 9, "34": 9, "anymor": 9, "poetri": [9, 13], "pipenv": 9, "28": 9, "26": 9, "tooltip": [9, 11], "montain": 9, "even": [9, 11], "enter": [9, 11], "kei": [9, 11, 13], "farest": 9, "search": 9, "owner": [9, 11, 13], "view": [9, 11, 13], "usag": [10, 13], "arg": [10, 13], "help": [10, 13], "exit": [10, 13], "deprec": 10, "next": [10, 11], "fittrackee_set_admin": 10, "fittrackee_upgrade_db": 10, "appli": 10, "relat": [10, 11, 13, 14], "argument": 10, "random": 10, "incomplet": 10, "store": [11, 12, 14], "For": [11, 13, 14], "kind": 11, "encrypt": 11, "With": [11, 13], "open": [11, 12, 13], "street": [11, 12], "electr": 11, "row": 11, "ski": 11, "alpin": 11, "countri": 11, "overridden": 11, "which": 11, "up": [11, 12], "metric": 11, "system": [11, 13], "origin": 11, "particular": 11, "visual": [11, 13], "sourc": 11, "arrow": 11, "indic": 11, "come": 11, "period": [11, 13], "dropdown": 11, "recent": 11, "On": [11, 13], "line": [11, 12, 13], "between": 11, "hide": 11, "minimum": 11, "exclud": 11, "extrem": 11, "gp": 11, "overrid": 11, "appear": 11, "third": [11, 12, 14], "individu": 11, "necessari": [11, 13], "like": [11, 13], "markdown": 11, "syntax": 11, "adapt": [11, 13], "discours": 11, "lock": 11, "via": 11, "french": 11, "releas": [11, 13], "mobil": 12, "them": 12, "android": 12, "exhaust": 12, "runner": 12, "gpl": 12, "v3": 12, "forrunn": 12, "opentrack": 12, "apach": 12, "fitotrack": 12, "under": [12, 13], "heavi": [12, 13], "featur": [12, 13], "unstabl": [12, 13], "document": [12, 13, 14, 16], "troubleshoot": 12, "written": 13, "typescript": 13, "staticmap": 13, "coordin": 13, "task": 13, "queue": 13, "vue3": 13, "vuex": 13, "logo": 13, "made": 13, "freepik": 13, "flaticon": 13, "fork": 13, "awesom": 13, "node": 13, "yarn": 13, "compos": 13, "step": 13, "describ": 13, "linux": 13, "debian": 13, "arch": 13, "o": 13, "encount": 13, "makefil": 13, "thei": [13, 14], "flask_app": 13, "modul": 13, "pwd": 13, "__main__": 13, "py": 13, "els": 13, "port": 13, "5000": 13, "app_set": 13, "productionconfig": 13, "app_secret_kei": 13, "strong": 13, "jwt": 13, "app_work": 13, "spawn": 13, "gunicorn": [13, 16], "app_log": 13, "path": [13, 16], "upload_fold": [13, 16], "absolut": [13, 16], "where": 13, "folder": 13, "application_directori": 13, "virtualenv": 13, "5432": 13, "begin": 13, "database_disable_pool": 13, "pool": 13, "directli": 13, "ui_url": 13, "email_url": [13, 16], "sender_email": 13, "sender": 13, "redis_url": 13, "workers_process": 13, "api_rate_limit": 13, "300": 13, "minut": 13, "tile_server_url": 13, "b": 13, "osm": 13, "franc": 13, "target": 13, "_blank": 13, "rel": 13, "noopen": 13, "noreferr": 13, "komoot": 13, "otherwis": 13, "weather_api_kei": 13, "weather_api": 13, "vue_app_api_url": 13, "unencrypt": 13, "ssl": 13, "465": 13, "starttl": 13, "587": 13, "office365": 13, "work": 13, "omit": 13, "old": 13, "adress": 13, "notif": 13, "readi": 13, "apikei": 13, "xxxx": 13, "expect": 13, "osmfr": 13, "fond": 13, "cart": 13, "par": 13, "mention": 13, "legal": 13, "nofollow": 13, "sou": 13, "nbsp": 13, "creativecommon": 13, "sa": 13, "licenc": 13, "cc": 13, "BY": 13, "chosen": 13, "randomli": 13, "base": 13, "ip": 13, "fix": 13, "window": 13, "strategi": 13, "subject": 13, "asset": 13, "notat": 13, "separ": [13, 14], "hour": 13, "mainten": 13, "diagnost": 13, "util": 13, "commmand": 13, "clear": 13, "specif": 13, "enumer": 13, "histor": 13, "hourli": 13, "discontinu": 13, "wai": 13, "pip": 13, "WITH": 13, "schema": 13, "privileg": 13, "nano": 13, "ftcli": 13, "db": 13, "systemd": 13, "project": 13, "clone": 13, "repo": 13, "git": 13, "github": 13, "samr1": 13, "cd": 13, "vue": 13, "3000": 13, "wget": 13, "tar": 13, "gz": 13, "xzf": 13, "mv": 13, "sql": 13, "backup": 13, "pg_dump": 13, "u": 13, "changelog": 13, "restart": 13, "pull": 13, "repositori": 13, "overwrit": 13, "cp": 13, "r": 13, "There": 13, "One": 13, "proxi": [13, 14], "pass": 13, "oper": 13, "network": 13, "startlimitintervalsec": 13, "simpl": 13, "alwai": 13, "restartsec": 13, "standardoutput": 13, "syslog": 13, "standarderror": 13, "syslogidentifi": 13, "workingdirectori": 13, "home": 13, "execstart": 13, "venv": 13, "bin": 13, "create_app": 13, "logfil": 13, "wantedbi": 13, "multi": 13, "higher": 13, "timeout": [13, 16], "its": 13, "OF": 13, "listen": 13, "443": 13, "http2": 13, "server_nam": 13, "ssl_certif": 13, "fullchain": 13, "pem": 13, "ssl_certificate_kei": 13, "privkei": 13, "how": 13, "1mb": 13, "larger": [13, 16], "ll": 13, "uncom": 13, "want": 13, "client_max_body_s": [13, 16], "1m": 13, "proxy_pass": 13, "proxy_redirect": 13, "proxy_set_head": [13, 14], "real": 13, "remote_addr": 13, "forward": [13, 14], "proxy_add_x_forwarded_for": 13, "proto": [13, 14], "scheme": [13, 14], "request_uri": 13, "build": 13, "8025": 13, "mailhog": 13, "shell": 13, "insid": 13, "fittrackee_cli": 13, "lint": 13, "fittrackee_ynh": 13, "rest": 14, "whose": 14, "most": 14, "interact": 14, "tab": 14, "exchang": 14, "secur": 14, "3rd": 14, "fittrackee_host": 14, "space": 14, "3aread": 14, "3awrit": 14, "so": 14, "fetch": 14, "behind": 14, "aaron": 14, "parecki": 14, "oauthlib": 14, "session": 14, "strava": 15, "fit": 15, "exc": 16, "nosuchmoduleerror": 16, "plugin": 16, "dialect": 16, "invalidemailurlschem": 16, "increas": 16, "critic": 16}, "objects": {"": [[0, 0, 1, "post--api-auth-account-confirm", "/api/auth/account/confirm"], [0, 1, 1, "get--api-auth-account-export", "/api/auth/account/export"], [0, 1, 1, "get--api-auth-account-export-(string-file_name)", "/api/auth/account/export/(string:file_name)"], [0, 0, 1, "post--api-auth-account-export-request", "/api/auth/account/export/request"], [0, 0, 1, "post--api-auth-account-privacy-policy", "/api/auth/account/privacy-policy"], [0, 0, 1, "post--api-auth-account-resend-confirmation", "/api/auth/account/resend-confirmation"], [0, 0, 1, "post--api-auth-email-update", "/api/auth/email/update"], [0, 0, 1, "post--api-auth-login", "/api/auth/login"], [0, 0, 1, "post--api-auth-logout", "/api/auth/logout"], [0, 0, 1, "post--api-auth-password-reset-request", "/api/auth/password/reset-request"], [0, 0, 1, "post--api-auth-password-update", "/api/auth/password/update"], [0, 2, 1, "delete--api-auth-picture", "/api/auth/picture"], [0, 0, 1, "post--api-auth-picture", "/api/auth/picture"], [0, 1, 1, "get--api-auth-profile", "/api/auth/profile"], [0, 0, 1, "post--api-auth-profile-edit", "/api/auth/profile/edit"], [0, 3, 1, "patch--api-auth-profile-edit-account", "/api/auth/profile/edit/account"], [0, 0, 1, "post--api-auth-profile-edit-preferences", "/api/auth/profile/edit/preferences"], [0, 0, 1, "post--api-auth-profile-edit-sports", "/api/auth/profile/edit/sports"], [0, 2, 1, "delete--api-auth-profile-reset-sports-(sport_id)", "/api/auth/profile/reset/sports/(sport_id)"], [0, 0, 1, "post--api-auth-register", "/api/auth/register"], [1, 1, 1, "get--api-config", "/api/config"], [1, 3, 1, "patch--api-config", "/api/config"], [3, 1, 1, "get--api-oauth-apps", "/api/oauth/apps"], [3, 0, 1, "post--api-oauth-apps", "/api/oauth/apps"], [3, 2, 1, "delete--api-oauth-apps-(int-client_id)", "/api/oauth/apps/(int:client_id)"], [3, 1, 1, "get--api-oauth-apps-(int-client_id)-by_id", "/api/oauth/apps/(int:client_id)/by_id"], [3, 0, 1, "post--api-oauth-apps-(int-client_id)-revoke", "/api/oauth/apps/(int:client_id)/revoke"], [3, 1, 1, "get--api-oauth-apps-(string-client_client_id)", "/api/oauth/apps/(string:client_client_id)"], [3, 0, 1, "post--api-oauth-authorize", "/api/oauth/authorize"], [3, 0, 1, "post--api-oauth-revoke", "/api/oauth/revoke"], [3, 0, 1, "post--api-oauth-token", "/api/oauth/token"], [1, 1, 1, "get--api-ping", "/api/ping"], [4, 1, 1, "get--api-records", "/api/records"], [5, 1, 1, "get--api-sports", "/api/sports"], [5, 1, 1, "get--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [5, 3, 1, "patch--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [6, 1, 1, "get--api-stats-(user_name)-by_sport", "/api/stats/(user_name)/by_sport"], [6, 1, 1, "get--api-stats-(user_name)-by_time", "/api/stats/(user_name)/by_time"], [6, 1, 1, "get--api-stats-all", "/api/stats/all"], [7, 1, 1, "get--api-users", "/api/users"], [7, 2, 1, "delete--api-users-(user_name)", "/api/users/(user_name)"], [7, 1, 1, "get--api-users-(user_name)", "/api/users/(user_name)"], [7, 3, 1, "patch--api-users-(user_name)", "/api/users/(user_name)"], [7, 1, 1, "get--api-users-(user_name)-picture", "/api/users/(user_name)/picture"], [8, 1, 1, "get--api-workouts", "/api/workouts"], [8, 0, 1, "post--api-workouts", "/api/workouts"], [8, 2, 1, "delete--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 3, 1, "patch--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-chart_data", "/api/workouts/(string:workout_short_id)/chart_data"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/chart_data/segment/(int:segment_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx", "/api/workouts/(string:workout_short_id)/gpx"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx-download", "/api/workouts/(string:workout_short_id)/gpx/download"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id)"], [8, 1, 1, "get--api-workouts-map-(map_id)", "/api/workouts/map/(map_id)"], [8, 0, 1, "post--api-workouts-no_gpx", "/api/workouts/no_gpx"], [13, 4, 1, "-", "API_RATE_LIMITS"], [13, 4, 1, "-", "APP_LOG"], [13, 4, 1, "-", "APP_SECRET_KEY"], [13, 4, 1, "-", "APP_SETTINGS"], [13, 4, 1, "-", "APP_WORKERS"], [13, 4, 1, "-", "DATABASE_DISABLE_POOLING"], [13, 4, 1, "-", "DATABASE_URL"], [13, 4, 1, "-", "DEFAULT_STATICMAP"], [13, 4, 1, "-", "EMAIL_URL"], [13, 4, 1, "-", "FLASK_APP"], [13, 4, 1, "-", "HOST"], [13, 4, 1, "-", "MAP_ATTRIBUTION"], [13, 4, 1, "-", "PORT"], [13, 4, 1, "-", "REDIS_URL"], [13, 4, 1, "-", "SENDER_EMAIL"], [13, 4, 1, "-", "STATICMAP_SUBDOMAINS"], [13, 4, 1, "-", "TILE_SERVER_URL"], [13, 4, 1, "-", "UI_URL"], [13, 4, 1, "-", "UPLOAD_FOLDER"], [13, 4, 1, "-", "VUE_APP_API_URL"], [13, 4, 1, "-", "WEATHER_API_KEY"], [13, 4, 1, "envvar-WEATHER_API_PROVIDER", "WEATHER_API_PROVIDER \ud83c\udd95"], [13, 4, 1, "-", "WORKERS_PROCESSES"]], "/api/workouts/map_tile/(s)/(z)/(x)/(y)": [[8, 1, 1, "get--api-workouts-map_tile-(s)-(z)-(x)-(y).png", "png"]]}, "objtypes": {"0": "http:post", "1": "http:get", "2": "http:delete", "3": "http:patch", "4": "std:envvar"}, "objnames": {"0": ["http", "post", "HTTP post"], "1": ["http", "get", "HTTP get"], "2": ["http", "delete", "HTTP delete"], "3": ["http", "patch", "HTTP patch"], "4": ["std", "envvar", "environment variable"]}, "titleterms": {"authent": 0, "account": [0, 11], "configur": 1, "api": [2, 13], "document": [2, 9], "endpoint": 2, "oauth2": [3, 10], "record": 4, "sport": [5, 11], "statist": [6, 9, 11], "user": [7, 10, 11], "workout": [8, 11, 16], "chang": 9, "log": 9, "version": 9, "0": [9, 14], "7": 9, "17": 9, "2023": 9, "06": 9, "03": 9, "translat": [9, 11], "16": 9, "05": 9, "29": 9, "featur": [9, 11], "enhanc": 9, "bug": 9, "fix": 9, "15": 9, "04": 9, "12": 9, "misc": 9, "14": 9, "08": 9, "13": 9, "02": 9, "11": 9, "2022": 9, "31": 9, "10": 9, "21": 9, "9": 9, "8": 9, "30": 9, "27": 9, "6": 9, "09": 9, "5": 9, "4": 9, "3": 9, "01": 9, "2": [9, 14], "1": 9, "19": 9, "issu": 9, "close": 9, "pull": 9, "request": 9, "07": 9, "22": 9, "24": 9, "23": 9, "secur": 9, "new": 9, "2021": 9, "2020": 9, "fittracke": [9, 12, 16], "pypi": [9, 13], "administr": [9, 11, 16], "improv": 9, "minor": 9, "avail": 9, "french": 9, "2019": 9, "first": 9, "releas": 9, "2018": 9, "command": 10, "line": 10, "interfac": 10, "databas": 10, "ftcli": 10, "db": 10, "drop": 10, "upgrad": [10, 13], "clean": 10, "clean_arch": 10, "clean_token": 10, "creat": 10, "export_arch": 10, "updat": 10, "prefer": 11, "applic": 11, "screenshot": 11, "dashboard": 11, "detail": [11, 16], "list": 11, "tabl": 12, "content": 12, "instal": 13, "prerequisit": 13, "environ": 13, "variabl": 13, "email": 13, "map": [13, 16], "tile": 13, "server": 13, "rate": 13, "limit": 13, "weather": 13, "data": 13, "from": 13, "sourc": 13, "dev": 13, "product": 13, "prod": 13, "deploy": 13, "docker": 13, "develop": 13, "yunohost": 13, "oauth": 14, "scope": 14, "flow": 14, "resourc": 14, "third": 15, "parti": 15, "tool": 15, "fail": 16, "start": 16, "imag": 16, "ar": 16, "displai": 16, "i": 16, "shown": 16, "upload": 16, "download": 16, "file": 16, "troubleshoot": 17}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"Authentication and account": [[0, "authentication-and-account"]], "Configuration": [[1, "configuration"]], "API documentation": [[2, "api-documentation"]], "Endpoints:": [[2, null]], "OAuth2": [[3, "oauth2"], [10, "oauth2"]], "Records": [[4, "records"]], "Sports": [[5, "sports"], [11, "sports"]], "Statistics": [[6, "statistics"], [11, "statistics"]], "Users": [[7, "users"], [10, "users"], [11, "users"]], "Workouts": [[8, "workouts"], [11, "workouts"]], "Change log": [[9, "change-log"]], "Version 0.7.17 (2023/06/03)": [[9, "version-0-7-17-2023-06-03"]], "Translations": [[9, "translations"], [9, "id1"], [9, "id4"], [9, "id6"], [9, "id9"], [9, "id10"], [9, "id13"], [9, "id15"], [9, "id17"], [9, "id18"], [9, "id21"], [9, "id23"], [9, "id26"], [9, "id28"], [9, "id31"], [9, "id32"], [9, "id34"], [9, "id37"], [9, "id50"], [11, "translations"]], "Version 0.7.16 (2023/05/29)": [[9, "version-0-7-16-2023-05-29"]], "Features and enhancements": [[9, "features-and-enhancements"], [9, "id2"], [9, "id7"], [9, "id12"], [9, "id14"], [9, "id16"], [9, "id19"], [9, "id29"], [9, "id35"]], "Bugs Fixed": [[9, "bugs-fixed"], [9, "id3"], [9, "id5"], [9, "id8"], [9, "id20"], [9, "id25"], [9, "id27"], [9, "id30"], [9, "id33"], [9, "id36"], [9, "id38"], [9, "id41"], [9, "id44"], [9, "id46"], [9, "id49"], [9, "id52"], [9, "id55"], [9, "id60"], [9, "id62"], [9, "id64"], [9, "id66"], [9, "id69"], [9, "id71"], [9, "id77"], [9, "id80"], [9, "id82"], [9, "id84"], [9, "id91"], [9, "id96"], [9, "id98"], [9, "id100"], [9, "id103"], [9, "id105"], [9, "id107"], [9, "id111"], [9, "id121"], [9, "id124"], [9, "id126"], [9, "id129"], [9, "id136"]], "Version 0.7.15 (2023/04/12)": [[9, "version-0-7-15-2023-04-12"]], "Misc": [[9, "misc"], [9, "id11"], [9, "id22"], [9, "id24"], [9, "id39"], [9, "id53"], [9, "id56"], [9, "id73"], [9, "id75"], [9, "id92"], [9, "id101"], [9, "id108"], [9, "id112"], [9, "id119"], [9, "id130"], [9, "id133"]], "Version 0.7.14 (2023/03/08)": [[9, "version-0-7-14-2023-03-08"]], "Version 0.7.13 (2023/03/05)": [[9, "version-0-7-13-2023-03-05"]], "Version 0.7.12 (2023/02/16)": [[9, "version-0-7-12-2023-02-16"]], "Version 0.7.11 (2022/12/31)": [[9, "version-0-7-11-2022-12-31"]], "Version 0.7.10 (2022/12/21)": [[9, "version-0-7-10-2022-12-21"]], "Version 0.7.9 (2022/12/11)": [[9, "version-0-7-9-2022-12-11"]], "Version 0.7.8 (2022/11/30)": [[9, "version-0-7-8-2022-11-30"]], "Version 0.7.7 (2022/11/27)": [[9, "version-0-7-7-2022-11-27"]], "Version 0.7.6 (2022/11/09)": [[9, "version-0-7-6-2022-11-09"]], "Version 0.7.5 (2022/11/09)": [[9, "version-0-7-5-2022-11-09"]], "Version 0.7.4 (2022/11/05)": [[9, "version-0-7-4-2022-11-05"]], "Documentation": [[9, "documentation"]], "Version 0.7.3 (2022/11/01)": [[9, "version-0-7-3-2022-11-01"]], "Version 0.7.2 (2022/09/21)": [[9, "version-0-7-2-2022-09-21"]], "Version 0.7.1 (2022/09/21)": [[9, "version-0-7-1-2022-09-21"]], "Version 0.7.0 (2022/09/19)": [[9, "version-0-7-0-2022-09-19"]], "Version 0.6.12 (2022/09/14)": [[9, "version-0-6-12-2022-09-14"]], "Issues Closed": [[9, "issues-closed"], [9, "id40"], [9, "id43"], [9, "id47"], [9, "id51"], [9, "id54"], [9, "id57"], [9, "id59"], [9, "id63"], [9, "id65"], [9, "id67"], [9, "id72"], [9, "id76"], [9, "id79"], [9, "id81"], [9, "id83"], [9, "id85"], [9, "id87"], [9, "id89"], [9, "id94"], [9, "id97"], [9, "id99"], [9, "id102"], [9, "id104"], [9, "id106"], [9, "id109"], [9, "id113"], [9, "id115"], [9, "id117"], [9, "id120"], [9, "id122"], [9, "id125"], [9, "id127"], [9, "id131"], [9, "id134"], [9, "id137"]], "Pull Requests": [[9, "pull-requests"], [9, "id42"], [9, "id45"], [9, "id61"], [9, "id70"], [9, "id74"], [9, "id78"], [9, "id93"]], "Version 0.6.11 (2022/07/27)": [[9, "version-0-6-11-2022-07-27"]], "Features": [[9, "features"], [9, "id48"], [9, "id58"], [9, "id68"], [11, "features"]], "Version 0.6.10 (2022/07/13)": [[9, "version-0-6-10-2022-07-13"]], "Version 0.6.9 (2022/07/03)": [[9, "version-0-6-9-2022-07-03"]], "Version 0.6.8 (2022/06/22)": [[9, "version-0-6-8-2022-06-22"]], "Version 0.6.7 (2022/06/11)": [[9, "version-0-6-7-2022-06-11"]], "Version 0.6.6 (2022/05/29)": [[9, "version-0-6-6-2022-05-29"]], "Version 0.6.5 (2022/04/24)": [[9, "version-0-6-5-2022-04-24"]], "Version 0.6.4 (2022/04/23)": [[9, "version-0-6-4-2022-04-23"]], "Version 0.6.3 (2022/04/09)": [[9, "version-0-6-3-2022-04-09"]], "Version 0.6.2 (2022/04/03)": [[9, "version-0-6-2-2022-04-03"]], "Version 0.6.1 (2022/03/27)": [[9, "version-0-6-1-2022-03-27"]], "Version 0.6.0 (2022/03/27)": [[9, "version-0-6-0-2022-03-27"]], "Version 0.5.7 (2022/02/13)": [[9, "version-0-5-7-2022-02-13"]], "Security": [[9, "security"]], "Version 0.5.6 (2022/02/05)": [[9, "version-0-5-6-2022-02-05"]], "Version 0.5.5 (2022/01/19)": [[9, "version-0-5-5-2022-01-19"]], "New Features": [[9, "new-features"], [9, "id86"], [9, "id88"], [9, "id90"], [9, "id95"], [9, "id110"], [9, "id114"], [9, "id116"], [9, "id118"], [9, "id123"], [9, "id128"], [9, "id132"], [9, "id135"], [9, "id138"]], "Version 0.5.4 (2022/01/01)": [[9, "version-0-5-4-2022-01-01"]], "Version 0.5.3 (2022/01/01)": [[9, "version-0-5-3-2022-01-01"]], "Version 0.5.2 (2021/12/19)": [[9, "version-0-5-2-2021-12-19"]], "Version 0.5.1 (2021/11/30)": [[9, "version-0-5-1-2021-11-30"]], "Version 0.5.0 (2021/11/14)": [[9, "version-0-5-0-2021-11-14"]], "Version 0.4.9 (2021/07/16)": [[9, "version-0-4-9-2021-07-16"]], "Version 0.4.8 (2021/07/03)": [[9, "version-0-4-8-2021-07-03"]], "Version 0.4.7 (2021/04/07)": [[9, "version-0-4-7-2021-04-07"]], "Version 0.4.6 (2021/02/21)": [[9, "version-0-4-6-2021-02-21"]], "Version 0.4.5 (2021/02/17)": [[9, "version-0-4-5-2021-02-17"]], "Version 0.4.4 (2021/01/31)": [[9, "version-0-4-4-2021-01-31"]], "Version 0.4.3 (2021/01/10)": [[9, "version-0-4-3-2021-01-10"]], "Version 0.4.2 (2021/01/03)": [[9, "version-0-4-2-2021-01-03"]], "Version 0.4.1 (2020/12/31)": [[9, "version-0-4-1-2020-12-31"]], "Version 0.4.0 - FitTrackee on PyPI (2020/09/19)": [[9, "version-0-4-0-fittrackee-on-pypi-2020-09-19"]], "Version 0.3.0 - Administration (2020/07/15)": [[9, "version-0-3-0-administration-2020-07-15"]], "Version 0.2.5 - Fix and improvements (2020/01/31)": [[9, "version-0-2-5-fix-and-improvements-2020-01-31"]], "Version 0.2.4 - Minor fix (2020/01/30)": [[9, "version-0-2-4-minor-fix-2020-01-30"]], "Version 0.2.3 - FitTrackee available in French (2019/12/29)": [[9, "version-0-2-3-fittrackee-available-in-french-2019-12-29"]], "Version 0.2.2 - Statistics fix (2019/09/23)": [[9, "version-0-2-2-statistics-fix-2019-09-23"]], "Version 0.2.1 - Fix and improvements (2019/09/01)": [[9, "version-0-2-1-fix-and-improvements-2019-09-01"]], "Version 0.2.0 - Statistics (2019/07/07)": [[9, "version-0-2-0-statistics-2019-07-07"]], "Version 0.1.1 - Fix and improvements (2019/02/07)": [[9, "version-0-1-1-fix-and-improvements-2019-02-07"]], "Version 0.1.0 - First release \ud83c\udf89 (2018-07-04)": [[9, "version-0-1-0-first-release-2018-07-04"]], "Command line interface": [[10, "command-line-interface"]], "Database": [[10, "database"]], "ftcli db drop": [[10, "ftcli-db-drop"]], "ftcli db upgrade": [[10, "ftcli-db-upgrade"]], "ftcli oauth2 clean": [[10, "ftcli-oauth2-clean"]], "ftcli users clean_archives": [[10, "ftcli-users-clean-archives"]], "ftcli users clean_tokens": [[10, "ftcli-users-clean-tokens"]], "ftcli users create": [[10, "ftcli-users-create"]], "ftcli users export_archives": [[10, "ftcli-users-export-archives"]], "ftcli users update": [[10, "ftcli-users-update"]], "Account & preferences": [[11, "account-preferences"]], "Administration": [[11, "administration"], [11, "id1"]], "Application": [[11, "application"]], "Screenshots": [[11, "screenshots"]], "Dashboard": [[11, "dashboard"]], "Workout detail": [[11, "workout-detail"]], "Workouts list": [[11, "workouts-list"]], "FitTrackee": [[12, "fittrackee"]], "Table of contents": [[12, "table-of-contents"]], "Installation": [[13, "installation"], [13, "id2"], [13, "id6"]], "Prerequisites": [[13, "prerequisites"]], "Environment variables": [[13, "environment-variables"]], "Emails": [[13, "emails"]], "Map tile server": [[13, "map-tile-server"]], "API rate limits": [[13, "api-rate-limits"]], "Weather data": [[13, "weather-data"]], "From PyPI": [[13, "from-pypi"], [13, "id3"]], "From sources": [[13, "from-sources"], [13, "id4"]], "Dev environment": [[13, "dev-environment"], [13, "id5"]], "Production environment": [[13, "production-environment"]], "Upgrade": [[13, "upgrade"]], "Prod environment": [[13, "prod-environment"]], "Deployment": [[13, "deployment"]], "Docker": [[13, "docker"]], "Development": [[13, "development"]], "Yunohost": [[13, "yunohost"]], "OAuth 2.0": [[14, "oauth-2-0"]], "Scopes": [[14, "scopes"]], "Flow": [[14, "flow"]], "Resources": [[14, "resources"]], "Third-party tools": [[15, "third-party-tools"]], "Administrator": [[16, "administrator"]], "FitTrackee fails to start": [[16, "fittrackee-fails-to-start"]], "Map images are not displayed but map is shown in Workout detail": [[16, "map-images-are-not-displayed-but-map-is-shown-in-workout-detail"]], "Failed to upload or download files": [[16, "failed-to-upload-or-download-files"]], "Troubleshooting": [[17, "troubleshooting"]]}, "indexentries": {"api_rate_limits": [[13, "envvar-API_RATE_LIMITS"]], "app_log": [[13, "envvar-APP_LOG"]], "app_secret_key": [[13, "envvar-APP_SECRET_KEY"]], "app_settings": [[13, "envvar-APP_SETTINGS"]], "app_workers": [[13, "envvar-APP_WORKERS"]], "database_disable_pooling": [[13, "envvar-DATABASE_DISABLE_POOLING"]], "database_url": [[13, "envvar-DATABASE_URL"]], "default_staticmap": [[13, "envvar-DEFAULT_STATICMAP"]], "email_url": [[13, "envvar-EMAIL_URL"]], "flask_app": [[13, "envvar-FLASK_APP"]], "host": [[13, "envvar-HOST"]], "map_attribution": [[13, "envvar-MAP_ATTRIBUTION"]], "port": [[13, "envvar-PORT"]], "redis_url": [[13, "envvar-REDIS_URL"]], "sender_email": [[13, "envvar-SENDER_EMAIL"]], "staticmap_subdomains": [[13, "envvar-STATICMAP_SUBDOMAINS"]], "tile_server_url": [[13, "envvar-TILE_SERVER_URL"]], "ui_url": [[13, "envvar-UI_URL"]], "upload_folder": [[13, "envvar-UPLOAD_FOLDER"]], "vue_app_api_url": [[13, "envvar-VUE_APP_API_URL"]], "weather_api_key": [[13, "envvar-WEATHER_API_KEY"]], "weather_api_provider \ud83c\udd95": [[13, "envvar-WEATHER_API_PROVIDER"]], "workers_processes": [[13, "envvar-WORKERS_PROCESSES"]], "environment variable": [[13, "envvar-API_RATE_LIMITS"], [13, "envvar-APP_LOG"], [13, "envvar-APP_SECRET_KEY"], [13, "envvar-APP_SETTINGS"], [13, "envvar-APP_WORKERS"], [13, "envvar-DATABASE_DISABLE_POOLING"], [13, "envvar-DATABASE_URL"], [13, "envvar-DEFAULT_STATICMAP"], [13, "envvar-EMAIL_URL"], [13, "envvar-FLASK_APP"], [13, "envvar-HOST"], [13, "envvar-MAP_ATTRIBUTION"], [13, "envvar-PORT"], [13, "envvar-REDIS_URL"], [13, "envvar-SENDER_EMAIL"], [13, "envvar-STATICMAP_SUBDOMAINS"], [13, "envvar-TILE_SERVER_URL"], [13, "envvar-UI_URL"], [13, "envvar-UPLOAD_FOLDER"], [13, "envvar-VUE_APP_API_URL"], [13, "envvar-WEATHER_API_KEY"], [13, "envvar-WEATHER_API_PROVIDER"], [13, "envvar-WORKERS_PROCESSES"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["api/auth", "api/configuration", "api/index", "api/oauth2", "api/records", "api/sports", "api/stats", "api/users", "api/workouts", "changelog", "cli", "features", "index", "installation", "oauth", "third_party_tools", "troubleshooting/administrator", "troubleshooting/index"], "filenames": ["api/auth.rst", "api/configuration.rst", "api/index.rst", "api/oauth2.rst", "api/records.rst", "api/sports.rst", "api/stats.rst", "api/users.rst", "api/workouts.rst", "changelog.md", "cli.rst", "features.rst", "index.rst", "installation.rst", "oauth.rst", "third_party_tools.rst", "troubleshooting/administrator.rst", "troubleshooting/index.rst"], "titles": ["Authentication and account", "Configuration", "API documentation", "OAuth2", "Records", "Sports", "Statistics", "Users", "Workouts", "Change log", "Command line interface", "Features", "FitTrackee", "Installation", "OAuth 2.0", "Third-party tools", "Administrator", "Troubleshooting"], "terms": {"post": [0, 3, 8, 14], "api": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14], "auth": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "regist": [0, 1, 9, 11, 13], "user": [0, 1, 2, 3, 4, 5, 6, 8, 9, 13, 14], "send": [0, 7, 9, 11, 13], "confirm": [0, 3, 9, 11, 13], "email": [0, 1, 7, 9, 10, 11, 16], "The": [0, 9, 10, 11, 13, 14], "newli": [0, 10, 13], "creat": [0, 3, 8, 9, 11, 13, 14], "i": [0, 1, 3, 8, 9, 10, 11, 12, 13, 14, 17], "inact": [0, 7, 11, 13], "must": [0, 1, 3, 5, 7, 8, 9, 11, 13, 14, 16], "hi": [0, 7, 9, 11], "activ": [0, 5, 7, 9, 10, 11, 12, 13], "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "request": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14], "http": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "1": [0, 1, 3, 4, 5, 6, 7, 8, 11, 13], "content": [0, 1, 3, 4, 5, 6, 7, 8, 9], "type": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "applic": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "json": [0, 1, 3, 4, 5, 6, 7, 8, 11], "respons": [0, 1, 3, 4, 5, 6, 7, 8], "success": [0, 1, 3, 4, 5, 6, 7, 8], "200": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "statu": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11], "error": [0, 1, 3, 5, 7, 8, 9, 11, 13, 16], "registr": [0, 1, 9, 10, 11, 13, 14], "400": [0, 1, 3, 5, 7, 8], "bad": [0, 1, 3, 5, 7, 8], "messag": [0, 1, 3, 8, 9, 10, 11, 13], "valid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13, 16], "provid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16], "n": 0, "object": [0, 1, 5, 7, 8], "usernam": [0, 6, 7, 9, 10, 13], "string": [0, 1, 3, 5, 6, 7, 8, 13, 14], "3": [0, 5, 6, 7, 8, 11, 13], "30": [0, 6], "charact": [0, 9], "requir": [0, 9, 13, 14], "password": [0, 7, 9, 10, 11, 13], "8": [0, 8, 11, 13], "lang": [0, 9], "languag": [0, 7, 9, 11], "prefer": [0, 7, 9], "invalid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13], "fallback": 0, "en": [0, 7], "english": [0, 9, 11], "accepted_polici": 0, "boolean": [0, 1, 3, 7, 10], "true": [0, 1, 3, 5, 7, 9, 13], "accept": 0, "privaci": [0, 1, 9, 11], "polici": [0, 1, 9, 11], "code": [0, 1, 3, 4, 5, 6, 7, 8, 9, 14], "ok": [0, 1, 3, 4, 5, 6, 7, 8], "payload": [0, 1, 3, 5, 7, 8], "sorri": 0, "alreadi": [0, 10], "taken": 0, "you": [0, 1, 5, 6, 7, 8, 11, 12, 13], "agre": [0, 9, 11], "onli": [0, 3, 7, 8, 9, 10, 11, 13, 14], "alphanumer": [0, 9], "underscor": 0, "_": [0, 9], "allow": [0, 1, 8, 9, 10, 11, 12, 13, 14], "403": [0, 1, 5, 6, 7, 8], "forbidden": [0, 1, 5, 6, 7, 8], "disabl": [0, 9, 10, 11, 13], "500": [0, 1, 5, 7, 8, 9], "intern": [0, 1, 5, 7, 8], "server": [0, 1, 5, 7, 8, 9, 11, 12], "pleas": [0, 1, 3, 4, 5, 6, 7, 8, 9], "try": [0, 5, 7, 8], "again": [0, 1, 3, 4, 5, 6, 7, 8], "contact": [0, 1, 5, 7, 8, 11], "administr": [0, 1, 5, 7, 8, 14, 17], "after": [0, 3, 9, 11, 13, 14], "auth_token": 0, "web": [0, 12, 13, 14], "token": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 14], "resend": 0, "instruct": [0, 9, 11, 13], "If": [0, 3, 11, 13, 14], "thi": [0, 3, 8, 9, 10, 11, 12, 13], "endpoint": [0, 1, 3, 9, 13, 14], "avail": [0, 4, 10, 11, 13, 14, 15], "resent": 0, "404": [0, 3, 5, 6, 7, 8, 9], "Not": [0, 3, 5, 6, 7, 8], "found": [0, 3, 5, 6, 7, 8, 9], "url": [0, 3, 9, 13, 14, 16], "wa": [0, 9], "login": 0, "an": [0, 1, 3, 5, 7, 9, 11, 13, 14, 16], "can": [0, 7, 9, 10, 11, 12, 13, 14, 16], "log": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13, 16], "successfulli": 0, "401": [0, 1, 3, 4, 5, 6, 7, 8], "unauthor": [0, 1, 3, 4, 5, 6, 7, 8], "credenti": [0, 13], "get": [0, 1, 3, 4, 5, 6, 7, 8, 14], "profil": [0, 3, 9, 14], "info": [0, 9, 11], "scope": [0, 1, 3, 4, 5, 6, 7, 8], "read": [0, 3, 4, 5, 6, 7, 8, 9, 14], "data": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14], "accepted_privacy_polici": 0, "admin": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 13], "fals": [0, 1, 3, 5, 7, 8, 13], "bio": [0, 7], "null": [0, 1, 5, 7, 8, 9], "birth_dat": [0, 7], "created_at": [0, 7], "sun": [0, 4, 7, 8], "14": [0, 3, 7, 8, 11], "jul": [0, 4, 7, 8], "2019": [0, 4, 6, 7, 8], "09": [0, 7], "58": [0, 7, 9], "gmt": [0, 3, 4, 7, 8], "date_format": 0, "dd": 0, "mm": 0, "yyyi": 0, "display_asc": 0, "sam": [0, 4, 7, 8], "com": [0, 1, 3, 7, 9, 13, 14], "email_to_confirm": 0, "first_nam": [0, 7], "imperial_unit": [0, 7], "is_act": [0, 5, 7], "last_nam": [0, 7], "locat": [0, 7, 13], "nb_sport": [0, 7], "nb_workout": [0, 6, 7], "6": [0, 5, 7, 8, 10, 11, 13], "pictur": [0, 7, 8, 9], "record": [0, 2, 7, 8, 9, 11], "id": [0, 3, 4, 5, 6, 7, 8, 14], "9": [0, 4, 7, 11, 13], "record_typ": [0, 4, 7, 8], "AS": [0, 4, 7, 8], "sport_id": [0, 4, 5, 6, 7, 8], "valu": [0, 3, 4, 7, 8, 9, 11, 13, 14, 16], "18": [0, 4, 7, 8, 9], "workout_d": [0, 4, 7, 8], "07": [0, 4, 7, 8], "08": [0, 4, 7, 8], "00": [0, 4, 7, 8], "workout_id": [0, 4, 7, 8], "hvybqybra7wwxpastwr4v2": [0, 4, 7, 8], "10": [0, 1, 4, 7, 8, 11, 13], "fd": [0, 4, 7, 8], "13": [0, 4, 7, 8, 10, 11, 13], "ha": [0, 4, 7, 8, 9, 11, 12], "43": [0, 4, 7, 8, 9], "97": [0, 4, 7, 8], "11": [0, 4, 7, 11, 13], "ld": [0, 4, 7, 8], "01": [0, 4, 6, 7, 8], "12": [0, 4, 7, 8], "m": [0, 4, 6, 7, 8], "sports_list": [0, 7], "4": [0, 5, 6, 7, 8, 11, 13], "start_elevation_at_zero": 0, "timezon": [0, 7, 8, 9, 11], "europ": [0, 7], "pari": [0, 7], "total_asc": [0, 6], "720": 0, "35": [0, 9], "total_dist": [0, 6, 7], "67": [0, 7], "895": [0, 7], "total_dur": [0, 6, 7], "50": [0, 7, 9, 13], "27": [0, 3, 7], "use_raw_gpx_spe": 0, "weekm": [0, 6, 7], "header": [0, 1, 3, 4, 5, 6, 7, 8, 14], "author": [0, 1, 3, 4, 5, 6, 7, 8, 13, 14], "oauth": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 13], "2": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13], "0": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "bearer": [0, 1, 3, 4, 5, 6, 7, 8], "signatur": [0, 1, 3, 4, 5, 6, 7, 8], "expir": [0, 1, 3, 4, 5, 6, 7, 8, 10], "edit": [0, 9, 11], "write": [0, 1, 3, 5, 7, 8, 14], "updat": [0, 1, 5, 7, 8, 9, 11, 13], "first": [0, 3, 11, 14], "name": [0, 3, 7, 9, 13], "last": [0, 9, 13], "biographi": 0, "birth": [0, 9], "date": [0, 6, 8, 9, 11], "format": [0, 6, 8, 9, 11], "y": [0, 6, 8, 13], "d": [0, 6, 8], "support": [0, 3, 9, 11, 13, 14, 16], "default": [0, 3, 6, 7, 8, 9, 11, 13], "date_str": 0, "correspond": [0, 13], "client": [0, 3, 9, 11, 13, 14], "mmm": 0, "do": [0, 1, 5, 6, 7, 8], "local": [0, 9, 12, 13], "e": 0, "fr": [0, 7, 13], "gl": 0, "nl": 0, "de": [0, 13], "nb": 0, "us": [0, 3, 7, 8, 9, 10, 11, 12, 13, 14], "displai": [0, 8, 9, 10, 11, 12, 13, 14, 17], "app": [0, 3, 9, 11, 12, 13, 14], "highest": [0, 4, 11], "ascent": [0, 4, 8, 9, 11], "total": [0, 3, 9, 11], "distanc": [0, 4, 8, 9, 11], "imperi": [0, 9, 11], "unit": [0, 9, 13], "elev": [0, 8, 9, 11, 13], "plot": 0, "start": [0, 6, 8, 9, 11, 13, 17], "zero": [0, 9, 11], "time": [0, 6, 8, 9, 11], "zone": 0, "unfilt": 0, "gpx": [0, 3, 8, 9, 11, 12, 13, 15], "calcul": [0, 9, 11], "speed": [0, 4, 8, 9, 11, 13], "doe": [0, 6, 7, 8, 9], "week": [0, 6, 9, 11], "mondai": [0, 6, 11], "don": 0, "t": [0, 9, 16], "match": [0, 8, 9], "sport": [0, 2, 6, 8, 9, 13], "color": [0, 5, 9, 11], "000000": 0, "stopped_speed_threshold": [0, 5], "user_id": 0, "hexadecim": 0, "when": [0, 1, 9, 10, 11, 13], "ad": [0, 9, 10, 11], "workout": [0, 2, 3, 4, 5, 6, 9, 12, 14, 15, 17], "float": [0, 8], "stop": [0, 9, 11, 13], "threshold": [0, 9, 11], "gpxpy": [0, 11, 13], "exist": [0, 6, 7, 8, 9, 11, 12, 13], "delet": [0, 3, 7, 8, 9, 10, 11], "reset": [0, 7, 9, 10, 11, 13], "given": [0, 3], "204": [0, 3, 7, 8], "paramet": [0, 3, 5, 6, 7, 8, 9, 11, 13, 14], "No": [0, 3, 7, 8, 9, 12], "multipart": [0, 3, 8], "form": [0, 3, 8], "file": [0, 1, 8, 9, 10, 11, 12, 13, 15, 17], "imag": [0, 7, 8, 9, 11, 13, 17], "extens": [0, 8, 13], "jpg": 0, "png": [0, 8, 13], "gif": 0, "part": [0, 8], "select": [0, 8, 11], "413": [0, 8], "entiti": [0, 8], "too": [0, 8], "larg": [0, 8, 11, 13], "dure": [0, 8], "size": [0, 1, 8, 9, 11, 13], "exce": [0, 8, 9], "0mb": [0, 8], "NO": [0, 3, 7, 8], "handl": [0, 11, 13, 16], "process": [0, 9, 10, 13], "patch": [0, 1, 5, 7, 8], "It": [0, 7, 9, 11, 12, 14, 16], "enabl": [0, 1, 7, 11, 13], "chang": [0, 11, 12, 13], "one": [0, 7, 8, 11], "current": [0, 9], "address": [0, 11, 13], "inform": [0, 1, 9, 11, 12, 13], "anoth": [0, 7, 11, 13], "new": [0, 7, 10, 11, 13, 14], "new_password": 0, "miss": [0, 9], "logout": [0, 9], "blacklist": [0, 10], "out": 0, "access": [0, 3, 9, 13, 14], "revok": [0, 3], "malform": 0, "other": [0, 7, 13], "reason": 0, "export": [0, 9, 10, 11, 12, 13], "return": [0, 3, 4, 7, 8, 9, 13], "creation": [0, 9, 11], "in_progress": 0, "byte": 0, "wed": 0, "mar": 0, "2023": [0, 13], "31": [0, 8, 13], "17": [0, 1, 8, 13], "file_nam": 0, "archive_rgjsr3fht295ywnqr5yp": 0, "zip": [0, 1, 8, 9, 11], "file_s": 0, "924": 0, "ongo": 0, "complet": [0, 9], "download": [0, 8, 9, 11, 13, 17], "archiv": [0, 1, 9, 10, 11, 13], "archive_rgjsr3fhr5yp": 0, "x": [0, 8, 9, 13, 14], "gzip": 0, "filenam": 0, "config": [1, 9, 13, 16], "about": [1, 9, 11, 13, 14], "admin_contact": 1, "gpx_limit_import": 1, "is_email_sending_en": 1, "is_registration_en": 1, "max_single_file_s": 1, "1048576": 1, "max_us": 1, "max_zip_file_s": 1, "10485760": 1, "map_attribut": [1, 13], "copi": [1, 13], "href": [1, 13], "www": [1, 13], "openstreetmap": [1, 9, 13], "org": [1, 13], "copyright": [1, 13], "contributor": [1, 9, 13, 15], "privacy_polici": 1, "privacy_policy_d": 1, "version": [1, 10, 11, 13], "7": [1, 8, 10, 11, 13, 14], "weather_provid": 1, "authent": [1, 2, 3, 4, 5, 7, 8, 14], "instanc": [1, 3, 9, 11, 13, 14], "integ": [1, 3, 5, 6, 7, 8], "max": [1, 7, 8, 9, 10], "number": [1, 7, 8, 9, 10, 11, 13], "singl": [1, 7, 9, 11, 13], "have": [1, 5, 6, 7, 8, 9], "permiss": [1, 5, 6, 7, 8], "ping": 1, "health": 1, "check": [1, 9, 13, 16], "pong": 1, "account": [2, 7, 9, 10, 13, 15], "configur": [2, 9, 11, 13, 14], "oauth2": [2, 14], "statist": 2, "pagin": [3, 7, 8], "5": [3, 5, 6, 7, 8, 10, 11, 13], "page": [3, 7, 8, 9, 11], "fittracke": [3, 10, 11, 13, 14, 15, 17], "parti": [3, 11, 12, 14], "without": [3, 6, 7, 8, 9, 11, 12], "client_descript": 3, "client_id": [3, 14], "o22a27s2abpuoxjbxv3ujdox": 3, "issued_at": 3, "thu": 3, "juli": 3, "2022": 3, "06": [3, 6], "53": [3, 9], "import": [3, 9, 11, 13, 15], "redirect_uri": 3, "callback": [3, 14], "websit": 3, "has_next": 3, "has_prev": 3, "queri": [3, 6, 7, 8], "client_secret": 3, "secret": [3, 13, 14], "client_nam": 3, "client_uri": 3, "arrai": 3, "list": [3, 9, 12, 13], "redirect": [3, 14], "descript": [3, 10, 13], "option": [3, 9, 10, 13, 14], "client_client_id": 3, "NOT": [3, 5, 8], "int": [3, 5, 8], "by_id": 3, "all": [3, 4, 5, 6, 7, 8, 9, 11, 13], "associ": 3, "issu": [3, 12, 13], "response_typ": [3, 14], "state": [3, 14], "uniqu": [3, 14], "prevent": [3, 13, 14], "cross": [3, 11, 13, 14], "site": [3, 14], "forgeri": [3, 14], "mandatori": [3, 8, 9, 10, 13, 14], "recommend": [3, 13, 14], "code_challeng": [3, 14], "gener": [3, 9, 10, 11, 13, 14], "from": [3, 6, 8, 9, 11, 12, 14, 15], "verifi": [3, 14], "pkce": [3, 14], "code_challenge_method": [3, 14], "method": [3, 13, 14], "challeng": [3, 14], "s256": [3, 14], "authlib": [3, 13, 14], "librari": [3, 13, 14], "refresh": [3, 9], "access_token": 3, "roehv64thcg28wcewzhrnvlusoduvw8nvnhkcml57": 3, "expires_in": 3, "864000": 3, "refresh_token": 3, "nuv9cy8vqonrqkhtz5pqaq2zw7msh0mornpjr14amswd6f6i": 3, "token_typ": 3, "expires_at": 3, "1658660147": 3, "0667062": 3, "grant_typ": 3, "grant": [3, 14], "authorization_cod": [3, 14], "ar": [3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 17], "code_verifi": 3, "follow": [4, 10, 11, 13, 14, 15, 16], "averag": [4, 8, 9, 11], "farthest": [4, 9, 11], "longest": [4, 9, 11], "durat": [4, 8, 9, 11], "maximum": [4, 9, 10, 11], "non": [5, 12], "is_active_for_us": 5, "label": [5, 9], "cycl": [5, 9, 11], "transport": [5, 9, 11], "hike": [5, 9, 11], "mountain": [5, 9, 11], "bike": [5, 8, 9, 11], "run": [5, 9, 10, 11, 13, 14], "walk": [5, 9, 11], "has_workout": 5, "stat": [6, 9], "user_nam": [6, 7], "by_tim": 6, "2018": [6, 8], "2017": [6, 8], "average_spe": 6, "48": 6, "203": 6, "156": [6, 9], "15": [6, 8, 10, 11, 13], "282": [6, 9], "12341": 6, "16": [6, 8, 11, 13], "99": [6, 9], "150": 6, "178": [6, 9], "47": [6, 8, 9], "9960": 6, "95": [6, 9], "46": [6, 9], "78": 6, "613": 6, "1267": 6, "end": [6, 8], "frame": 6, "sundai": [6, 8, 11], "month": [6, 9, 11], "year": [6, 11], "by_sport": 6, "uploads_dir_s": 6, "1000": 6, "regardless": 7, "right": [7, 9, 10, 11, 13, 14], "some": [7, 8, 9, 11, 12, 13, 14], "order_bi": [7, 8], "workouts_count": 7, "par_pag": 7, "is_admin": 7, "sat": 7, "20": 7, "03": [7, 8], "per_pag": [7, 8], "per": [7, 8, 9, 13], "q": 7, "order": [7, 8, 9, 14], "sort": [7, 8, 11], "asc": [7, 8], "desc": [7, 8], "criteria": [7, 8], "detail": [7, 9, 13, 17], "jpeg": 7, "add": [7, 9, 10, 11, 12], "remov": [7, 9, 10, 11], "modifi": [7, 9, 10, 13], "new_email": 7, "reset_password": 7, "differ": [7, 9, 11], "than": [7, 9, 10], "curent": 7, "A": [7, 9, 10, 11, 13, 16], "own": [7, 11, 12], "except": [7, 13, 16], "he": 7, "": [7, 8, 9, 11, 13], "john_do": 7, "your": [7, 11, 12, 13], "02": 8, "least": 8, "ave_spe": 8, "bound": 8, "creation_d": 8, "51": 8, "descent": [8, 9, 11], "04": 8, "kjxavsturjvoah2wvcegef": 8, "map": [8, 9, 11, 12, 17], "max_alt": 8, "max_spe": 8, "min_alt": 8, "modification_d": 8, "move": [8, 9], "next_workout": 8, "note": [8, 9, 11, 13], "paus": [8, 9], "previous_workout": 8, "mon": 8, "jan": 8, "segment": [8, 9, 11], "titl": [8, 9, 11], "weather_end": 8, "weather_start": 8, "with_gpx": 8, "100": [8, 9, 11], "ani": 8, "case": [8, 11, 13], "insensit": [8, 13], "distance_from": 8, "minim": [8, 14], "distance_to": 8, "maxim": 8, "duration_from": 8, "h": [8, 11], "duration_to": 8, "ave_speed_from": 8, "ave_speed_to": 8, "max_speed_from": 8, "max_speed_to": 8, "workout_short_id": 8, "57": [8, 9], "45": 8, "22": 8, "morn": 8, "short": 8, "leaflet": [8, 13], "chart_data": 8, "chart": [8, 9, 11, 13], "j": [8, 9, 13], "279": [8, 9], "latitud": 8, "5078118": 8, "longitud": 8, "1232004": 8, "63": 8, "fri": 8, "44": [8, 9], "7380": 8, "280": [8, 9], "5079733": 8, "1234538": 8, "39": 8, "segment_id": 8, "map_id": 8, "fa33f4d996844a5c73ecd1ae24456ab8": 8, "1563529507772": 8, "map_til": 8, "z": [8, 13], "tile": [8, 9, 11], "c": [8, 13], "4109": 8, "2930": 8, "subdomain": [8, 9, 13], "zoom": 8, "index": 8, "along": 8, "axi": [8, 9, 11], "xml": 8, "201": [8, 9], "doubl": 8, "quot": 8, "escap": 8, "no_gpx": 8, "uuid": [8, 9], "km": [8, 11], "second": 8, "pr": 9, "366": 9, "369": 9, "host": [9, 13], "weblat": [9, 11], "galician": [9, 11], "thank": [9, 15], "xmgz": 9, "367": 9, "spanish": [9, 11], "dutch": [9, 11], "german": [9, 11], "italian": [9, 11], "87": 9, "norwegian": [9, 11], "bokm\u00e5l": [9, 11], "36": 9, "polish": [9, 11], "358": 9, "filter": [9, 11], "359": 9, "footer": 9, "overlap": 9, "350": 9, "352": 9, "356": 9, "init": [9, 13], "357": 9, "365": 9, "yet": [9, 11, 12], "interfac": [9, 11, 12, 13], "bjornclauw": 9, "gallegonovato": 9, "gnu": 9, "ewm": 9, "jat255": 9, "contain": [9, 11, 13], "databas": [9, 11, 13, 16], "migrat": [9, 10, 13], "see": [9, 11, 12, 13, 14, 16], "upgrad": 9, "among": 9, "now": [9, 10, 11, 13], "partial": 9, "below": [9, 13], "darkski": [9, 13], "sinc": [9, 13, 14], "servic": [9, 13], "shut": [9, 13], "down": [9, 13], "march": [9, 13], "319": 9, "cli": [9, 10, 11, 13], "329": 9, "make": [9, 13], "sticki": 9, "333": 9, "338": 9, "relev": 9, "328": 9, "altitud": [9, 11], "track": [9, 12], "incorrect": 9, "b29ed7a": 9, "dashboard": 9, "250": 9, "320": 9, "323": 9, "06ba975": 9, "bcc568e": 9, "ea0ac99": 9, "a458f5f": 9, "075aeb9": 9, "60e164d": 9, "98": 9, "318": 9, "weather": [9, 11], "comradekingu": 9, "qwerty287": 9, "lavoi": 9, "mondstern": 9, "314": 9, "fail": [9, 17], "315": 9, "custom": [9, 11, 13], "defin": [9, 11], "review": [9, 11], "upload": [9, 10, 11, 13, 15, 17], "lastli": 9, "addit": [9, 11, 13], "mai": [9, 11, 12, 13], "301": [9, 13], "304": 9, "305": 9, "307": 9, "modal": 9, "posit": [9, 11], "297": 9, "308": 9, "310": 9, "290": 9, "294": 9, "drop": 9, "postgresql10": 9, "depend": [9, 13], "265": 9, "implement": [9, 14], "altern": 9, "visualcross": 9, "environ": [9, 10, 16], "variabl": [9, 16], "set": [9, 10, 11, 13, 14, 16], "weather_api_provid": [9, 13], "287": 9, "289": 9, "dperruso": 9, "92": 9, "c88a515": 9, "f96dcef": 9, "278": 9, "270": 9, "nederland": 9, "258": 9, "pars": [9, 13], "link": [9, 13], "area": 9, "271": 9, "273": 9, "274": 9, "test": [9, 13], "parallel": 9, "275": 9, "worker": [9, 10, 13, 16], "entri": [9, 13], "point": [9, 13], "fittrackee_work": [9, 10, 13], "command": [9, 11, 12, 13], "flask": [9, 13], "dramatiq": [9, 10, 13], "3c8d9c2": 9, "trail": [9, 11], "comma": [9, 13], "dev": 9, "264": 9, "ui": 9, "white": 9, "grai": 9, "background": 9, "266": 9, "260": 9, "261": 9, "should": [9, 13], "limit": [9, 11], "still": [9, 11, 12, 13], "need": [9, 11, 13, 14], "89": 9, "b1536fc": 9, "257": 9, "bodi": [9, 13, 14], "nginx": [9, 11, 13, 14, 16], "112": 9, "244": 9, "virtual": [9, 11], "ride": 9, "246": 9, "postgresql": [9, 13, 16], "247": 9, "microsecond": 9, "252": 9, "242": 9, "241": 9, "strength": 9, "estim": 9, "packag": [9, 13], "239": 9, "cb9d02f": 9, "88": 9, "231": 9, "236": 9, "rate": 9, "232": 9, "hidden": [9, 11], "237": 9, "212": 9, "230": 9, "problem": 9, "225": 9, "grammar": 9, "skylan0916": 9, "In": [9, 11], "execut": 9, "lower": 9, "v0": [9, 13], "postgr": [9, 16], "213": 9, "measur": 9, "ft": 9, "mi": 9, "223": 9, "icon": [9, 13], "167": 9, "162": 9, "fmstrat": 9, "210": 9, "could": 9, "staticmap_subdomain": [9, 13], "209": 9, "multipl": 9, "gorgobacka": 9, "And": 9, "detect": 9, "browser": 9, "208": 9, "card": 9, "html": 9, "attribut": [9, 13], "197": 9, "196": 9, "manag": [9, 10, 13], "tool": [9, 12, 13], "190": 9, "were": 9, "193": 9, "192": 9, "instead": [9, 11], "191": 9, "layout": 9, "includ": 9, "195": 9, "affect": [9, 11], "previous": 9, "cc4287e": 9, "docker": 9, "env": [9, 13], "offset": 9, "refacto": 9, "befor": [9, 13], "introduc": 9, "possibl": [9, 11, 12, 13], "smtp": [9, 13], "reduc": 9, "pre": 9, "requisit": 9, "To": [9, 13, 14], "180": 9, "cannot": [9, 11], "tl": [9, 13], "177": 9, "small": 9, "screen": [9, 11], "175": 9, "173": 9, "171": 9, "correctli": 9, "sent": [9, 11, 13, 14], "155": 9, "106": 9, "169": 9, "161": 9, "160": 9, "sever": [9, 11, 12, 13], "danielsiersleben": 9, "report": 9, "initi": [9, 13], "149": 9, "initialis": [9, 13], "152": 9, "autoescap": 9, "jinja": 9, "templat": 9, "151": 9, "sanit": 9, "input": 9, "serv": [9, 13], "warn": [9, 11], "launch": 9, "w": 9, "script": 9, "entrypoint": 9, "avoid": 9, "product": 9, "dotenv": 9, "146": 9, "145": 9, "model": 9, "140": 9, "fullscreen": 9, "control": [9, 11, 13], "138": 9, "135": 9, "finish": 9, "marker": 9, "134": 9, "wind": [9, 11], "direct": [9, 11], "877fa0f": 9, "calendar": [9, 11], "resolut": 9, "131": 9, "129": 9, "127": [9, 13], "legitim": 9, "uri": 9, "localhost": [9, 13], "25": [9, 13], "123": 9, "121": 9, "snowsho": [9, 11], "116": 9, "better": [9, 14], "button": 9, "graph": 9, "115": 9, "91": 9, "min": 9, "90": 9, "seem": 9, "104": 9, "switch": 9, "agplv3": 9, "licens": [9, 12, 13], "101": 9, "full": [9, 11], "develop": [9, 10, 12], "109": 9, "slow": 9, "movement": 9, "84": 9, "93": 9, "paf38": 9, "83": 9, "static": [9, 11, 13], "keep": [9, 12, 13], "default_staticmap": [9, 13], "81": 9, "remain": 9, "textarea": 9, "82": 9, "dai": [9, 10, 11, 13], "80": [9, 13], "save": [9, 11], "79": 9, "rebuild": 9, "75": 9, "same": 9, "python": [9, 13, 14], "javascript": [9, 13], "due": 9, "sqlalchemi": [9, 13, 16], "engin": [9, 13, 16], "longer": [9, 16], "database_url": [9, 13], "72": 9, "exceed": 9, "71": 9, "greater": 9, "70": 9, "less": 9, "66": 9, "64": 9, "shown": [9, 14, 17], "62": 9, "refactor": 9, "evalu": [9, 13], "purpos": [9, 13], "standard": [9, 13], "term": [9, 13], "directori": [9, 11, 13], "also": [9, 10, 11, 12, 13], "59": 9, "major": 9, "instal": [9, 12], "becom": 9, "more": [9, 10, 11, 12, 13], "easi": 9, "been": [9, 12], "renam": 9, "layer": [9, 13], "replac": [9, 13], "thunderforest": [9, 13], "outdoor": [9, 11, 12, 13], "54": 9, "simplifi": [9, 14], "redi": [9, 10, 13], "side": 9, "4c3fc34": 9, "empti": [9, 10, 13], "34614d5": 9, "spinner": 9, "load": [9, 16], "b862a77": 9, "2e1ee2c": 9, "interceptor": 9, "rout": [9, 13], "definit": 9, "weekend": 9, "40": 9, "i18n": 9, "41": 9, "show": [9, 10, 13], "mous": 9, "over": 9, "choos": [9, 11], "33": 9, "37": 9, "34": 9, "anymor": 9, "poetri": [9, 13], "pipenv": 9, "28": 9, "26": 9, "tooltip": [9, 11], "even": [9, 11], "enter": [9, 11], "kei": [9, 11, 13], "farest": 9, "search": 9, "owner": [9, 11, 13], "view": [9, 11, 13], "usag": [10, 13], "arg": [10, 13], "help": [10, 13], "exit": [10, 13], "deprec": 10, "next": [10, 11], "fittrackee_set_admin": 10, "fittrackee_upgrade_db": 10, "appli": 10, "relat": [10, 11, 13, 14], "argument": 10, "random": 10, "incomplet": 10, "store": [11, 12, 14], "For": [11, 13, 14], "kind": 11, "encrypt": 11, "With": [11, 13], "open": [11, 12, 13], "street": [11, 12], "electr": 11, "row": 11, "ski": 11, "alpin": 11, "countri": 11, "overridden": 11, "which": 11, "up": [11, 12], "metric": 11, "system": [11, 13], "origin": 11, "particular": 11, "visual": [11, 13], "sourc": 11, "arrow": 11, "indic": 11, "come": 11, "period": [11, 13], "dropdown": 11, "recent": 11, "On": [11, 13], "line": [11, 12, 13], "between": 11, "hide": 11, "minimum": 11, "exclud": 11, "extrem": 11, "gp": 11, "overrid": 11, "appear": 11, "third": [11, 12, 14], "individu": 11, "necessari": [11, 13], "like": [11, 13], "markdown": 11, "syntax": 11, "adapt": [11, 13], "discours": 11, "lock": 11, "via": 11, "french": 11, "releas": [11, 13], "mobil": 12, "them": 12, "android": 12, "exhaust": 12, "runner": 12, "gpl": 12, "v3": 12, "forrunn": 12, "opentrack": 12, "apach": 12, "fitotrack": 12, "under": [12, 13], "heavi": [12, 13], "featur": [12, 13], "unstabl": [12, 13], "document": [12, 13, 14, 16], "troubleshoot": 12, "written": 13, "typescript": 13, "staticmap": 13, "coordin": 13, "task": 13, "queue": 13, "vue3": 13, "vuex": 13, "logo": 13, "made": 13, "freepik": 13, "flaticon": 13, "fork": 13, "awesom": 13, "node": 13, "yarn": 13, "compos": 13, "step": 13, "describ": 13, "linux": 13, "debian": 13, "arch": 13, "o": 13, "encount": 13, "makefil": 13, "thei": [13, 14], "flask_app": 13, "modul": 13, "pwd": 13, "__main__": 13, "py": 13, "els": 13, "port": 13, "5000": 13, "app_set": 13, "productionconfig": 13, "app_secret_kei": 13, "strong": 13, "jwt": 13, "app_work": 13, "spawn": 13, "gunicorn": [13, 16], "app_log": 13, "path": [13, 16], "upload_fold": [13, 16], "absolut": [13, 16], "where": 13, "folder": 13, "application_directori": 13, "virtualenv": 13, "5432": 13, "begin": 13, "database_disable_pool": 13, "pool": 13, "directli": 13, "ui_url": 13, "email_url": [13, 16], "sender_email": 13, "sender": 13, "redis_url": 13, "workers_process": 13, "api_rate_limit": 13, "300": 13, "minut": 13, "tile_server_url": 13, "b": 13, "osm": 13, "franc": 13, "target": 13, "_blank": 13, "rel": 13, "noopen": 13, "noreferr": 13, "komoot": 13, "otherwis": 13, "weather_api_kei": 13, "weather_api": 13, "vue_app_api_url": 13, "unencrypt": 13, "ssl": 13, "465": 13, "starttl": 13, "587": 13, "office365": 13, "work": 13, "omit": 13, "old": 13, "adress": 13, "notif": 13, "readi": 13, "apikei": 13, "xxxx": 13, "expect": 13, "osmfr": 13, "fond": 13, "cart": 13, "par": 13, "mention": 13, "legal": 13, "nofollow": 13, "sou": 13, "nbsp": 13, "creativecommon": 13, "sa": 13, "licenc": 13, "cc": 13, "BY": 13, "chosen": 13, "randomli": 13, "base": 13, "ip": 13, "fix": 13, "window": 13, "strategi": 13, "subject": 13, "asset": 13, "notat": 13, "separ": [13, 14], "hour": 13, "mainten": 13, "diagnost": 13, "util": 13, "commmand": 13, "clear": 13, "specif": 13, "enumer": 13, "histor": 13, "hourli": 13, "discontinu": 13, "wai": 13, "pip": 13, "WITH": 13, "schema": 13, "privileg": 13, "nano": 13, "ftcli": 13, "db": 13, "systemd": 13, "project": 13, "clone": 13, "repo": 13, "git": 13, "github": 13, "samr1": 13, "cd": 13, "vue": 13, "3000": 13, "wget": 13, "tar": 13, "gz": 13, "xzf": 13, "mv": 13, "sql": 13, "backup": 13, "pg_dump": 13, "u": 13, "changelog": 13, "restart": 13, "pull": 13, "repositori": 13, "overwrit": 13, "cp": 13, "r": 13, "There": 13, "One": 13, "proxi": [13, 14], "pass": 13, "oper": 13, "network": 13, "startlimitintervalsec": 13, "simpl": 13, "alwai": 13, "restartsec": 13, "standardoutput": 13, "syslog": 13, "standarderror": 13, "syslogidentifi": 13, "workingdirectori": 13, "home": 13, "execstart": 13, "venv": 13, "bin": 13, "create_app": 13, "logfil": 13, "wantedbi": 13, "multi": 13, "higher": 13, "timeout": [13, 16], "its": 13, "OF": 13, "listen": 13, "443": 13, "http2": 13, "server_nam": 13, "ssl_certif": 13, "fullchain": 13, "pem": 13, "ssl_certificate_kei": 13, "privkei": 13, "how": 13, "1mb": 13, "larger": [13, 16], "ll": 13, "uncom": 13, "want": 13, "client_max_body_s": [13, 16], "1m": 13, "proxy_pass": 13, "proxy_redirect": 13, "proxy_set_head": [13, 14], "real": 13, "remote_addr": 13, "forward": [13, 14], "proxy_add_x_forwarded_for": 13, "proto": [13, 14], "scheme": [13, 14], "request_uri": 13, "build": 13, "8025": 13, "mailhog": 13, "shell": 13, "insid": 13, "fittrackee_cli": 13, "lint": 13, "fittrackee_ynh": 13, "rest": 14, "whose": 14, "most": 14, "interact": 14, "tab": 14, "exchang": 14, "secur": 14, "3rd": 14, "fittrackee_host": 14, "space": 14, "3aread": 14, "3awrit": 14, "so": 14, "fetch": 14, "behind": 14, "aaron": 14, "parecki": 14, "oauthlib": 14, "session": 14, "strava": 15, "fit": 15, "exc": 16, "nosuchmoduleerror": 16, "plugin": 16, "dialect": 16, "invalidemailurlschem": 16, "increas": 16, "critic": 16}, "objects": {"": [[0, 0, 1, "post--api-auth-account-confirm", "/api/auth/account/confirm"], [0, 1, 1, "get--api-auth-account-export", "/api/auth/account/export"], [0, 1, 1, "get--api-auth-account-export-(string-file_name)", "/api/auth/account/export/(string:file_name)"], [0, 0, 1, "post--api-auth-account-export-request", "/api/auth/account/export/request"], [0, 0, 1, "post--api-auth-account-privacy-policy", "/api/auth/account/privacy-policy"], [0, 0, 1, "post--api-auth-account-resend-confirmation", "/api/auth/account/resend-confirmation"], [0, 0, 1, "post--api-auth-email-update", "/api/auth/email/update"], [0, 0, 1, "post--api-auth-login", "/api/auth/login"], [0, 0, 1, "post--api-auth-logout", "/api/auth/logout"], [0, 0, 1, "post--api-auth-password-reset-request", "/api/auth/password/reset-request"], [0, 0, 1, "post--api-auth-password-update", "/api/auth/password/update"], [0, 2, 1, "delete--api-auth-picture", "/api/auth/picture"], [0, 0, 1, "post--api-auth-picture", "/api/auth/picture"], [0, 1, 1, "get--api-auth-profile", "/api/auth/profile"], [0, 0, 1, "post--api-auth-profile-edit", "/api/auth/profile/edit"], [0, 3, 1, "patch--api-auth-profile-edit-account", "/api/auth/profile/edit/account"], [0, 0, 1, "post--api-auth-profile-edit-preferences", "/api/auth/profile/edit/preferences"], [0, 0, 1, "post--api-auth-profile-edit-sports", "/api/auth/profile/edit/sports"], [0, 2, 1, "delete--api-auth-profile-reset-sports-(sport_id)", "/api/auth/profile/reset/sports/(sport_id)"], [0, 0, 1, "post--api-auth-register", "/api/auth/register"], [1, 1, 1, "get--api-config", "/api/config"], [1, 3, 1, "patch--api-config", "/api/config"], [3, 1, 1, "get--api-oauth-apps", "/api/oauth/apps"], [3, 0, 1, "post--api-oauth-apps", "/api/oauth/apps"], [3, 2, 1, "delete--api-oauth-apps-(int-client_id)", "/api/oauth/apps/(int:client_id)"], [3, 1, 1, "get--api-oauth-apps-(int-client_id)-by_id", "/api/oauth/apps/(int:client_id)/by_id"], [3, 0, 1, "post--api-oauth-apps-(int-client_id)-revoke", "/api/oauth/apps/(int:client_id)/revoke"], [3, 1, 1, "get--api-oauth-apps-(string-client_client_id)", "/api/oauth/apps/(string:client_client_id)"], [3, 0, 1, "post--api-oauth-authorize", "/api/oauth/authorize"], [3, 0, 1, "post--api-oauth-revoke", "/api/oauth/revoke"], [3, 0, 1, "post--api-oauth-token", "/api/oauth/token"], [1, 1, 1, "get--api-ping", "/api/ping"], [4, 1, 1, "get--api-records", "/api/records"], [5, 1, 1, "get--api-sports", "/api/sports"], [5, 1, 1, "get--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [5, 3, 1, "patch--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [6, 1, 1, "get--api-stats-(user_name)-by_sport", "/api/stats/(user_name)/by_sport"], [6, 1, 1, "get--api-stats-(user_name)-by_time", "/api/stats/(user_name)/by_time"], [6, 1, 1, "get--api-stats-all", "/api/stats/all"], [7, 1, 1, "get--api-users", "/api/users"], [7, 2, 1, "delete--api-users-(user_name)", "/api/users/(user_name)"], [7, 1, 1, "get--api-users-(user_name)", "/api/users/(user_name)"], [7, 3, 1, "patch--api-users-(user_name)", "/api/users/(user_name)"], [7, 1, 1, "get--api-users-(user_name)-picture", "/api/users/(user_name)/picture"], [8, 1, 1, "get--api-workouts", "/api/workouts"], [8, 0, 1, "post--api-workouts", "/api/workouts"], [8, 2, 1, "delete--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 3, 1, "patch--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-chart_data", "/api/workouts/(string:workout_short_id)/chart_data"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/chart_data/segment/(int:segment_id)"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx", "/api/workouts/(string:workout_short_id)/gpx"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx-download", "/api/workouts/(string:workout_short_id)/gpx/download"], [8, 1, 1, "get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id)"], [8, 1, 1, "get--api-workouts-map-(map_id)", "/api/workouts/map/(map_id)"], [8, 0, 1, "post--api-workouts-no_gpx", "/api/workouts/no_gpx"], [13, 4, 1, "-", "API_RATE_LIMITS"], [13, 4, 1, "-", "APP_LOG"], [13, 4, 1, "-", "APP_SECRET_KEY"], [13, 4, 1, "-", "APP_SETTINGS"], [13, 4, 1, "-", "APP_WORKERS"], [13, 4, 1, "-", "DATABASE_DISABLE_POOLING"], [13, 4, 1, "-", "DATABASE_URL"], [13, 4, 1, "-", "DEFAULT_STATICMAP"], [13, 4, 1, "-", "EMAIL_URL"], [13, 4, 1, "-", "FLASK_APP"], [13, 4, 1, "-", "HOST"], [13, 4, 1, "-", "MAP_ATTRIBUTION"], [13, 4, 1, "-", "PORT"], [13, 4, 1, "-", "REDIS_URL"], [13, 4, 1, "-", "SENDER_EMAIL"], [13, 4, 1, "-", "STATICMAP_SUBDOMAINS"], [13, 4, 1, "-", "TILE_SERVER_URL"], [13, 4, 1, "-", "UI_URL"], [13, 4, 1, "-", "UPLOAD_FOLDER"], [13, 4, 1, "-", "VUE_APP_API_URL"], [13, 4, 1, "-", "WEATHER_API_KEY"], [13, 4, 1, "envvar-WEATHER_API_PROVIDER", "WEATHER_API_PROVIDER \ud83c\udd95"], [13, 4, 1, "-", "WORKERS_PROCESSES"]], "/api/workouts/map_tile/(s)/(z)/(x)/(y)": [[8, 1, 1, "get--api-workouts-map_tile-(s)-(z)-(x)-(y).png", "png"]]}, "objtypes": {"0": "http:post", "1": "http:get", "2": "http:delete", "3": "http:patch", "4": "std:envvar"}, "objnames": {"0": ["http", "post", "HTTP post"], "1": ["http", "get", "HTTP get"], "2": ["http", "delete", "HTTP delete"], "3": ["http", "patch", "HTTP patch"], "4": ["std", "envvar", "environment variable"]}, "titleterms": {"authent": 0, "account": [0, 11], "configur": 1, "api": [2, 13], "document": [2, 9], "endpoint": 2, "oauth2": [3, 10], "record": 4, "sport": [5, 11], "statist": [6, 9, 11], "user": [7, 10, 11], "workout": [8, 11, 16], "chang": 9, "log": 9, "version": 9, "0": [9, 14], "7": 9, "17": 9, "2023": 9, "06": 9, "03": 9, "translat": [9, 11], "16": 9, "05": 9, "29": 9, "featur": [9, 11], "enhanc": 9, "bug": 9, "fix": 9, "15": 9, "04": 9, "12": 9, "misc": 9, "14": 9, "08": 9, "13": 9, "02": 9, "11": 9, "2022": 9, "31": 9, "10": 9, "21": 9, "9": 9, "8": 9, "30": 9, "27": 9, "6": 9, "09": 9, "5": 9, "4": 9, "3": 9, "01": 9, "2": [9, 14], "1": 9, "19": 9, "issu": 9, "close": 9, "pull": 9, "request": 9, "07": 9, "22": 9, "24": 9, "23": 9, "secur": 9, "new": 9, "2021": 9, "2020": 9, "fittracke": [9, 12, 16], "pypi": [9, 13], "administr": [9, 11, 16], "improv": 9, "minor": 9, "avail": 9, "french": 9, "2019": 9, "first": 9, "releas": 9, "2018": 9, "command": 10, "line": 10, "interfac": 10, "databas": 10, "ftcli": 10, "db": 10, "drop": 10, "upgrad": [10, 13], "clean": 10, "clean_arch": 10, "clean_token": 10, "creat": 10, "export_arch": 10, "updat": 10, "prefer": 11, "applic": 11, "screenshot": 11, "dashboard": 11, "detail": [11, 16], "list": 11, "tabl": 12, "content": 12, "instal": 13, "prerequisit": 13, "environ": 13, "variabl": 13, "email": 13, "map": [13, 16], "tile": 13, "server": 13, "rate": 13, "limit": 13, "weather": 13, "data": 13, "from": 13, "sourc": 13, "dev": 13, "product": 13, "prod": 13, "deploy": 13, "docker": 13, "develop": 13, "yunohost": 13, "oauth": 14, "scope": 14, "flow": 14, "resourc": 14, "third": 15, "parti": 15, "tool": 15, "fail": 16, "start": 16, "imag": 16, "ar": 16, "displai": 16, "i": 16, "shown": 16, "upload": 16, "download": 16, "file": 16, "troubleshoot": 17}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"Authentication and account": [[0, "authentication-and-account"]], "Configuration": [[1, "configuration"]], "API documentation": [[2, "api-documentation"]], "Endpoints:": [[2, null]], "OAuth2": [[3, "oauth2"], [10, "oauth2"]], "Records": [[4, "records"]], "Sports": [[5, "sports"], [11, "sports"]], "Statistics": [[6, "statistics"], [11, "statistics"]], "Users": [[7, "users"], [10, "users"], [11, "users"]], "Workouts": [[8, "workouts"], [11, "workouts"]], "Change log": [[9, "change-log"]], "Version 0.7.17 (2023/06/03)": [[9, "version-0-7-17-2023-06-03"]], "Translations": [[9, "translations"], [9, "id1"], [9, "id4"], [9, "id6"], [9, "id9"], [9, "id10"], [9, "id13"], [9, "id15"], [9, "id17"], [9, "id18"], [9, "id21"], [9, "id23"], [9, "id26"], [9, "id28"], [9, "id31"], [9, "id32"], [9, "id34"], [9, "id37"], [9, "id50"], [11, "translations"]], "Version 0.7.16 (2023/05/29)": [[9, "version-0-7-16-2023-05-29"]], "Features and enhancements": [[9, "features-and-enhancements"], [9, "id2"], [9, "id7"], [9, "id12"], [9, "id14"], [9, "id16"], [9, "id19"], [9, "id29"], [9, "id35"]], "Bugs Fixed": [[9, "bugs-fixed"], [9, "id3"], [9, "id5"], [9, "id8"], [9, "id20"], [9, "id25"], [9, "id27"], [9, "id30"], [9, "id33"], [9, "id36"], [9, "id38"], [9, "id41"], [9, "id44"], [9, "id46"], [9, "id49"], [9, "id52"], [9, "id55"], [9, "id60"], [9, "id62"], [9, "id64"], [9, "id66"], [9, "id69"], [9, "id71"], [9, "id77"], [9, "id80"], [9, "id82"], [9, "id84"], [9, "id91"], [9, "id96"], [9, "id98"], [9, "id100"], [9, "id103"], [9, "id105"], [9, "id107"], [9, "id111"], [9, "id121"], [9, "id124"], [9, "id126"], [9, "id129"], [9, "id136"]], "Version 0.7.15 (2023/04/12)": [[9, "version-0-7-15-2023-04-12"]], "Misc": [[9, "misc"], [9, "id11"], [9, "id22"], [9, "id24"], [9, "id39"], [9, "id53"], [9, "id56"], [9, "id73"], [9, "id75"], [9, "id92"], [9, "id101"], [9, "id108"], [9, "id112"], [9, "id119"], [9, "id130"], [9, "id133"]], "Version 0.7.14 (2023/03/08)": [[9, "version-0-7-14-2023-03-08"]], "Version 0.7.13 (2023/03/05)": [[9, "version-0-7-13-2023-03-05"]], "Version 0.7.12 (2023/02/16)": [[9, "version-0-7-12-2023-02-16"]], "Version 0.7.11 (2022/12/31)": [[9, "version-0-7-11-2022-12-31"]], "Version 0.7.10 (2022/12/21)": [[9, "version-0-7-10-2022-12-21"]], "Version 0.7.9 (2022/12/11)": [[9, "version-0-7-9-2022-12-11"]], "Version 0.7.8 (2022/11/30)": [[9, "version-0-7-8-2022-11-30"]], "Version 0.7.7 (2022/11/27)": [[9, "version-0-7-7-2022-11-27"]], "Version 0.7.6 (2022/11/09)": [[9, "version-0-7-6-2022-11-09"]], "Version 0.7.5 (2022/11/09)": [[9, "version-0-7-5-2022-11-09"]], "Version 0.7.4 (2022/11/05)": [[9, "version-0-7-4-2022-11-05"]], "Documentation": [[9, "documentation"]], "Version 0.7.3 (2022/11/01)": [[9, "version-0-7-3-2022-11-01"]], "Version 0.7.2 (2022/09/21)": [[9, "version-0-7-2-2022-09-21"]], "Version 0.7.1 (2022/09/21)": [[9, "version-0-7-1-2022-09-21"]], "Version 0.7.0 (2022/09/19)": [[9, "version-0-7-0-2022-09-19"]], "Version 0.6.12 (2022/09/14)": [[9, "version-0-6-12-2022-09-14"]], "Issues Closed": [[9, "issues-closed"], [9, "id40"], [9, "id43"], [9, "id47"], [9, "id51"], [9, "id54"], [9, "id57"], [9, "id59"], [9, "id63"], [9, "id65"], [9, "id67"], [9, "id72"], [9, "id76"], [9, "id79"], [9, "id81"], [9, "id83"], [9, "id85"], [9, "id87"], [9, "id89"], [9, "id94"], [9, "id97"], [9, "id99"], [9, "id102"], [9, "id104"], [9, "id106"], [9, "id109"], [9, "id113"], [9, "id115"], [9, "id117"], [9, "id120"], [9, "id122"], [9, "id125"], [9, "id127"], [9, "id131"], [9, "id134"], [9, "id137"]], "Pull Requests": [[9, "pull-requests"], [9, "id42"], [9, "id45"], [9, "id61"], [9, "id70"], [9, "id74"], [9, "id78"], [9, "id93"]], "Version 0.6.11 (2022/07/27)": [[9, "version-0-6-11-2022-07-27"]], "Features": [[9, "features"], [9, "id48"], [9, "id58"], [9, "id68"], [11, "features"]], "Version 0.6.10 (2022/07/13)": [[9, "version-0-6-10-2022-07-13"]], "Version 0.6.9 (2022/07/03)": [[9, "version-0-6-9-2022-07-03"]], "Version 0.6.8 (2022/06/22)": [[9, "version-0-6-8-2022-06-22"]], "Version 0.6.7 (2022/06/11)": [[9, "version-0-6-7-2022-06-11"]], "Version 0.6.6 (2022/05/29)": [[9, "version-0-6-6-2022-05-29"]], "Version 0.6.5 (2022/04/24)": [[9, "version-0-6-5-2022-04-24"]], "Version 0.6.4 (2022/04/23)": [[9, "version-0-6-4-2022-04-23"]], "Version 0.6.3 (2022/04/09)": [[9, "version-0-6-3-2022-04-09"]], "Version 0.6.2 (2022/04/03)": [[9, "version-0-6-2-2022-04-03"]], "Version 0.6.1 (2022/03/27)": [[9, "version-0-6-1-2022-03-27"]], "Version 0.6.0 (2022/03/27)": [[9, "version-0-6-0-2022-03-27"]], "Version 0.5.7 (2022/02/13)": [[9, "version-0-5-7-2022-02-13"]], "Security": [[9, "security"]], "Version 0.5.6 (2022/02/05)": [[9, "version-0-5-6-2022-02-05"]], "Version 0.5.5 (2022/01/19)": [[9, "version-0-5-5-2022-01-19"]], "New Features": [[9, "new-features"], [9, "id86"], [9, "id88"], [9, "id90"], [9, "id95"], [9, "id110"], [9, "id114"], [9, "id116"], [9, "id118"], [9, "id123"], [9, "id128"], [9, "id132"], [9, "id135"], [9, "id138"]], "Version 0.5.4 (2022/01/01)": [[9, "version-0-5-4-2022-01-01"]], "Version 0.5.3 (2022/01/01)": [[9, "version-0-5-3-2022-01-01"]], "Version 0.5.2 (2021/12/19)": [[9, "version-0-5-2-2021-12-19"]], "Version 0.5.1 (2021/11/30)": [[9, "version-0-5-1-2021-11-30"]], "Version 0.5.0 (2021/11/14)": [[9, "version-0-5-0-2021-11-14"]], "Version 0.4.9 (2021/07/16)": [[9, "version-0-4-9-2021-07-16"]], "Version 0.4.8 (2021/07/03)": [[9, "version-0-4-8-2021-07-03"]], "Version 0.4.7 (2021/04/07)": [[9, "version-0-4-7-2021-04-07"]], "Version 0.4.6 (2021/02/21)": [[9, "version-0-4-6-2021-02-21"]], "Version 0.4.5 (2021/02/17)": [[9, "version-0-4-5-2021-02-17"]], "Version 0.4.4 (2021/01/31)": [[9, "version-0-4-4-2021-01-31"]], "Version 0.4.3 (2021/01/10)": [[9, "version-0-4-3-2021-01-10"]], "Version 0.4.2 (2021/01/03)": [[9, "version-0-4-2-2021-01-03"]], "Version 0.4.1 (2020/12/31)": [[9, "version-0-4-1-2020-12-31"]], "Version 0.4.0 - FitTrackee on PyPI (2020/09/19)": [[9, "version-0-4-0-fittrackee-on-pypi-2020-09-19"]], "Version 0.3.0 - Administration (2020/07/15)": [[9, "version-0-3-0-administration-2020-07-15"]], "Version 0.2.5 - Fix and improvements (2020/01/31)": [[9, "version-0-2-5-fix-and-improvements-2020-01-31"]], "Version 0.2.4 - Minor fix (2020/01/30)": [[9, "version-0-2-4-minor-fix-2020-01-30"]], "Version 0.2.3 - FitTrackee available in French (2019/12/29)": [[9, "version-0-2-3-fittrackee-available-in-french-2019-12-29"]], "Version 0.2.2 - Statistics fix (2019/09/23)": [[9, "version-0-2-2-statistics-fix-2019-09-23"]], "Version 0.2.1 - Fix and improvements (2019/09/01)": [[9, "version-0-2-1-fix-and-improvements-2019-09-01"]], "Version 0.2.0 - Statistics (2019/07/07)": [[9, "version-0-2-0-statistics-2019-07-07"]], "Version 0.1.1 - Fix and improvements (2019/02/07)": [[9, "version-0-1-1-fix-and-improvements-2019-02-07"]], "Version 0.1.0 - First release \ud83c\udf89 (2018-07-04)": [[9, "version-0-1-0-first-release-2018-07-04"]], "Command line interface": [[10, "command-line-interface"]], "Database": [[10, "database"]], "ftcli db drop": [[10, "ftcli-db-drop"]], "ftcli db upgrade": [[10, "ftcli-db-upgrade"]], "ftcli oauth2 clean": [[10, "ftcli-oauth2-clean"]], "ftcli users clean_archives": [[10, "ftcli-users-clean-archives"]], "ftcli users clean_tokens": [[10, "ftcli-users-clean-tokens"]], "ftcli users create": [[10, "ftcli-users-create"]], "ftcli users export_archives": [[10, "ftcli-users-export-archives"]], "ftcli users update": [[10, "ftcli-users-update"]], "Account & preferences": [[11, "account-preferences"]], "Administration": [[11, "administration"], [11, "id1"]], "Application": [[11, "application"]], "Screenshots": [[11, "screenshots"]], "Dashboard": [[11, "dashboard"]], "Workout detail": [[11, "workout-detail"]], "Workouts list": [[11, "workouts-list"]], "FitTrackee": [[12, "fittrackee"]], "Table of contents": [[12, "table-of-contents"]], "Installation": [[13, "installation"], [13, "id2"], [13, "id6"]], "Prerequisites": [[13, "prerequisites"]], "Environment variables": [[13, "environment-variables"]], "Emails": [[13, "emails"]], "Map tile server": [[13, "map-tile-server"]], "API rate limits": [[13, "api-rate-limits"]], "Weather data": [[13, "weather-data"]], "From PyPI": [[13, "from-pypi"], [13, "id3"]], "From sources": [[13, "from-sources"], [13, "id4"]], "Dev environment": [[13, "dev-environment"], [13, "id5"]], "Production environment": [[13, "production-environment"]], "Upgrade": [[13, "upgrade"]], "Prod environment": [[13, "prod-environment"]], "Deployment": [[13, "deployment"]], "Docker": [[13, "docker"]], "Development": [[13, "development"]], "Yunohost": [[13, "yunohost"]], "OAuth 2.0": [[14, "oauth-2-0"]], "Scopes": [[14, "scopes"]], "Flow": [[14, "flow"]], "Resources": [[14, "resources"]], "Third-party tools": [[15, "third-party-tools"]], "Administrator": [[16, "administrator"]], "FitTrackee fails to start": [[16, "fittrackee-fails-to-start"]], "Map images are not displayed but map is shown in Workout detail": [[16, "map-images-are-not-displayed-but-map-is-shown-in-workout-detail"]], "Failed to upload or download files": [[16, "failed-to-upload-or-download-files"]], "Troubleshooting": [[17, "troubleshooting"]]}, "indexentries": {"api_rate_limits": [[13, "envvar-API_RATE_LIMITS"]], "app_log": [[13, "envvar-APP_LOG"]], "app_secret_key": [[13, "envvar-APP_SECRET_KEY"]], "app_settings": [[13, "envvar-APP_SETTINGS"]], "app_workers": [[13, "envvar-APP_WORKERS"]], "database_disable_pooling": [[13, "envvar-DATABASE_DISABLE_POOLING"]], "database_url": [[13, "envvar-DATABASE_URL"]], "default_staticmap": [[13, "envvar-DEFAULT_STATICMAP"]], "email_url": [[13, "envvar-EMAIL_URL"]], "flask_app": [[13, "envvar-FLASK_APP"]], "host": [[13, "envvar-HOST"]], "map_attribution": [[13, "envvar-MAP_ATTRIBUTION"]], "port": [[13, "envvar-PORT"]], "redis_url": [[13, "envvar-REDIS_URL"]], "sender_email": [[13, "envvar-SENDER_EMAIL"]], "staticmap_subdomains": [[13, "envvar-STATICMAP_SUBDOMAINS"]], "tile_server_url": [[13, "envvar-TILE_SERVER_URL"]], "ui_url": [[13, "envvar-UI_URL"]], "upload_folder": [[13, "envvar-UPLOAD_FOLDER"]], "vue_app_api_url": [[13, "envvar-VUE_APP_API_URL"]], "weather_api_key": [[13, "envvar-WEATHER_API_KEY"]], "weather_api_provider \ud83c\udd95": [[13, "envvar-WEATHER_API_PROVIDER"]], "workers_processes": [[13, "envvar-WORKERS_PROCESSES"]], "environment variable": [[13, "envvar-API_RATE_LIMITS"], [13, "envvar-APP_LOG"], [13, "envvar-APP_SECRET_KEY"], [13, "envvar-APP_SETTINGS"], [13, "envvar-APP_WORKERS"], [13, "envvar-DATABASE_DISABLE_POOLING"], [13, "envvar-DATABASE_URL"], [13, "envvar-DEFAULT_STATICMAP"], [13, "envvar-EMAIL_URL"], [13, "envvar-FLASK_APP"], [13, "envvar-HOST"], [13, "envvar-MAP_ATTRIBUTION"], [13, "envvar-PORT"], [13, "envvar-REDIS_URL"], [13, "envvar-SENDER_EMAIL"], [13, "envvar-STATICMAP_SUBDOMAINS"], [13, "envvar-TILE_SERVER_URL"], [13, "envvar-UI_URL"], [13, "envvar-UPLOAD_FOLDER"], [13, "envvar-VUE_APP_API_URL"], [13, "envvar-WEATHER_API_KEY"], [13, "envvar-WEATHER_API_PROVIDER"], [13, "envvar-WORKERS_PROCESSES"]]}}) \ No newline at end of file diff --git a/docs/fr/_sources/changelog.md.txt b/docs/fr/_sources/changelog.md.txt index e161ca39..2e100a11 100644 --- a/docs/fr/_sources/changelog.md.txt +++ b/docs/fr/_sources/changelog.md.txt @@ -1013,7 +1013,7 @@ In this release 7 issues were closed. - Cycling (Sport) - Cycling (Transport) - Hiking - - Montain Biking + - Mountain Biking - Running - Walking - Activity creation by uploading a gpx file. An activity can even be created without gpx (the user must enter date, time, duration and distance) diff --git a/docs/fr/api/auth.html b/docs/fr/api/auth.html index d410a65d..f1393b7d 100644 --- a/docs/fr/api/auth.html +++ b/docs/fr/api/auth.html @@ -3,10 +3,10 @@ - + - Authentication and account - Documentation FitTrackee 0.7.17 + Authentification et compte - Documentation FitTrackee 0.7.17 @@ -163,24 +163,24 @@
    -

    Dev environment#

    +

    Environnements de développement#

      -
    • Clone this repo:

    • +
    • Cloner ce dépôt :

    $ git clone https://github.com/SamR1/FitTrackee.git
     $ cd FitTrackee
     
      -
    • Create .env from example and update it -(see Environment variables).

    • -
    • Install Python virtualenv, Vue and all related packages and -initialize the database:

    • +
    • Créer le fichier .env à partir de l’exemple et le mettre à jour (cf. Variables d’environnement).

    • +
    • Installer l’environnement virtuel Python, Vue et tous les paquets nécessaires et initialiser la base de données :

    $ make install-dev
     $ make install-db
     
      -
    • Start the server and the client:

    • +
    • Démarrer le serveur et le client :

    $ make serve
     
      -
    • Run dramatiq workers:

    • +
    • Démarrer les workers dramatiq

    $ make run-workers
     
      -
    • Open http://localhost:3000 and register

    • -
    • To set admin rights to the newly created account, use the following command line:

    • +
    • Ouvrir l’URL http://localhost:3000 avec un navigateur et s’inscrire

    • +
    • Pour donner les droits d’administration au compte nouvellement créé utiliser la ligne de commande suivante :

    $ make user-set-admin USERNAME=<username>
     

    Note

    -

    If the user account is inactive, it activates it.

    +

    Si le compte de l’utilisateur est inactif, il sera alors activée.

    -

    Production environment#

    +

    Environnements de production#

    Avertissement

    @@ -892,7 +882,7 @@ $ make install-db
      -
    • Download the last release (for now, it is the release v0.7.17):

    • +
    • Télécharger la dernière version (à ce jour, la version v0.7.17):

    $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.17.tar.gz
     $ tar -xzf v0.7.17.tar.gz
    @@ -901,122 +891,120 @@ $ cd FitTr
     
      -
    • Create .env from example and update it -(see Environment variables).

    • -
    • Install Python virtualenv and all related packages:

    • +
    • Créer le fichier .env à partir de l’exemple et le mettre à jour (cf. Variables d’environnement).

    • +
    • Installer l’environnement virtuel Python et tous les paquets nécessaires:

    $ make install-python
     
      -
    • Initialize the database (after updating db/create.sql to change -database credentials):

    • +
    • Initialiser la base de données (après avoir mis à jour db/create.sql pour changer les informations de connexion à la base de données):

    $ make install-db
     
      -
    • Start the server and dramatiq workers:

    • +
    • Démarrer le serveur et les workers dramatiq :

    $ make run
     

    Note

    -

    If email sending is disabled: $ make run-server

    +

    Si l’envoi des courriels est désactivé : $ make run-server

      -
    • Open http://localhost:5000 and register

    • -
    • To set admin rights to the newly created account, use the following command line:

    • +
    • Ouvrir l’URL http://localhost:5000 avec un navigateur et s’inscrire

    • +
    • Pour donner les droits d’administration au compte nouvellement créé utiliser la ligne de commande suivante :

    $ make user-set-admin USERNAME=<username>
     

    Note

    -

    If the user account is inactive, it activates it.

    +

    Si le compte de l’utilisateur est inactif, il sera alors activée.

    -

    Upgrade#

    +

    Mise à jour#

    Avertissement

    -
    Before upgrading, make a backup of all data:
    +
    Avant de procéder à la mise à jour, faire une sauvegarde de l’ensemble des données :
    - database (with pg_dump for instance)
    - upload directory (see Environment variables)
    -

    From PyPI#

    +

    A partir de PyPI#

      -
    • Stop the application and activate the virtualenv

    • -
    • Upgrade with pip

    • +
    • Stopper l’application et activer l’environnement virtuel

    • +
    • Mettre à jour avec pip

    $ pip install -U fittrackee
     
      -
    • Update environment variables if needed and source environment variables file

    • +
    • Mettre à jour les variables d’environnements si nécessaire et les activer

    $ nano .env
     $ source .env
     
      -
    • Upgrade database if needed (see changelog for migrations):

    • +
    • Mettre à jour la base de données si nécessaire (voir le journal des changements pour les migrations)

    $ ftcli db upgrade
     
      -
    • Restart the application and task queue workers (if email sending is enabled).

    • +
    • Redémarrer l’application et les workers de la file d’attente des tâches (si l’envoi des courriels est activé).

    -

    From sources#

    +

    A partir des sources#

    -

    Dev environment#

    +

    Environnements de développement#

      -
    • Stop the application and pull the repository:

    • +
    • Arrêter l’application et récupérer les derniers changements du dépôt :

    $ git pull
     
    $ make install-dev
     
      -
    • Upgrade database if needed (see changelog for migrations):

    • +
    • Mettre à jour la base de données si nécessaire (voir le journal des changements pour les migrations)

    $ make upgrade-db
     
      -
    • Restart the server:

    • +
    • Redémarrer le serveur

    $ make serve
     
      -
    • Run dramatiq workers:

    • +
    • Démarrer les workers dramatiq

    $ make run-workers
     
    -

    Prod environment#

    +

    Environnement de production#

      -
    • Stop the application

    • -
    • Change to the directory where FitTrackee directory is located

    • -
    • Download the last release (for now, it is the release v0.7.17) and overwrite existing files:

    • +
    • Arrêter l’application

    • +
    • Changer pour le répertoire dans lequel FitTrackee est localisé

    • +
    • Télécharger la dernière version (à ce jour, la version v0.7.17) et écraser les fichiers existants :

    $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.17.tar.gz
     $ tar -xzf v0.7.17.tar.gz
    @@ -1025,39 +1013,37 @@ $ cd FitTr
     
    $ make install-dev
     
      -
    • Upgrade database if needed (see changelog for migrations):

    • +
    • Mettre à jour la base de données si nécessaire (voir le journal des changements pour les migrations)

    $ make upgrade-db
     
      -
    • Restart the server and dramatiq workers:

    • +
    • Redémarrer le serveur et les workers dramatiq :

    $ make run
     

    Note

    -

    If email sending is disabled: $ make run-server

    +

    Si l’envoi des courriels est désactivé : $ make run-server

    -

    Deployment#

    -

    There are several ways to start FitTrackee web application and task queue -library. -One way is to use a systemd services and Nginx to proxy pass to Gunicorn.

    -

    Examples (to adapt depending on your instance configuration and operating system):

    +

    Déploiement#

    +

    Il y a plusieurs méthodes pour démarrer et servir l’application web FitTrackee et l’application de gestion de la file d’attente de tâches. Un des moyens est d’utiliser les services systemd et Nginx to proxy passer à Gunicorn.

    +

    Exemples (à adapter selon la configuration de votre instance et votre système d’exploitation):

      -
    • for application: fittrackee.service

    • +
    • pour l’application: fittrackee.service

    [Unit]
     Description=FitTrackee service
    @@ -1096,14 +1082,14 @@ One way is to use a systemd services and Nginx
     

    Note

    -

    To handle large files, a higher value for timeout can be set.

    +

    Pour gérer les fichiers de taille importante, une valeur plus importante pour le timeout peut être configurée.

    Note

    -

    More information on deployment with Gunicorn in its documentation.

    +

    Plus d’informations sur le déploiement avec Gunicorn dans sa documentation.

      -
    • for task queue workers: fittrackee_workers.service

    • +
    • pour les workers de la file d’attente: fittrackee_workers.service

    [Unit]
     Description=FitTrackee task queue service
    @@ -1138,7 +1124,7 @@ One way is to use a systemd services and Nginx
     
      -
    • Nginx configuration:

    • +
    • Configuration Nginx :

    server {
         listen 443 ssl http2;
    @@ -1176,7 +1162,7 @@ server {
     

    Note

    -

    If needed, update configuration to handle larger files (see client_max_body_size).

    +

    Si besoin, modifier la configuration pour gérer les fichiers de taille importante (cf. client_max_body_size).

    @@ -1186,9 +1172,9 @@ server {

    Nouveau dans la version 0.4.4.

    -

    For evaluation purposes, docker files are available, installing FitTrackee from sources.

    +

    A des fins d’évaluation, des fichiers Docker sont disponible, installant FitTrackee à partir des sources sources.

      -
    • To install FitTrackee:

    • +
    • Pour installer FitTrackee :

    $ git clone https://github.com/SamR1/FitTrackee.git
     $ cd FitTrackee
    @@ -1197,68 +1183,68 @@ $ make docker-build
     
      -
    • To initialise database:

    • +
    • Pour initialiser la base de données :

    $ make docker-init
     
    -

    Open http://localhost:8025 to access MailHog interface (email testing tool)

    +

    Ouvrir l’URL http://localhost:8025 pour accéder à l’interface de MailHog (outil de test)

      -
    • To set admin rights to the newly created account, use the following command line:

    • +
    • Pour donner les droits d’administration au compte nouvellement créé utiliser la ligne de commande suivante :

    $ make docker-set-admin USERNAME=<username>
     

    Note

    -

    If the user account is inactive, it activates it.

    +

    Si le compte de l’utilisateur est inactif, il sera alors activée.

      -
    • To stop Fittrackee:

    • +
    • Pour arrêter Fittrackee :

    $ make docker-stop
     
      -
    • To start Fittrackee (application and dramatiq workers):

    • +
    • pour démarrer Fittrackee (application et workers dramatiq):

    $ make docker-run-all
     
      -
    • To run shell inside Fittrackee container:

    • +
    • Pour lancer le shell dans le container Fittrackee :

    $ make docker-shell
     
    -

    Development#

    +

    Développement#

    Nouveau dans la version 0.5.0.

      -
    • an additional step is needed to install fittrackee_client

    • +
    • une étape additionnelle est nécessaire pour installer fittrackee_client

    $ make docker-build-client
     
      -
    • to start FitTrackee with client dev tools:

    • +
    • pour démarrer FitTrackee avec les outils de développement client:

    $ make docker-serve-client
     
    -

    Open http://localhost:3000

    +

    Ouvrir http://localhost:3000

    Note

    -

    Some environment variables need to be updated like UI_URL

    +

    Certaines variables d’environnement doivent être mise à jour comme UI_URL

      -
    • to run lint or tests:

    • +
    • pour lancer le lint et les tests :

    $ make docker-lint-client  # run lint on javascript files
     $ make docker-test-client  # run unit tests on Client
    @@ -1270,7 +1256,7 @@ $ make docker-test-python
     

    Yunohost#

    -

    A package is available, see https://github.com/YunoHost-Apps/fittrackee_ynh.

    +

    un paquet est available, cf. https://github.com/YunoHost-Apps/fittrackee_ynh.

    @@ -1284,7 +1270,7 @@ $ make docker-test-python Next
    -
    Command line interface
    +
    Interface de ligne de commande
    @@ -1334,36 +1320,36 @@ $ make docker-test-python
    • Installation
        -
      • Prerequisites
      • -
      • Environment variables
          -
        • Emails
        • -
        • Map tile server
        • -
        • API rate limits
        • -
        • Weather data
        • +
        • Prérequis
        • +
        • Variables d’environnement
        • Installation
            -
          • From PyPI
          • -
          • From sources
          • -
          • Upgrade
              -
            • From PyPI
            • -
            • From sources
                -
              • Dev environment
              • -
              • Prod environment
              • +
              • Mise à jour
              • -
              • Deployment
              • +
              • Déploiement
              • Docker
              • Yunohost
              • diff --git a/docs/fr/oauth.html b/docs/fr/oauth.html index 852889b1..582a17db 100644 --- a/docs/fr/oauth.html +++ b/docs/fr/oauth.html @@ -3,7 +3,7 @@ - + OAuth 2.0 - Documentation FitTrackee 0.7.17 @@ -163,24 +163,24 @@ @@ -401,8 +392,8 @@ It is recommended to use PKCE to provide a better security.

                diff --git a/docs/fr/objects.inv b/docs/fr/objects.inv index f43fd7d5..132fd1a2 100644 Binary files a/docs/fr/objects.inv and b/docs/fr/objects.inv differ diff --git a/docs/fr/search.html b/docs/fr/search.html index 0d9afe3b..d08d00e5 100644 --- a/docs/fr/search.html +++ b/docs/fr/search.html @@ -161,24 +161,24 @@ diff --git a/docs/fr/troubleshooting/administrator.html b/docs/fr/troubleshooting/administrator.html index c94a1fb5..c53572d6 100644 --- a/docs/fr/troubleshooting/administrator.html +++ b/docs/fr/troubleshooting/administrator.html @@ -3,10 +3,10 @@ - + - Administrator - Documentation FitTrackee 0.7.17 + Administrateur - Documentation FitTrackee 0.7.17 @@ -163,24 +163,24 @@ -
                Troubleshooting
                +
                Dépannage
    @@ -322,10 +322,10 @@
    diff --git a/docsrc/gettext/.doctrees/api/auth.doctree b/docsrc/gettext/.doctrees/api/auth.doctree index f19e650c..e7511043 100644 Binary files a/docsrc/gettext/.doctrees/api/auth.doctree and b/docsrc/gettext/.doctrees/api/auth.doctree differ diff --git a/docsrc/gettext/.doctrees/api/configuration.doctree b/docsrc/gettext/.doctrees/api/configuration.doctree index 21c2dc9d..943079c8 100644 Binary files a/docsrc/gettext/.doctrees/api/configuration.doctree and b/docsrc/gettext/.doctrees/api/configuration.doctree differ diff --git a/docsrc/gettext/.doctrees/api/index.doctree b/docsrc/gettext/.doctrees/api/index.doctree index bf1c3a96..416f4e11 100644 Binary files a/docsrc/gettext/.doctrees/api/index.doctree and b/docsrc/gettext/.doctrees/api/index.doctree differ diff --git a/docsrc/gettext/.doctrees/api/oauth2.doctree b/docsrc/gettext/.doctrees/api/oauth2.doctree index 82a70170..0aa81cea 100644 Binary files a/docsrc/gettext/.doctrees/api/oauth2.doctree and b/docsrc/gettext/.doctrees/api/oauth2.doctree differ diff --git a/docsrc/gettext/.doctrees/api/records.doctree b/docsrc/gettext/.doctrees/api/records.doctree index 5d7f05ec..f2be0f87 100644 Binary files a/docsrc/gettext/.doctrees/api/records.doctree and b/docsrc/gettext/.doctrees/api/records.doctree differ diff --git a/docsrc/gettext/.doctrees/api/sports.doctree b/docsrc/gettext/.doctrees/api/sports.doctree index 0095d638..6e6007a3 100644 Binary files a/docsrc/gettext/.doctrees/api/sports.doctree and b/docsrc/gettext/.doctrees/api/sports.doctree differ diff --git a/docsrc/gettext/.doctrees/api/stats.doctree b/docsrc/gettext/.doctrees/api/stats.doctree index 58d0da82..5503a31c 100644 Binary files a/docsrc/gettext/.doctrees/api/stats.doctree and b/docsrc/gettext/.doctrees/api/stats.doctree differ diff --git a/docsrc/gettext/.doctrees/api/users.doctree b/docsrc/gettext/.doctrees/api/users.doctree index 25e92e43..e2ffdb54 100644 Binary files a/docsrc/gettext/.doctrees/api/users.doctree and b/docsrc/gettext/.doctrees/api/users.doctree differ diff --git a/docsrc/gettext/.doctrees/api/workouts.doctree b/docsrc/gettext/.doctrees/api/workouts.doctree index 1c676078..f122a87b 100644 Binary files a/docsrc/gettext/.doctrees/api/workouts.doctree and b/docsrc/gettext/.doctrees/api/workouts.doctree differ diff --git a/docsrc/gettext/.doctrees/changelog.doctree b/docsrc/gettext/.doctrees/changelog.doctree index 1ed83b1b..68602c7b 100644 Binary files a/docsrc/gettext/.doctrees/changelog.doctree and b/docsrc/gettext/.doctrees/changelog.doctree differ diff --git a/docsrc/gettext/.doctrees/cli.doctree b/docsrc/gettext/.doctrees/cli.doctree index 34a4970b..a37cac29 100644 Binary files a/docsrc/gettext/.doctrees/cli.doctree and b/docsrc/gettext/.doctrees/cli.doctree differ diff --git a/docsrc/gettext/.doctrees/environment.pickle b/docsrc/gettext/.doctrees/environment.pickle index 13016b32..603b5e2d 100644 Binary files a/docsrc/gettext/.doctrees/environment.pickle and b/docsrc/gettext/.doctrees/environment.pickle differ diff --git a/docsrc/gettext/.doctrees/features.doctree b/docsrc/gettext/.doctrees/features.doctree index d9eba794..2ee645f5 100644 Binary files a/docsrc/gettext/.doctrees/features.doctree and b/docsrc/gettext/.doctrees/features.doctree differ diff --git a/docsrc/gettext/.doctrees/index.doctree b/docsrc/gettext/.doctrees/index.doctree index 179740f5..58c49343 100644 Binary files a/docsrc/gettext/.doctrees/index.doctree and b/docsrc/gettext/.doctrees/index.doctree differ diff --git a/docsrc/gettext/.doctrees/installation.doctree b/docsrc/gettext/.doctrees/installation.doctree index c746861e..35598642 100644 Binary files a/docsrc/gettext/.doctrees/installation.doctree and b/docsrc/gettext/.doctrees/installation.doctree differ diff --git a/docsrc/gettext/.doctrees/oauth.doctree b/docsrc/gettext/.doctrees/oauth.doctree index d1e7361c..4312855c 100644 Binary files a/docsrc/gettext/.doctrees/oauth.doctree and b/docsrc/gettext/.doctrees/oauth.doctree differ diff --git a/docsrc/gettext/.doctrees/third_party_tools.doctree b/docsrc/gettext/.doctrees/third_party_tools.doctree index 0f59f891..152b50ac 100644 Binary files a/docsrc/gettext/.doctrees/third_party_tools.doctree and b/docsrc/gettext/.doctrees/third_party_tools.doctree differ diff --git a/docsrc/gettext/.doctrees/troubleshooting/administrator.doctree b/docsrc/gettext/.doctrees/troubleshooting/administrator.doctree index 85047351..2f6139a2 100644 Binary files a/docsrc/gettext/.doctrees/troubleshooting/administrator.doctree and b/docsrc/gettext/.doctrees/troubleshooting/administrator.doctree differ diff --git a/docsrc/gettext/.doctrees/troubleshooting/index.doctree b/docsrc/gettext/.doctrees/troubleshooting/index.doctree index 4329e033..b44cbb05 100644 Binary files a/docsrc/gettext/.doctrees/troubleshooting/index.doctree and b/docsrc/gettext/.doctrees/troubleshooting/index.doctree differ diff --git a/docsrc/gettext/docs.pot b/docsrc/gettext/docs.pot index 307bcb9f..97d51340 100644 --- a/docsrc/gettext/docs.pot +++ b/docsrc/gettext/docs.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: FitTrackee 0.7.17\n" "\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-18 15:19+0200\n" +"POT-Creation-Date: 2023-06-18 20:45+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -38,11 +38,11 @@ msgid "**Example responses**:" msgstr "" #: ../../:1 -msgid "success" +msgid "success:" msgstr "" #: ../../:1 -msgid "error on registration" +msgid "error on registration:" msgstr "" #: ../../:0 @@ -74,43 +74,47 @@ msgid "Status Codes" msgstr "" #: ../../:1 -msgid "- invalid payload - sorry, that username is already taken - Errors: - username: 3 to 30 characters required - username: only alphanumeric characters and the underscore character \"_\" allowed - email: valid email must be provided - password: 8 characters required" +msgid "``success``" msgstr "" #: ../../:1 -msgid "invalid payload" +msgid "- ``invalid payload`` - ``sorry, that username is already taken`` - ``sorry, you must agree privacy policy to register`` - ``username: 3 to 30 characters required`` - ``username: only alphanumeric characters and the underscore character \"_\" allowed`` - ``email: valid email must be provided`` - ``password: 8 characters required``" msgstr "" #: ../../:1 -msgid "sorry, that username is already taken" +msgid "``invalid payload``" msgstr "" #: ../../:1 -msgid "Errors:" +msgid "``sorry, that username is already taken``" msgstr "" #: ../../:1 -msgid "username: 3 to 30 characters required" +msgid "``sorry, you must agree privacy policy to register``" msgstr "" #: ../../:1 -msgid "username: only alphanumeric characters and the underscore character \"_\" allowed" +msgid "``username: 3 to 30 characters required``" msgstr "" #: ../../:1 -msgid "email: valid email must be provided" +msgid "``username: only alphanumeric characters and the underscore character \"_\" allowed``" msgstr "" #: ../../:1 -msgid "password: 8 characters required" +msgid "``email: valid email must be provided``" msgstr "" #: ../../:1 -msgid "error, registration is disabled" +msgid "``password: 8 characters required``" msgstr "" #: ../../:1 -msgid "error, please try again or contact the administrator" +msgid "``error, registration is disabled``" +msgstr "" + +#: ../../:1 +msgid "``error, please try again or contact the administrator``" msgstr "" #: ../../:1 @@ -126,7 +130,7 @@ msgid "confirmation token" msgstr "" #: ../../:1 -msgid "account confirmation successful" +msgid "``account confirmation successful``" msgstr "" #: ../../:1 @@ -138,11 +142,11 @@ msgid "If email sending is disabled, this endpoint is not available." msgstr "" #: ../../:1 -msgid "confirmation email resent" +msgid "``confirmation email resent``" msgstr "" #: ../../:1 -msgid "the requested URL was not found on the server" +msgid "``the requested URL was not found on the server``" msgstr "" #: ../../:1 @@ -154,7 +158,7 @@ msgid "Only user with an active account can log in." msgstr "" #: ../../:1 -msgid "successful login" +msgid "successful login:" msgstr "" #: ../../:1 @@ -166,11 +170,11 @@ msgid "password" msgstr "" #: ../../:1 -msgid "successfully logged in" +msgid "``successfully logged in``" msgstr "" #: ../../:1 -msgid "invalid credentials" +msgid "``invalid credentials``" msgstr "" #: ../../:1 @@ -190,23 +194,19 @@ msgid "OAuth 2.0 Bearer Token" msgstr "" #: ../../:1 -msgid "success." +msgid "- ``provide a valid auth token`` - ``signature expired, please log in again`` - ``invalid token, please log in again``" msgstr "" #: ../../:1 -msgid "- provide a valid auth token - signature expired, please log in again - invalid token, please log in again" +msgid "``provide a valid auth token``" msgstr "" #: ../../:1 -msgid "provide a valid auth token" +msgid "``signature expired, please log in again``" msgstr "" #: ../../:1 -msgid "signature expired, please log in again" -msgstr "" - -#: ../../:1 -msgid "invalid token, please log in again" +msgid "``invalid token, please log in again``" msgstr "" #: ../../:1 @@ -238,11 +238,7 @@ msgid "user birth date (format: ``%Y-%m-%d``)" msgstr "" #: ../../:1 -msgid "user profile updated" -msgstr "" - -#: ../../:1 -msgid "- invalid payload" +msgid "``user profile updated``" msgstr "" #: ../../:1 @@ -314,15 +310,15 @@ msgid "does week start on Monday?" msgstr "" #: ../../:1 -msgid "user preferences updated" +msgid "``user preferences updated``" msgstr "" #: ../../:1 -msgid "- invalid payload - password: password and password confirmation don't match" +msgid "- ``invalid payload`` - ``password: password and password confirmation don't match``" msgstr "" #: ../../:1 -msgid "password: password and password confirmation don't match" +msgid "``password: password and password confirmation don't match``" msgstr "" #: ../../:1 @@ -342,19 +338,19 @@ msgid "stopped speed threshold used by gpxpy" msgstr "" #: ../../:1 -msgid "- invalid payload - invalid hexadecimal color" +msgid "``user sport preferences updated``" msgstr "" #: ../../:1 -msgid "invalid hexadecimal color" +msgid "- ``invalid payload`` - ``invalid hexadecimal color``" msgstr "" #: ../../:1 -msgid "- sport does not exist" +msgid "``invalid hexadecimal color``" msgstr "" #: ../../:1 -msgid "sport does not exist" +msgid "``sport does not exist``" msgstr "" #: ../../:1 @@ -386,31 +382,31 @@ msgid "image file (allowed extensions: .jpg, .png, .gif)" msgstr "" #: ../../:1 -msgid "user picture updated" +msgid "``user picture updated``" msgstr "" #: ../../:1 -msgid "- invalid payload - no file part - no selected file - file extension not allowed" +msgid "- ``invalid payload`` - ``no file part`` - ``no selected file`` - ``file extension not allowed``" msgstr "" #: ../../:1 -msgid "no file part" +msgid "``no file part``" msgstr "" #: ../../:1 -msgid "no selected file" +msgid "``no selected file``" msgstr "" #: ../../:1 -msgid "file extension not allowed" +msgid "``file extension not allowed``" msgstr "" #: ../../:1 -msgid "error during picture update: file size exceeds 1.0MB" +msgid "``error during picture update: file size exceeds 1.0MB``" msgstr "" #: ../../:1 -msgid "error during picture update" +msgid "``error during picture update``" msgstr "" #: ../../:1 @@ -422,7 +418,7 @@ msgid "picture deleted" msgstr "" #: ../../:1 -msgid "error during picture deletion" +msgid "``error during picture deletion``" msgstr "" #: ../../:1 @@ -434,7 +430,7 @@ msgid "If email sending is disabled, this endpoint is not available" msgstr "" #: ../../:1 -msgid "password reset request processed" +msgid "``password reset request processed``" msgstr "" #: ../../:1 @@ -470,23 +466,23 @@ msgid "user new password" msgstr "" #: ../../:1 -msgid "user account updated" +msgid "``user account updated``" msgstr "" #: ../../:1 -msgid "- invalid payload - email is missing - current password is missing - email: valid email must be provided - password: 8 characters required" +msgid "- ``invalid payload`` - ``email is missing`` - ``current password is missing`` - ``email: valid email must be provided`` - ``password: 8 characters required``" msgstr "" #: ../../:1 -msgid "email is missing" +msgid "``email is missing``" msgstr "" #: ../../:1 -msgid "current password is missing" +msgid "``current password is missing``" msgstr "" #: ../../:1 -msgid "- provide a valid auth token - signature expired, please log in again - invalid token, please log in again - invalid credentials" +msgid "- ``provide a valid auth token`` - ``signature expired, please log in again`` - ``invalid token, please log in again`` - ``invalid credentials``" msgstr "" #: ../../:1 @@ -502,11 +498,11 @@ msgid "password reset token" msgstr "" #: ../../:1 -msgid "password updated" +msgid "``password updated``" msgstr "" #: ../../:1 -msgid "invalid token, please request a new token" +msgid "``invalid token, please request a new token``" msgstr "" #: ../../:1 @@ -514,7 +510,7 @@ msgid "Update user email after confirmation." msgstr "" #: ../../:1 -msgid "email updated" +msgid "``email updated``" msgstr "" #: ../../:1 @@ -522,41 +518,33 @@ msgid "User logout. If a valid token is provided, it will be blacklisted." msgstr "" #: ../../:1 -msgid "successful logout" +msgid "successful logout:" msgstr "" #: ../../:1 -msgid "error on logout" +msgid "error on logout:" msgstr "" #: ../../:1 -msgid "successfully logged out" +msgid "``successfully logged out``" msgstr "" #: ../../:1 -msgid "- provide a valid auth token - The access token provided is expired, revoked, malformed, or invalid for other reasons." +msgid "- ``provide a valid auth token`` - ``The access token provided is expired, revoked, malformed, or invalid for other reasons.``" msgstr "" #: ../../:1 -msgid "The access token provided is expired, revoked, malformed, or invalid for other reasons." +msgid "``The access token provided is expired, revoked, malformed, or invalid for other reasons.``" msgstr "" #: ../../:1 -msgid "- error on token blacklist" -msgstr "" - -#: ../../:1 -msgid "error on token blacklist" +msgid "``error on token blacklist``" msgstr "" #: ../../:1 msgid "The authenticated user accepts the privacy policy." msgstr "" -#: ../../:1 -msgid "internal server error" -msgstr "" - #: ../../:1 msgid "Get a data export info for authenticated user if a request exists." msgstr "" @@ -578,11 +566,11 @@ msgid "file name and size (in bytes) when export is successful" msgstr "" #: ../../:1 -msgid "if a request exists" +msgid "if a request exists:" msgstr "" #: ../../:1 -msgid "if no request" +msgid "if no request:" msgstr "" #: ../../:1 @@ -590,15 +578,15 @@ msgid "Request a data export for authenticated user." msgstr "" #: ../../:1 -msgid "- ongoing request exists - completed request already exists" +msgid "- ``ongoing request exists`` - ``completed request already exists``" msgstr "" #: ../../:1 -msgid "ongoing request exists" +msgid "``ongoing request exists``" msgstr "" #: ../../:1 -msgid "completed request already exists" +msgid "``completed request already exists``" msgstr "" #: ../../:1 @@ -610,7 +598,7 @@ msgid "filename" msgstr "" #: ../../:1 -msgid "file not found" +msgid "``file not found``" msgstr "" #: ../source/api/configuration.rst:2 @@ -622,7 +610,7 @@ msgid "Get Application configuration." msgstr "" #: ../../:1 -msgid "error on getting configuration" +msgid "``error on getting configuration``" msgstr "" #: ../../:1 @@ -670,19 +658,19 @@ msgid "instance privacy policy" msgstr "" #: ../../:1 -msgid "- provide a valid auth token - signature expired, please log in again - invalid token, please log in again - valid email must be provided for admin contact" +msgid "- ``provide a valid auth token`` - ``signature expired, please log in again`` - ``invalid token, please log in again`` - ``valid email must be provided for admin contact``" msgstr "" #: ../../:1 -msgid "valid email must be provided for admin contact" +msgid "``valid email must be provided for admin contact``" msgstr "" #: ../../:1 -msgid "you do not have permissions" +msgid "``you do not have permissions``" msgstr "" #: ../../:1 -msgid "error when updating configuration" +msgid "``error when updating configuration``" msgstr "" #: ../../:1 @@ -711,11 +699,11 @@ msgid "This endpoint is only accessible by FitTrackee client (first-party applic msgstr "" #: ../../:1 -msgid "without parameters" +msgid "without parameters:" msgstr "" #: ../../:1 -msgid "with 'page' parameter" +msgid "with 'page' parameter:" msgstr "" #: ../../:0 @@ -751,7 +739,7 @@ msgid "client scopes" msgstr "" #: ../../:1 -msgid "client description (`OPTIONAL`)" +msgid "client description (``OPTIONAL``)" msgstr "" #: ../../:1 @@ -759,7 +747,7 @@ msgid "Get an OAuth2 client (app) by 'client_id'." msgstr "" #: ../../:1 -msgid "not found" +msgid "not found:" msgstr "" #: ../../:1 @@ -767,7 +755,7 @@ msgid "OAuth2 client client_id" msgstr "" #: ../../:1 -msgid "OAuth2 client not found" +msgid "``OAuth2 client not found``" msgstr "" #: ../../:1 @@ -823,7 +811,7 @@ msgid "method used to create challenge, for instance \"S256\" (mandatory if `cod msgstr "" #: ../../:1 -msgid "- invalid payload - errors returned by Authlib library" +msgid "- ``invalid payload`` - errors returned by Authlib library" msgstr "" #: ../../:1 @@ -854,10 +842,6 @@ msgstr "" msgid "refresh token (for token refresh)" msgstr "" -#: ../../:1 -msgid "- errors returned by Authlib library" -msgstr "" - #: ../../:1 msgid "Revoke a token for a given OAuth2 client (app)." msgstr "" @@ -920,11 +904,11 @@ msgid "Get all sports" msgstr "" #: ../../:1 -msgid "for non admin user :" +msgid "for non admin user:" msgstr "" #: ../../:1 -msgid "for admin user :" +msgid "for admin user:" msgstr "" #: ../../:1 @@ -932,15 +916,19 @@ msgid "Get a sport" msgstr "" #: ../../:1 -msgid "success for non admin user :" +msgid "success for non admin user:" msgstr "" #: ../../:1 -msgid "success for admin user :" +msgid "success for admin user:" msgstr "" #: ../../:1 -msgid "sport not found" +msgid "sport not found:" +msgstr "" + +#: ../../:1 +msgid "``sport not found``" msgstr "" #: ../../:1 @@ -973,11 +961,11 @@ msgid "**Example requests**:" msgstr "" #: ../../:1 -msgid "with parameters" +msgid "with parameters:" msgstr "" #: ../../:1 -msgid "no workouts" +msgid "no workouts:" msgstr "" #: ../../:1 @@ -1017,11 +1005,7 @@ msgid "``year``: year (default)" msgstr "" #: ../../:1 -msgid "- user does not exist" -msgstr "" - -#: ../../:1 -msgid "user does not exist" +msgid "``user does not exist``" msgstr "" #: ../../:1 @@ -1029,15 +1013,15 @@ msgid "Get workouts statistics for a user by sport." msgstr "" #: ../../:1 -msgid "without parameters (get stats for all sports with workouts)" +msgid "without parameters (get stats for all sports with workouts):" msgstr "" #: ../../:1 -msgid "with sport id" +msgid "with sport id:" msgstr "" #: ../../:1 -msgid "- user does not exist - sport does not exist" +msgid "- ``user does not exist`` - ``sport does not exist``" msgstr "" #: ../../:1 @@ -1063,7 +1047,7 @@ msgid "**Scope**: ``users:read``" msgstr "" #: ../../:1 -msgid "with some query parameters" +msgid "with some query parameters:" msgstr "" #: ../../:1 @@ -1094,16 +1078,20 @@ msgstr "" msgid "user name" msgstr "" +#: ../../:1 +msgid "- ``user does not exist``" +msgstr "" + #: ../../:1 msgid "get user picture" msgstr "" #: ../../:1 -msgid "- user does not exist - No picture." +msgid "- ``user does not exist`` - ``No picture.``" msgstr "" #: ../../:1 -msgid "No picture." +msgid "``No picture.``" msgstr "" #: ../../:1 @@ -1151,15 +1139,15 @@ msgid "reset user password" msgstr "" #: ../../:1 -msgid "- invalid payload - valid email must be provided - new email must be different than curent email" +msgid "- ``invalid payload`` - ``valid email must be provided`` - ``new email must be different than curent email``" msgstr "" #: ../../:1 -msgid "valid email must be provided" +msgid "``valid email must be provided``" msgstr "" #: ../../:1 -msgid "new email must be different than curent email" +msgid "``new email must be different than curent email``" msgstr "" #: ../../:1 @@ -1179,11 +1167,11 @@ msgid "user account deleted" msgstr "" #: ../../:1 -msgid "- you do not have permissions - you can not delete your account, no other user has admin rights" +msgid "- ``you do not have permissions`` - ``you can not delete your account, no other user has admin rights``" msgstr "" #: ../../:1 -msgid "you can not delete your account, no other user has admin rights" +msgid "``you can not delete your account, no other user has admin rights``" msgstr "" #: ../source/api/workouts.rst:2 @@ -1196,7 +1184,7 @@ msgid "Get workouts for the authenticated user." msgstr "" #: ../../:1 -msgid "returning at least one workout" +msgid "returning at least one workout:" msgstr "" #: ../../:1 @@ -1268,7 +1256,7 @@ msgid "workout short id" msgstr "" #: ../../:1 -msgid "workout not found" +msgid "``workout not found``" msgstr "" #: ../../:1 @@ -1276,11 +1264,11 @@ msgid "Get gpx file for a workout displayed on map with Leaflet." msgstr "" #: ../../:1 -msgid "- workout not found - no gpx file for this workout" +msgid "- ``workout not found`` - ``no gpx file for this workout``" msgstr "" #: ../../:1 -msgid "no gpx file for this workout" +msgid "``no gpx file for this workout``" msgstr "" #: ../../:1 @@ -1308,7 +1296,7 @@ msgid "workout map id" msgstr "" #: ../../:1 -msgid "map does not exist" +msgid "``map does not exist``" msgstr "" #: ../../:1 @@ -1340,11 +1328,11 @@ msgid "Download gpx file." msgstr "" #: ../../:1 -msgid "- workout not found - no gpx file for workout" +msgid "- ``workout not found`` - ``no gpx file for workout``" msgstr "" #: ../../:1 -msgid "no gpx file for workout" +msgid "``no gpx file for workout``" msgstr "" #: ../../:1 @@ -1360,7 +1348,7 @@ msgid "sport id and notes (example: ``{\"sport_id\": 1, \"notes\": \"\"}``). Dou msgstr "" #: ../../:1 -msgid "workout created" +msgid "``workout created``" msgstr "" #: ../../:1 @@ -1399,6 +1387,10 @@ msgstr "" msgid "workout date, in user timezone (format: ``%Y-%m-%d %H:%M``)" msgstr "" +#: ../../:1 +msgid "workout created" +msgstr "" + #: ../../:1 msgid "Update a workout." msgstr "" @@ -3006,7 +2998,8 @@ msgid "Hiking" msgstr "" #: ../source/changelog.md:1016 -msgid "Montain Biking" +#: ../source/features.rst:19 +msgid "Mountain Biking" msgstr "" #: ../source/changelog.md:1017 @@ -3341,10 +3334,6 @@ msgstr "" msgid "Cycling (Virtual) (*new in 0.7.3*)" msgstr "" -#: ../source/features.rst:19 -msgid "Mountain Biking" -msgstr "" - #: ../source/features.rst:20 msgid "Mountain Biking (Electric) (*new in 0.5.0*)" msgstr "" diff --git a/docsrc/locales/en/LC_MESSAGES/docs.mo b/docsrc/locales/en/LC_MESSAGES/docs.mo index f5e89cd2..834cf8d7 100644 Binary files a/docsrc/locales/en/LC_MESSAGES/docs.mo and b/docsrc/locales/en/LC_MESSAGES/docs.mo differ diff --git a/docsrc/locales/en/LC_MESSAGES/docs.po b/docsrc/locales/en/LC_MESSAGES/docs.po index 681c665f..40731a76 100644 --- a/docsrc/locales/en/LC_MESSAGES/docs.po +++ b/docsrc/locales/en/LC_MESSAGES/docs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: FitTrackee 0.7.17\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-06-18 15:20+0200\n" +"POT-Creation-Date: 2023-06-18 20:35+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: en\n" @@ -42,11 +42,11 @@ msgid "**Example responses**:" msgstr "" #: ../../:1 -msgid "success" +msgid "success:" msgstr "" #: ../../:1 -msgid "error on registration" +msgid "error on registration:" msgstr "" #: ../../ @@ -80,50 +80,54 @@ msgid "Status Codes" msgstr "" #: ../../:1 -msgid "" -"- invalid payload - sorry, that username is already taken - Errors: -" -" username: 3 to 30 characters required - username: only " -"alphanumeric characters and the underscore character \"_\" allowed" -" - email: valid email must be provided - password: 8 characters " -"required" -msgstr "" - -#: ../../:1 -msgid "invalid payload" -msgstr "" - -#: ../../:1 -msgid "sorry, that username is already taken" -msgstr "" - -#: ../../:1 -msgid "Errors:" -msgstr "" - -#: ../../:1 -msgid "username: 3 to 30 characters required" +msgid "``success``" msgstr "" #: ../../:1 msgid "" -"username: only alphanumeric characters and the underscore character \"_\"" -" allowed" +"- ``invalid payload`` - ``sorry, that username is already taken`` - " +"``sorry, you must agree privacy policy to register`` - ``username: 3 to " +"30 characters required`` - ``username: only alphanumeric characters and " +"the underscore character \"_\" allowed`` - ``email: valid email must be" +" provided`` - ``password: 8 characters required``" msgstr "" #: ../../:1 -msgid "email: valid email must be provided" +msgid "``invalid payload``" msgstr "" #: ../../:1 -msgid "password: 8 characters required" +msgid "``sorry, that username is already taken``" msgstr "" #: ../../:1 -msgid "error, registration is disabled" +msgid "``sorry, you must agree privacy policy to register``" msgstr "" #: ../../:1 -msgid "error, please try again or contact the administrator" +msgid "``username: 3 to 30 characters required``" +msgstr "" + +#: ../../:1 +msgid "" +"``username: only alphanumeric characters and the underscore character " +"\"_\" allowed``" +msgstr "" + +#: ../../:1 +msgid "``email: valid email must be provided``" +msgstr "" + +#: ../../:1 +msgid "``password: 8 characters required``" +msgstr "" + +#: ../../:1 +msgid "``error, registration is disabled``" +msgstr "" + +#: ../../:1 +msgid "``error, please try again or contact the administrator``" msgstr "" #: ../../:1 @@ -139,7 +143,7 @@ msgid "confirmation token" msgstr "" #: ../../:1 -msgid "account confirmation successful" +msgid "``account confirmation successful``" msgstr "" #: ../../:1 @@ -151,11 +155,11 @@ msgid "If email sending is disabled, this endpoint is not available." msgstr "" #: ../../:1 -msgid "confirmation email resent" +msgid "``confirmation email resent``" msgstr "" #: ../../:1 -msgid "the requested URL was not found on the server" +msgid "``the requested URL was not found on the server``" msgstr "" #: ../../:1 @@ -167,7 +171,7 @@ msgid "Only user with an active account can log in." msgstr "" #: ../../:1 -msgid "successful login" +msgid "successful login:" msgstr "" #: ../../:1 @@ -179,11 +183,11 @@ msgid "password" msgstr "" #: ../../:1 -msgid "successfully logged in" +msgid "``successfully logged in``" msgstr "" #: ../../:1 -msgid "invalid credentials" +msgid "``invalid credentials``" msgstr "" #: ../../:1 @@ -202,26 +206,22 @@ msgstr "" msgid "OAuth 2.0 Bearer Token" msgstr "" -#: ../../:1 -msgid "success." -msgstr "" - #: ../../:1 msgid "" -"- provide a valid auth token - signature expired, please log in again - " -"invalid token, please log in again" +"- ``provide a valid auth token`` - ``signature expired, please log in " +"again`` - ``invalid token, please log in again``" msgstr "" #: ../../:1 -msgid "provide a valid auth token" +msgid "``provide a valid auth token``" msgstr "" #: ../../:1 -msgid "signature expired, please log in again" +msgid "``signature expired, please log in again``" msgstr "" #: ../../:1 -msgid "invalid token, please log in again" +msgid "``invalid token, please log in again``" msgstr "" #: ../../:1 @@ -254,11 +254,7 @@ msgid "user birth date (format: ``%Y-%m-%d``)" msgstr "" #: ../../:1 -msgid "user profile updated" -msgstr "" - -#: ../../:1 -msgid "- invalid payload" +msgid "``user profile updated``" msgstr "" #: ../../:1 @@ -330,17 +326,17 @@ msgid "does week start on Monday?" msgstr "" #: ../../:1 -msgid "user preferences updated" +msgid "``user preferences updated``" msgstr "" #: ../../:1 msgid "" -"- invalid payload - password: password and password confirmation don't " -"match" +"- ``invalid payload`` - ``password: password and password confirmation " +"don't match``" msgstr "" #: ../../:1 -msgid "password: password and password confirmation don't match" +msgid "``password: password and password confirmation don't match``" msgstr "" #: ../../:1 @@ -360,19 +356,19 @@ msgid "stopped speed threshold used by gpxpy" msgstr "" #: ../../:1 -msgid "- invalid payload - invalid hexadecimal color" +msgid "``user sport preferences updated``" msgstr "" #: ../../:1 -msgid "invalid hexadecimal color" +msgid "- ``invalid payload`` - ``invalid hexadecimal color``" msgstr "" #: ../../:1 -msgid "- sport does not exist" +msgid "``invalid hexadecimal color``" msgstr "" #: ../../:1 -msgid "sport does not exist" +msgid "``sport does not exist``" msgstr "" #: ../../:1 @@ -404,33 +400,33 @@ msgid "image file (allowed extensions: .jpg, .png, .gif)" msgstr "" #: ../../:1 -msgid "user picture updated" +msgid "``user picture updated``" msgstr "" #: ../../:1 msgid "" -"- invalid payload - no file part - no selected file - file extension not " -"allowed" +"- ``invalid payload`` - ``no file part`` - ``no selected file`` - ``file " +"extension not allowed``" msgstr "" #: ../../:1 -msgid "no file part" +msgid "``no file part``" msgstr "" #: ../../:1 -msgid "no selected file" +msgid "``no selected file``" msgstr "" #: ../../:1 -msgid "file extension not allowed" +msgid "``file extension not allowed``" msgstr "" #: ../../:1 -msgid "error during picture update: file size exceeds 1.0MB" +msgid "``error during picture update: file size exceeds 1.0MB``" msgstr "" #: ../../:1 -msgid "error during picture update" +msgid "``error during picture update``" msgstr "" #: ../../:1 @@ -442,7 +438,7 @@ msgid "picture deleted" msgstr "" #: ../../:1 -msgid "error during picture deletion" +msgid "``error during picture deletion``" msgstr "" #: ../../:1 @@ -454,7 +450,7 @@ msgid "If email sending is disabled, this endpoint is not available" msgstr "" #: ../../:1 -msgid "password reset request processed" +msgid "``password reset request processed``" msgstr "" #: ../../:1 @@ -490,27 +486,29 @@ msgid "user new password" msgstr "" #: ../../:1 -msgid "user account updated" +msgid "``user account updated``" msgstr "" #: ../../:1 msgid "" -"- invalid payload - email is missing - current password is missing - " -"email: valid email must be provided - password: 8 characters required" +"- ``invalid payload`` - ``email is missing`` - ``current password is " +"missing`` - ``email: valid email must be provided`` - ``password: 8 " +"characters required``" msgstr "" #: ../../:1 -msgid "email is missing" +msgid "``email is missing``" msgstr "" #: ../../:1 -msgid "current password is missing" +msgid "``current password is missing``" msgstr "" #: ../../:1 msgid "" -"- provide a valid auth token - signature expired, please log in again - " -"invalid token, please log in again - invalid credentials" +"- ``provide a valid auth token`` - ``signature expired, please log in " +"again`` - ``invalid token, please log in again`` - ``invalid " +"credentials``" msgstr "" #: ../../:1 @@ -526,11 +524,11 @@ msgid "password reset token" msgstr "" #: ../../:1 -msgid "password updated" +msgid "``password updated``" msgstr "" #: ../../:1 -msgid "invalid token, please request a new token" +msgid "``invalid token, please request a new token``" msgstr "" #: ../../:1 @@ -538,7 +536,7 @@ msgid "Update user email after confirmation." msgstr "" #: ../../:1 -msgid "email updated" +msgid "``email updated``" msgstr "" #: ../../:1 @@ -546,45 +544,37 @@ msgid "User logout. If a valid token is provided, it will be blacklisted." msgstr "" #: ../../:1 -msgid "successful logout" +msgid "successful logout:" msgstr "" #: ../../:1 -msgid "error on logout" +msgid "error on logout:" msgstr "" #: ../../:1 -msgid "successfully logged out" +msgid "``successfully logged out``" msgstr "" #: ../../:1 msgid "" -"- provide a valid auth token - The access token provided is expired, " -"revoked, malformed, or invalid for other reasons." +"- ``provide a valid auth token`` - ``The access token provided is " +"expired, revoked, malformed, or invalid for other reasons.``" msgstr "" #: ../../:1 msgid "" -"The access token provided is expired, revoked, malformed, or invalid for " -"other reasons." +"``The access token provided is expired, revoked, malformed, or invalid " +"for other reasons.``" msgstr "" #: ../../:1 -msgid "- error on token blacklist" -msgstr "" - -#: ../../:1 -msgid "error on token blacklist" +msgid "``error on token blacklist``" msgstr "" #: ../../:1 msgid "The authenticated user accepts the privacy policy." msgstr "" -#: ../../:1 -msgid "internal server error" -msgstr "" - #: ../../:1 msgid "Get a data export info for authenticated user if a request exists." msgstr "" @@ -606,11 +596,11 @@ msgid "file name and size (in bytes) when export is successful" msgstr "" #: ../../:1 -msgid "if a request exists" +msgid "if a request exists:" msgstr "" #: ../../:1 -msgid "if no request" +msgid "if no request:" msgstr "" #: ../../:1 @@ -618,15 +608,15 @@ msgid "Request a data export for authenticated user." msgstr "" #: ../../:1 -msgid "- ongoing request exists - completed request already exists" +msgid "- ``ongoing request exists`` - ``completed request already exists``" msgstr "" #: ../../:1 -msgid "ongoing request exists" +msgid "``ongoing request exists``" msgstr "" #: ../../:1 -msgid "completed request already exists" +msgid "``completed request already exists``" msgstr "" #: ../../:1 @@ -638,7 +628,7 @@ msgid "filename" msgstr "" #: ../../:1 -msgid "file not found" +msgid "``file not found``" msgstr "" #: ../source/api/configuration.rst:2 @@ -650,7 +640,7 @@ msgid "Get Application configuration." msgstr "" #: ../../:1 -msgid "error on getting configuration" +msgid "``error on getting configuration``" msgstr "" #: ../../:1 @@ -699,21 +689,21 @@ msgstr "" #: ../../:1 msgid "" -"- provide a valid auth token - signature expired, please log in again - " -"invalid token, please log in again - valid email must be provided for " -"admin contact" +"- ``provide a valid auth token`` - ``signature expired, please log in " +"again`` - ``invalid token, please log in again`` - ``valid email must be " +"provided for admin contact``" msgstr "" #: ../../:1 -msgid "valid email must be provided for admin contact" +msgid "``valid email must be provided for admin contact``" msgstr "" #: ../../:1 -msgid "you do not have permissions" +msgid "``you do not have permissions``" msgstr "" #: ../../:1 -msgid "error when updating configuration" +msgid "``error when updating configuration``" msgstr "" #: ../../:1 @@ -745,11 +735,11 @@ msgid "" msgstr "" #: ../../:1 -msgid "without parameters" +msgid "without parameters:" msgstr "" #: ../../:1 -msgid "with 'page' parameter" +msgid "with 'page' parameter:" msgstr "" #: ../../ @@ -785,7 +775,7 @@ msgid "client scopes" msgstr "" #: ../../:1 -msgid "client description (`OPTIONAL`)" +msgid "client description (``OPTIONAL``)" msgstr "" #: ../../:1 @@ -793,7 +783,7 @@ msgid "Get an OAuth2 client (app) by 'client_id'." msgstr "" #: ../../:1 -msgid "not found" +msgid "not found:" msgstr "" #: ../../:1 @@ -801,7 +791,7 @@ msgid "OAuth2 client client_id" msgstr "" #: ../../:1 -msgid "OAuth2 client not found" +msgid "``OAuth2 client not found``" msgstr "" #: ../../:1 @@ -865,7 +855,7 @@ msgid "" msgstr "" #: ../../:1 -msgid "- invalid payload - errors returned by Authlib library" +msgid "- ``invalid payload`` - errors returned by Authlib library" msgstr "" #: ../../:1 @@ -898,10 +888,6 @@ msgstr "" msgid "refresh token (for token refresh)" msgstr "" -#: ../../:1 -msgid "- errors returned by Authlib library" -msgstr "" - #: ../../:1 msgid "Revoke a token for a given OAuth2 client (app)." msgstr "" @@ -963,11 +949,11 @@ msgid "Get all sports" msgstr "" #: ../../:1 -msgid "for non admin user :" +msgid "for non admin user:" msgstr "" #: ../../:1 -msgid "for admin user :" +msgid "for admin user:" msgstr "" #: ../../:1 @@ -975,15 +961,19 @@ msgid "Get a sport" msgstr "" #: ../../:1 -msgid "success for non admin user :" +msgid "success for non admin user:" msgstr "" #: ../../:1 -msgid "success for admin user :" +msgid "success for admin user:" msgstr "" #: ../../:1 -msgid "sport not found" +msgid "sport not found:" +msgstr "" + +#: ../../:1 +msgid "``sport not found``" msgstr "" #: ../../:1 @@ -1015,11 +1005,11 @@ msgid "**Example requests**:" msgstr "" #: ../../:1 -msgid "with parameters" +msgid "with parameters:" msgstr "" #: ../../:1 -msgid "no workouts" +msgid "no workouts:" msgstr "" #: ../../:1 @@ -1063,11 +1053,7 @@ msgid "``year``: year (default)" msgstr "" #: ../../:1 -msgid "- user does not exist" -msgstr "" - -#: ../../:1 -msgid "user does not exist" +msgid "``user does not exist``" msgstr "" #: ../../:1 @@ -1075,15 +1061,15 @@ msgid "Get workouts statistics for a user by sport." msgstr "" #: ../../:1 -msgid "without parameters (get stats for all sports with workouts)" +msgid "without parameters (get stats for all sports with workouts):" msgstr "" #: ../../:1 -msgid "with sport id" +msgid "with sport id:" msgstr "" #: ../../:1 -msgid "- user does not exist - sport does not exist" +msgid "- ``user does not exist`` - ``sport does not exist``" msgstr "" #: ../../:1 @@ -1109,7 +1095,7 @@ msgid "**Scope**: ``users:read``" msgstr "" #: ../../:1 -msgid "with some query parameters" +msgid "with some query parameters:" msgstr "" #: ../../:1 @@ -1144,16 +1130,20 @@ msgstr "" msgid "user name" msgstr "" +#: ../../:1 +msgid "- ``user does not exist``" +msgstr "" + #: ../../:1 msgid "get user picture" msgstr "" #: ../../:1 -msgid "- user does not exist - No picture." +msgid "- ``user does not exist`` - ``No picture.``" msgstr "" #: ../../:1 -msgid "No picture." +msgid "``No picture.``" msgstr "" #: ../../:1 @@ -1204,16 +1194,16 @@ msgstr "" #: ../../:1 msgid "" -"- invalid payload - valid email must be provided - new email must be " -"different than curent email" +"- ``invalid payload`` - ``valid email must be provided`` - ``new email " +"must be different than curent email``" msgstr "" #: ../../:1 -msgid "valid email must be provided" +msgid "``valid email must be provided``" msgstr "" #: ../../:1 -msgid "new email must be different than curent email" +msgid "``new email must be different than curent email``" msgstr "" #: ../../:1 @@ -1236,12 +1226,12 @@ msgstr "" #: ../../:1 msgid "" -"- you do not have permissions - you can not delete your account, no other" -" user has admin rights" +"- ``you do not have permissions`` - ``you can not delete your account, no" +" other user has admin rights``" msgstr "" #: ../../:1 -msgid "you can not delete your account, no other user has admin rights" +msgid "``you can not delete your account, no other user has admin rights``" msgstr "" #: ../source/api/workouts.rst:2 ../source/features.rst:13 @@ -1253,7 +1243,7 @@ msgid "Get workouts for the authenticated user." msgstr "" #: ../../:1 -msgid "returning at least one workout" +msgid "returning at least one workout:" msgstr "" #: ../../:1 @@ -1327,7 +1317,7 @@ msgid "workout short id" msgstr "" #: ../../:1 -msgid "workout not found" +msgid "``workout not found``" msgstr "" #: ../../:1 @@ -1335,11 +1325,11 @@ msgid "Get gpx file for a workout displayed on map with Leaflet." msgstr "" #: ../../:1 -msgid "- workout not found - no gpx file for this workout" +msgid "- ``workout not found`` - ``no gpx file for this workout``" msgstr "" #: ../../:1 -msgid "no gpx file for this workout" +msgid "``no gpx file for this workout``" msgstr "" #: ../../:1 @@ -1367,7 +1357,7 @@ msgid "workout map id" msgstr "" #: ../../:1 -msgid "map does not exist" +msgid "``map does not exist``" msgstr "" #: ../../:1 @@ -1399,11 +1389,11 @@ msgid "Download gpx file." msgstr "" #: ../../:1 -msgid "- workout not found - no gpx file for workout" +msgid "- ``workout not found`` - ``no gpx file for workout``" msgstr "" #: ../../:1 -msgid "no gpx file for workout" +msgid "``no gpx file for workout``" msgstr "" #: ../../:1 @@ -1421,7 +1411,7 @@ msgid "" msgstr "" #: ../../:1 -msgid "workout created" +msgid "``workout created``" msgstr "" #: ../../:1 @@ -1461,6 +1451,10 @@ msgstr "" msgid "workout date, in user timezone (format: ``%Y-%m-%d %H:%M``)" msgstr "" +#: ../../:1 +msgid "workout created" +msgstr "" + #: ../../:1 msgid "Update a workout." msgstr "" @@ -3062,8 +3056,8 @@ msgstr "" msgid "Hiking" msgstr "" -#: ../source/changelog.md:1016 -msgid "Montain Biking" +#: ../source/changelog.md:1016 ../source/features.rst:19 +msgid "Mountain Biking" msgstr "" #: ../source/changelog.md:1017 ../source/features.rst:23 @@ -3403,10 +3397,6 @@ msgstr "" msgid "Cycling (Virtual) (*new in 0.7.3*)" msgstr "" -#: ../source/features.rst:19 -msgid "Mountain Biking" -msgstr "" - #: ../source/features.rst:20 msgid "Mountain Biking (Electric) (*new in 0.5.0*)" msgstr "" diff --git a/docsrc/locales/fr/LC_MESSAGES/docs.mo b/docsrc/locales/fr/LC_MESSAGES/docs.mo index 06fb2a64..558d9f0c 100644 Binary files a/docsrc/locales/fr/LC_MESSAGES/docs.mo and b/docsrc/locales/fr/LC_MESSAGES/docs.mo differ diff --git a/docsrc/locales/fr/LC_MESSAGES/docs.po b/docsrc/locales/fr/LC_MESSAGES/docs.po index 5b823a00..a01af6b9 100644 --- a/docsrc/locales/fr/LC_MESSAGES/docs.po +++ b/docsrc/locales/fr/LC_MESSAGES/docs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: FitTrackee 0.7.17\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-06-18 15:20+0200\n" +"POT-Creation-Date: 2023-06-18 20:36+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: fr\n" @@ -21,796 +21,811 @@ msgstr "" #: ../source/api/auth.rst:2 msgid "Authentication and account" -msgstr "" +msgstr "Authentification et compte" #: ../../:1 msgid "Register a user and send confirmation email." -msgstr "" +msgstr "Enregistrer un utilisateur et envoyer un courriel de confirmation." #: ../../:1 msgid "" "The newly created account is inactive. The user must confirm his email to" " activate it." msgstr "" +"Le compte nouvellement créé est inactif. L'utilisateur doit confirmer son" +" courriel pour l'activer." #: ../../:1 msgid "**Example request**:" -msgstr "" +msgstr "**Exemple de requête**:" #: ../../:1 msgid "**Example responses**:" -msgstr "" +msgstr "**Exemple de réponse**:" #: ../../:1 -msgid "success" -msgstr "" +#, fuzzy +msgid "success:" +msgstr "succès :" #: ../../:1 -msgid "error on registration" -msgstr "" +#, fuzzy +msgid "error on registration:" +msgstr "erreur lors de l'enregistrement :" #: ../../ msgid "Request JSON Object" -msgstr "" +msgstr "Object JSON de requête" #: ../../:1 msgid "username (3 to 30 characters required)" -msgstr "" +msgstr "nom d'utilisateur (3 à 30 caractères requis)" #: ../../:1 msgid "user email" -msgstr "" +msgstr "courriel de l'utilisateur" #: ../../:1 msgid "password (8 characters required)" -msgstr "" +msgstr "mot de passe (8 caractères minimum)" #: ../../:1 msgid "" "user language preferences (if not provided or invalid, fallback to 'en' " "(english))" msgstr "" +"préférence de la langue utilisée sur l'interface (si non fournie, la " +"langue utilisée sera l'anglais ('en')" #: ../../:1 +#, fuzzy msgid "``true`` if user accepted privacy policy" -msgstr "" +msgstr "``true`` si l'utilisateur a accepté la politique de confidentialité" #: ../../ msgid "Status Codes" +msgstr "Codes d'état" + +#: ../../:1 +#, fuzzy +msgid "``success``" msgstr "" #: ../../:1 msgid "" -"- invalid payload - sorry, that username is already taken - Errors: -" -" username: 3 to 30 characters required - username: only " -"alphanumeric characters and the underscore character \"_\" allowed" -" - email: valid email must be provided - password: 8 characters " -"required" +"- ``invalid payload`` - ``sorry, that username is already taken`` - " +"``sorry, you must agree privacy policy to register`` - ``username: 3 to " +"30 characters required`` - ``username: only alphanumeric characters and " +"the underscore character \"_\" allowed`` - ``email: valid email must be" +" provided`` - ``password: 8 characters required``" msgstr "" #: ../../:1 -msgid "invalid payload" +msgid "``invalid payload``" msgstr "" #: ../../:1 -msgid "sorry, that username is already taken" +msgid "``sorry, that username is already taken``" msgstr "" #: ../../:1 -msgid "Errors:" +msgid "``sorry, you must agree privacy policy to register``" msgstr "" #: ../../:1 -msgid "username: 3 to 30 characters required" +msgid "``username: 3 to 30 characters required``" msgstr "" #: ../../:1 msgid "" -"username: only alphanumeric characters and the underscore character \"_\"" -" allowed" +"``username: only alphanumeric characters and the underscore character " +"\"_\" allowed``" msgstr "" #: ../../:1 -msgid "email: valid email must be provided" +msgid "``email: valid email must be provided``" msgstr "" #: ../../:1 -msgid "password: 8 characters required" +msgid "``password: 8 characters required``" msgstr "" #: ../../:1 -msgid "error, registration is disabled" +msgid "``error, registration is disabled``" msgstr "" #: ../../:1 -msgid "error, please try again or contact the administrator" +msgid "``error, please try again or contact the administrator``" msgstr "" #: ../../:1 msgid "Activate user account after registration." -msgstr "" +msgstr "Activer le compte utilisateur après l'inscription." #: ../../:1 msgid "**Example response**:" -msgstr "" +msgstr "**Exemple de réponse**:" #: ../../:1 msgid "confirmation token" -msgstr "" +msgstr "jeton de confirmation" #: ../../:1 -msgid "account confirmation successful" +msgid "``account confirmation successful``" msgstr "" #: ../../:1 msgid "Resend email with instructions to confirm account." -msgstr "" +msgstr "Renvoyer le courriel avec les instructions pour confirmer le compte." #: ../../:1 msgid "If email sending is disabled, this endpoint is not available." msgstr "" +"Si l'envoi des courriels est désactivé, ce point d'accès n'est pas " +"disponible." #: ../../:1 -msgid "confirmation email resent" +msgid "``confirmation email resent``" msgstr "" #: ../../:1 -msgid "the requested URL was not found on the server" +msgid "``the requested URL was not found on the server``" msgstr "" #: ../../:1 msgid "User login." -msgstr "" +msgstr "Connexion de l'utilisateur" #: ../../:1 msgid "Only user with an active account can log in." -msgstr "" +msgstr "Seuls les utilisateurs disposant d'un compte actif peuvent se connecter." #: ../../:1 -msgid "successful login" -msgstr "" +msgid "successful login:" +msgstr "connexion avec succès :" #: ../../:1 msgid "error on login" -msgstr "" +msgstr "erreur à la connexion" #: ../../:1 msgid "password" +msgstr "mot de passe" + +#: ../../:1 +msgid "``successfully logged in``" msgstr "" #: ../../:1 -msgid "successfully logged in" -msgstr "" - -#: ../../:1 -msgid "invalid credentials" +msgid "``invalid credentials``" msgstr "" #: ../../:1 msgid "Get authenticated user info (profile, account, preferences)." msgstr "" +"Obtenir des informations sur l'utilisateur authentifié (profil, compte, " +"préférences)." #: ../../:1 msgid "**Scope**: ``profile:read``" -msgstr "" +msgstr "**Scope**: ``profile:read``" #: ../../ msgid "Request Headers" -msgstr "" +msgstr "Entêtes de la requête" #: ../../:1 msgid "OAuth 2.0 Bearer Token" -msgstr "" - -#: ../../:1 -msgid "success." -msgstr "" +msgstr "Jeton 'OAuth 2.0 Bearer'" #: ../../:1 msgid "" -"- provide a valid auth token - signature expired, please log in again - " -"invalid token, please log in again" +"- ``provide a valid auth token`` - ``signature expired, please log in " +"again`` - ``invalid token, please log in again``" msgstr "" #: ../../:1 -msgid "provide a valid auth token" +msgid "``provide a valid auth token``" msgstr "" #: ../../:1 -msgid "signature expired, please log in again" +msgid "``signature expired, please log in again``" msgstr "" #: ../../:1 -msgid "invalid token, please log in again" +msgid "``invalid token, please log in again``" msgstr "" #: ../../:1 msgid "Edit authenticated user profile." -msgstr "" +msgstr "Modifier le profil de l'utilisateur authentifié." #: ../../:1 msgid "**Scope**: ``profile:write``" -msgstr "" +msgstr "**Scope**: ``profile:write``" #: ../../:1 msgid "user first name" -msgstr "" +msgstr "prénom de l'utilisateur" #: ../../:1 msgid "user last name" -msgstr "" +msgstr "nom de l'utilisateur" #: ../../:1 msgid "user location" -msgstr "" +msgstr "localisation de l'utilisateur" #: ../../:1 msgid "user biography" -msgstr "" +msgstr "biographie de l'utilisateur" #: ../../:1 #, python-format msgid "user birth date (format: ``%Y-%m-%d``)" -msgstr "" +msgstr "date de naissance de l'utilisateur (format: ``%Y-%m-%d``)" #: ../../:1 -msgid "user profile updated" -msgstr "" - -#: ../../:1 -msgid "- invalid payload" +msgid "``user profile updated``" msgstr "" #: ../../:1 msgid "Edit authenticated user preferences." -msgstr "" +msgstr "Modifier les préférences de l'utilisateur authentifié." #: ../../:1 msgid "Supported date formats:" -msgstr "" +msgstr "Formats de date pris en charge :" #: ../../:1 msgid "``MM/dd/yyyy`` (default value)" -msgstr "" +msgstr "``MM/dd/yyyy`` (valeur par défaut)" #: ../../:1 msgid "``dd/MM/yyyy``" -msgstr "" +msgstr "``dd/MM/yyyy``" #: ../../:1 msgid "``yyyy-MM-dd``" -msgstr "" +msgstr "``yyyy-MM-dd``" #: ../../:1 msgid "``date_string``, corresponding on client to:" -msgstr "" +msgstr "``date_string``, correspondant sur l'application à :" #: ../../:1 msgid "``MMM. do, yyyy`` for ``en`` locale" -msgstr "" +msgstr "``MMM. do, yyyy`` pour la locale ``en``" #: ../../:1 msgid "``d MMM yyyy`` for ``es``, ``fr``, ``gl``, ``it`` and ``nl`` locales" -msgstr "" +msgstr "``d MMM yyyy`` pour les locales ``es``, ``fr``, ``gl``, ``it`` et ``nl``" #: ../../:1 msgid "``do MMM yyyy`` for ``de`` and ``nb`` locales" -msgstr "" +msgstr "`do MMM yyyy`` pour les locales ``de`` et ``nb``" #: ../../:1 msgid "the format used to display dates in the app" -msgstr "" +msgstr "le format utilisé pour afficher les dates dans l'application" #: ../../:1 msgid "display highest ascent records and total" -msgstr "" +msgstr "afficher les records de dénivelé et le total de dénivelé" #: ../../:1 msgid "display distance in imperial units" -msgstr "" +msgstr "afficher la distance en unités impériales" #: ../../:1 msgid "language preferences" -msgstr "" +msgstr "préférences pour la langue" #: ../../:1 msgid "do elevation plots start at zero?" -msgstr "" +msgstr "Les graphiques d'altitude commencent-ils à zéro ?" #: ../../:1 msgid "user time zone" -msgstr "" +msgstr "fuseau horaire de l'utilisateur" #: ../../:1 msgid "Use unfiltered gpx to calculate speeds" -msgstr "" +msgstr "Utiliser des points gpx non filtrés pour calculer les vitesses" #: ../../:1 msgid "does week start on Monday?" -msgstr "" +msgstr "La semaine commence-t-elle le lundi ?" #: ../../:1 -msgid "user preferences updated" +msgid "``user preferences updated``" msgstr "" #: ../../:1 msgid "" -"- invalid payload - password: password and password confirmation don't " -"match" +"- ``invalid payload`` - ``password: password and password confirmation " +"don't match``" msgstr "" #: ../../:1 -msgid "password: password and password confirmation don't match" +msgid "``password: password and password confirmation don't match``" msgstr "" #: ../../:1 msgid "Edit authenticated user sport preferences." -msgstr "" +msgstr "Modifier les préférences des sports de l'utilisateur authentifié." #: ../../:1 msgid "valid hexadecimal color" -msgstr "" +msgstr "couleur au format hexadécimale valide" #: ../../:1 msgid "is sport available when adding a workout" -msgstr "" +msgstr "le sport est-il disponible lors de l'ajout d'une séance" #: ../../:1 msgid "stopped speed threshold used by gpxpy" +msgstr "seuil de vitesse arrêté utilisé par gpxpy" + +#: ../../:1 +msgid "``user sport preferences updated``" msgstr "" #: ../../:1 -msgid "- invalid payload - invalid hexadecimal color" +msgid "- ``invalid payload`` - ``invalid hexadecimal color``" msgstr "" #: ../../:1 -msgid "invalid hexadecimal color" +msgid "``invalid hexadecimal color``" msgstr "" #: ../../:1 -msgid "- sport does not exist" -msgstr "" - -#: ../../:1 -msgid "sport does not exist" +msgid "``sport does not exist``" msgstr "" #: ../../:1 msgid "Reset authenticated user preferences for a given sport." msgstr "" +"Réinitialiser les préférences de l'utilisateur authentifié pour un sport " +"donné." #: ../../ msgid "Parameters" -msgstr "" +msgstr "Paramètres" #: ../../:1 msgid "sport id" -msgstr "" +msgstr "identifiant du sport" #: ../../:1 msgid "user preferences deleted" -msgstr "" +msgstr "préférences de l'utilisateur supprimées" #: ../../:1 msgid "Update authenticated user picture." -msgstr "" +msgstr "Mise à jour de l'image de l'utilisateur authentifié." #: ../../ msgid "Form Parameters" -msgstr "" +msgstr "Paramètres du formulaire" #: ../../:1 msgid "image file (allowed extensions: .jpg, .png, .gif)" -msgstr "" +msgstr "fichier de l'image (extensions autorisées : .jpg, .png, .gif)" #: ../../:1 -msgid "user picture updated" +msgid "``user picture updated``" msgstr "" #: ../../:1 msgid "" -"- invalid payload - no file part - no selected file - file extension not " -"allowed" +"- ``invalid payload`` - ``no file part`` - ``no selected file`` - ``file " +"extension not allowed``" msgstr "" #: ../../:1 -msgid "no file part" +msgid "``no file part``" msgstr "" #: ../../:1 -msgid "no selected file" +msgid "``no selected file``" msgstr "" #: ../../:1 -msgid "file extension not allowed" +msgid "``file extension not allowed``" msgstr "" #: ../../:1 -msgid "error during picture update: file size exceeds 1.0MB" +msgid "``error during picture update: file size exceeds 1.0MB``" msgstr "" #: ../../:1 -msgid "error during picture update" +msgid "``error during picture update``" msgstr "" #: ../../:1 msgid "Delete authenticated user picture." -msgstr "" +msgstr "Supprimer l'image de l'utilisateur authentifié." #: ../../:1 msgid "picture deleted" -msgstr "" +msgstr "image supprimée" #: ../../:1 -msgid "error during picture deletion" +msgid "``error during picture deletion``" msgstr "" #: ../../:1 msgid "Handle password reset request." -msgstr "" +msgstr "Traiter les demandes de réinitialisation de mot de passe." #: ../../:1 msgid "If email sending is disabled, this endpoint is not available" msgstr "" +"Si l'envoi de courriel est désactivé, ce point d'accès n'est pas " +"disponible." #: ../../:1 -msgid "password reset request processed" +msgid "``password reset request processed``" msgstr "" #: ../../:1 msgid "Update authenticated user email and password." -msgstr "" +msgstr "Mise à jour de l'email et du mot de passe de l'utilisateur authentifié." #: ../../:1 msgid "It sends emails if sending is enabled:" -msgstr "" +msgstr "Les courriels suivants sont envoyés si l'envoi est activé :" #: ../../:1 msgid "Password change" -msgstr "" +msgstr "Modification de mot de passe" #: ../../:1 msgid "Email change:" -msgstr "" +msgstr "Changement d'adresse électronique" #: ../../:1 msgid "one to the current address to inform user" -msgstr "" +msgstr "un à l'adresse actuelle pour informer l'utilisateur" #: ../../:1 msgid "another one to the new address to confirm it." -msgstr "" +msgstr "un autre à la nouvelle adresse pour la confirmer." #: ../../:1 msgid "user current password" -msgstr "" +msgstr "mot de passe actuel de l'utilisateur" #: ../../:1 msgid "user new password" -msgstr "" +msgstr "nouveau mot de passe de l'utilisateur" #: ../../:1 -msgid "user account updated" +msgid "``user account updated``" msgstr "" #: ../../:1 msgid "" -"- invalid payload - email is missing - current password is missing - " -"email: valid email must be provided - password: 8 characters required" +"- ``invalid payload`` - ``email is missing`` - ``current password is " +"missing`` - ``email: valid email must be provided`` - ``password: 8 " +"characters required``" msgstr "" #: ../../:1 -msgid "email is missing" +msgid "``email is missing``" msgstr "" #: ../../:1 -msgid "current password is missing" +msgid "``current password is missing``" msgstr "" #: ../../:1 msgid "" -"- provide a valid auth token - signature expired, please log in again - " -"invalid token, please log in again - invalid credentials" +"- ``provide a valid auth token`` - ``signature expired, please log in " +"again`` - ``invalid token, please log in again`` - ``invalid " +"credentials``" msgstr "" #: ../../:1 msgid "Update user password after password reset request." msgstr "" +"Mise à jour du mot de passe de l'utilisateur après une demande de " +"réinitialisation du mot de passe." #: ../../:1 msgid "It sends emails if sending is enabled." -msgstr "" +msgstr "Uniquement si l'envoi est activé." #: ../../:1 msgid "password reset token" +msgstr "jeton de réinitialisation du mot de passe" + +#: ../../:1 +msgid "``password updated``" msgstr "" #: ../../:1 -msgid "password updated" -msgstr "" - -#: ../../:1 -msgid "invalid token, please request a new token" +msgid "``invalid token, please request a new token``" msgstr "" #: ../../:1 msgid "Update user email after confirmation." -msgstr "" +msgstr "Mise à jour de l'adresse électronique de l'utilisateur après confirmation." #: ../../:1 -msgid "email updated" +msgid "``email updated``" msgstr "" #: ../../:1 msgid "User logout. If a valid token is provided, it will be blacklisted." msgstr "" +"Déconnexion de l'utilisateur. Si un jeton valide est fourni, il sera " +"invalidé." #: ../../:1 -msgid "successful logout" -msgstr "" +msgid "successful logout:" +msgstr "déconnexion avec succès :" #: ../../:1 -msgid "error on logout" -msgstr "" +msgid "error on logout:" +msgstr "erreur lors de la déconnexion :" #: ../../:1 -msgid "successfully logged out" +msgid "``successfully logged out``" msgstr "" #: ../../:1 msgid "" -"- provide a valid auth token - The access token provided is expired, " -"revoked, malformed, or invalid for other reasons." +"- ``provide a valid auth token`` - ``The access token provided is " +"expired, revoked, malformed, or invalid for other reasons.``" msgstr "" #: ../../:1 msgid "" -"The access token provided is expired, revoked, malformed, or invalid for " -"other reasons." +"``The access token provided is expired, revoked, malformed, or invalid " +"for other reasons.``" msgstr "" #: ../../:1 -msgid "- error on token blacklist" -msgstr "" - -#: ../../:1 -msgid "error on token blacklist" +msgid "``error on token blacklist``" msgstr "" #: ../../:1 msgid "The authenticated user accepts the privacy policy." -msgstr "" - -#: ../../:1 -msgid "internal server error" -msgstr "" +msgstr "L'utilisateur authentifié accepte la politique de confidentialité." #: ../../:1 msgid "Get a data export info for authenticated user if a request exists." msgstr "" +"Obtenir l'archive de l'export de données pour l'utilisateur authentifié " +"si une demande existe." #: ../../:1 msgid "It returns:" -msgstr "" +msgstr "Il renvoie :" #: ../../:1 msgid "export creation date" -msgstr "" +msgstr "date de création de l'export" #: ../../:1 msgid "export status (``in_progress``, ``successful`` and ``errored``)" -msgstr "" +msgstr "état de l'export (``in_progress``, ``successful`` and ``errored``)" #: ../../:1 msgid "file name and size (in bytes) when export is successful" -msgstr "" +msgstr "nom du fichier et sa taille (en octets) lorsque l'export est réussi" #: ../../:1 -msgid "if a request exists" -msgstr "" +msgid "if a request exists:" +msgstr "si une requête existe" #: ../../:1 -msgid "if no request" -msgstr "" +#, fuzzy +msgid "if no request:" +msgstr "si aucun requête :" #: ../../:1 msgid "Request a data export for authenticated user." +msgstr "Demande d'export de données pour un utilisateur authentifié." + +#: ../../:1 +msgid "- ``ongoing request exists`` - ``completed request already exists``" msgstr "" #: ../../:1 -msgid "- ongoing request exists - completed request already exists" +msgid "``ongoing request exists``" msgstr "" #: ../../:1 -msgid "ongoing request exists" -msgstr "" - -#: ../../:1 -msgid "completed request already exists" +msgid "``completed request already exists``" msgstr "" #: ../../:1 msgid "Download a data export archive" -msgstr "" +msgstr "Télécharger une archive d'export de données" #: ../../:1 msgid "filename" -msgstr "" +msgstr "nom du fichier" #: ../../:1 -msgid "file not found" +msgid "``file not found``" msgstr "" #: ../source/api/configuration.rst:2 msgid "Configuration" -msgstr "" +msgstr "Configuration" #: ../../:1 msgid "Get Application configuration." -msgstr "" +msgstr "Obtenir la configuration de l'application." #: ../../:1 -msgid "error on getting configuration" +msgid "``error on getting configuration``" msgstr "" #: ../../:1 msgid "Update Application configuration." -msgstr "" +msgstr "Mettre à jour de la configuration de l'application." #: ../../:1 msgid "Authenticated user must be an admin." -msgstr "" +msgstr "L'utilisateur authentifié doit avoir des droits d'administration" #: ../../:1 msgid "**Scope**: ``application:write``" -msgstr "" +msgstr "**Scope**: ``application:write``" #: ../../:1 msgid "instance information" -msgstr "" +msgstr "informations de l'instance" #: ../../:1 msgid "email to contact the administrator" -msgstr "" +msgstr "adresse électronique pour contacter l'administrateur" #: ../../:1 msgid "max number of files in zip archive" -msgstr "" +msgstr "nombre maximum de fichiers dans l'archive zip" #: ../../:1 msgid "is registration enabled?" -msgstr "" +msgstr "l'inscription est-elle activée ?" #: ../../:1 msgid "max size of a single file" -msgstr "" +msgstr "taille maximale d'un fichier" #: ../../:1 msgid "max users allowed to register on instance" -msgstr "" +msgstr "nombre maximum d'utilisateurs autorisés à s'inscrire sur l'instance" #: ../../:1 msgid "max size of a zip archive" -msgstr "" +msgstr "taille maximale d'une archive zip" #: ../../:1 msgid "instance privacy policy" -msgstr "" +msgstr "politique de confidentialité de l'instance" #: ../../:1 msgid "" -"- provide a valid auth token - signature expired, please log in again - " -"invalid token, please log in again - valid email must be provided for " -"admin contact" +"- ``provide a valid auth token`` - ``signature expired, please log in " +"again`` - ``invalid token, please log in again`` - ``valid email must be " +"provided for admin contact``" msgstr "" #: ../../:1 -msgid "valid email must be provided for admin contact" +msgid "``valid email must be provided for admin contact``" msgstr "" #: ../../:1 -msgid "you do not have permissions" +msgid "``you do not have permissions``" msgstr "" #: ../../:1 -msgid "error when updating configuration" +msgid "``error when updating configuration``" msgstr "" #: ../../:1 msgid "health check endpoint" -msgstr "" +msgstr "point d'accès de contrôle" #: ../source/api/index.rst:4 msgid "Endpoints:" -msgstr "" +msgstr "Points d'accès" #: ../source/api/index.rst:2 msgid "API documentation" -msgstr "" +msgstr "Documentation de l'API" #: ../source/api/oauth2.rst:2 ../source/cli.rst:46 msgid "OAuth2" -msgstr "" +msgstr "OAuth2" #: ../../:1 msgid "" "Get OAuth2 clients (apps) for authenticated user with pagination (5 " "clients/page)." msgstr "" +"Obtenir les clients OAuth2 pour l'utilisateur authentifié avec pagination" +" (5 clients/page)." #: ../../:1 msgid "" "This endpoint is only accessible by FitTrackee client (first-party " "application)." -msgstr "" +msgstr "Ce point d'accès n'est accessible que par le client web FitTrackee client." #: ../../:1 -msgid "without parameters" -msgstr "" +msgid "without parameters:" +msgstr "sans paramètres :" #: ../../:1 -msgid "with 'page' parameter" -msgstr "" +msgid "with 'page' parameter:" +msgstr "avec le paramètre 'page' :" #: ../../ msgid "Query Parameters" -msgstr "" +msgstr "Paramètres de la requête" #: ../../:1 msgid "page for pagination (default: 1)" -msgstr "" +msgstr "page pour la pagination (par défaut : 1)" #: ../../:1 msgid "Create an OAuth2 client (app) for the authenticated user." -msgstr "" +msgstr "Créer un client OAuth2 pour l'utilisateur authentifié." #: ../../ msgid "JSON Parameters" -msgstr "" +msgstr "Paramètres JSON" #: ../../:1 msgid "client name" -msgstr "" +msgstr "nom du client" #: ../../:1 msgid "client URL" -msgstr "" +msgstr "URl du client" #: ../../:1 msgid "list of client redirect URLs (string)" -msgstr "" +msgstr "liste des URL de redirection du client (chaîne de caractères)" #: ../../:1 msgid "client scopes" -msgstr "" +msgstr "scopdes du client" #: ../../:1 -msgid "client description (`OPTIONAL`)" -msgstr "" +msgid "client description (``OPTIONAL``)" +msgstr "description du client (optionnelle)" #: ../../:1 msgid "Get an OAuth2 client (app) by 'client_id'." -msgstr "" +msgstr "Obtenir un client OAuth2 avec le 'client_id'." #: ../../:1 -msgid "not found" -msgstr "" +msgid "not found:" +msgstr "non trouvé :" #: ../../:1 msgid "OAuth2 client client_id" -msgstr "" +msgstr "client_id du client OAuth2" #: ../../:1 -msgid "OAuth2 client not found" +msgid "``OAuth2 client not found``" msgstr "" #: ../../:1 msgid "Get an OAuth2 client (app) by id (integer value)." -msgstr "" +msgstr "Obtenir un client OAuth2 avec l'identifiant (entier)." #: ../../:1 msgid "OAuth2 client id" -msgstr "" +msgstr "Identifiant du client OAuth2" #: ../../:1 msgid "Delete an OAuth2 client (app)." @@ -818,29 +833,31 @@ msgstr "" #: ../../:1 msgid "OAuth2 client deleted" -msgstr "" +msgstr "Supprimer un client OAuth2" #: ../../:1 msgid "Revoke all tokens associated to an OAuth2 client (app)." -msgstr "" +msgstr "Révoquer tous les tokens associés à un client OAuth2 " #: ../../:1 msgid "" "Authorize an OAuth2 client (app). If successful, it redirects to the " "client callback URL with the code to issue a token." msgstr "" +"Autoriser un client OAuth2 (app). En cas de succès, il redirige vers " +"l'URL de redirection du client avec le code pour émettre un jeton." #: ../../:1 msgid "OAuth2 client 'client_id'" -msgstr "" +msgstr "'client_id' du client OAuth2" #: ../../:1 msgid "client response type (only 'code' is supported by FitTrackee)" -msgstr "" +msgstr "type de réponse du client (seul 'code' est supporté par FitTrackee)" #: ../../:1 msgid "OAuth2 client scopes" -msgstr "" +msgstr "scope du client OAuth2" #: ../../:1 msgid "confirmation (must be ``true``)" @@ -851,454 +868,493 @@ msgid "" "unique value to prevent cross-site request forgery (not mandatory but " "recommended)" msgstr "" +"valeur unique pour éviter la falsification des requêtes entre les sites " +"(non obligatoire mais recommandée)" #: ../../:1 msgid "" "string generated from a code verifier (for PKCE, not mandatory but " "recommended)" msgstr "" +"chaîne générée par un vérificateur de code (pour PKCE, non obligatoire " +"mais recommandée)" #: ../../:1 msgid "" "method used to create challenge, for instance \"S256\" (mandatory if " "`code_challenge` provided)" msgstr "" +"méthode utilisée pour créer le challenge, par exemple \"S256\" " +"(obligatoire si `code_challenge` fourni)" #: ../../:1 -msgid "- invalid payload - errors returned by Authlib library" +msgid "- ``invalid payload`` - errors returned by Authlib library" msgstr "" #: ../../:1 msgid "errors returned by Authlib library" -msgstr "" +msgstr "erreurs renvoyées par la librairie Authlib" #: ../../:1 msgid "Issue or refresh token for a given OAuth2 client (app)." -msgstr "" +msgstr "Délivrer ou rafraîchir un jeton pour un client OAuth2 donné" #: ../../:1 msgid "OAuth2 client secret" -msgstr "" +msgstr "secret du client OAuth2" #: ../../:1 msgid "" "OAuth2 client grant type (only 'authorization_code' (for token issue) and" " 'refresh_token' (for token refresh) are supported by FitTrackee)" msgstr "" +"Type d'autorisation du client OAuth2 (seuls 'authorization_code' (pour " +"l'émission de jetons) et 'refresh_token' (pour le rafraîchissement de " +"jeton) sont pris en charge par FitTrackee)" #: ../../:1 msgid "code generated after authorizing the client (for token issue)" -msgstr "" +msgstr "code généré après l'autorisation du client (pour l'émission de jetons)" #: ../../:1 msgid "code verifier (for token issue with PKCE, not mandatory)" msgstr "" +"vérificateur de code (pour l'émission de jetons avec PKCE, non " +"obligatoire)" #: ../../:1 msgid "refresh token (for token refresh)" -msgstr "" - -#: ../../:1 -msgid "- errors returned by Authlib library" -msgstr "" +msgstr "jeton de rafraîchissement (pour le rafraîchissement du jeton)" #: ../../:1 msgid "Revoke a token for a given OAuth2 client (app)." -msgstr "" +msgstr "Révoquer un jeton pour un client OAuth2 donné" #: ../../:1 msgid "access token to revoke" -msgstr "" +msgstr "jeton d'accès à révoquer" #: ../source/api/records.rst:2 msgid "Records" -msgstr "" +msgstr "Records" #: ../../:1 msgid "Get all records for authenticated user." -msgstr "" +msgstr "Obtenir tous les records pour l'utilisateur authentifié." #: ../../:1 msgid "Following types of records are available:" -msgstr "" +msgstr "Les types de records suivants sont disponibles :" #: ../../:1 msgid "average speed (record_type: ``AS``)" -msgstr "" +msgstr "vitesse moyenne (record_type: ``AS``)" #: ../../:1 msgid "farthest distance (record_type: ``FD``)" -msgstr "" +msgstr "distance la plus elevée (record_type: ``FD``)" #: ../../:1 msgid "highest ascent (record_type: ``HA``)" -msgstr "" +msgstr "dénivelé le plus élevé (record_type: ``HA``)" #: ../../:1 msgid "longest duration (record_type: ``LD``)" -msgstr "" +msgstr "durée la plus longue (record_type: ``LD``)" #: ../../:1 msgid "maximum speed (record_type: ``MS``)" -msgstr "" +msgstr "vitesse maximale (record_type: ``MS``)" #: ../../:1 msgid "**Scope**: ``workouts:read``" -msgstr "" +msgstr "**Scope**: ``workouts:read``" #: ../../:1 msgid "returning records" -msgstr "" +msgstr "retournant des records" #: ../../:1 msgid "no records" -msgstr "" +msgstr "pas de record" #: ../source/api/sports.rst:2 ../source/features.rst:188 msgid "Sports" -msgstr "" +msgstr "Sports" #: ../../:1 msgid "Get all sports" -msgstr "" +msgstr "Obtenir tous les sports" #: ../../:1 -msgid "for non admin user :" -msgstr "" +msgid "for non admin user:" +msgstr "pour un utilisateur non admin" #: ../../:1 -msgid "for admin user :" -msgstr "" +msgid "for admin user:" +msgstr "pour un administrateur" #: ../../:1 msgid "Get a sport" -msgstr "" +msgstr "Obtenir un sport" #: ../../:1 -msgid "success for non admin user :" -msgstr "" +msgid "success for non admin user:" +msgstr "succès pour un utilisateur non admin:" #: ../../:1 -msgid "success for admin user :" -msgstr "" +msgid "success for admin user:" +msgstr "succès pour un administrateur" #: ../../:1 -msgid "sport not found" +msgid "sport not found:" +msgstr "sport non trouvé :" + +#: ../../:1 +msgid "``sport not found``" msgstr "" #: ../../:1 msgid "Update a sport." -msgstr "" +msgstr "Modifier un sport" #: ../../:1 msgid "**Scope**: ``workouts:write``" -msgstr "" +msgstr "**Scope**: ``workouts:write``" #: ../../:1 msgid "sport active status" -msgstr "" +msgstr "état d'activation du sport" #: ../../:1 msgid "sport updated" -msgstr "" +msgstr "sport mis à jour" #: ../source/api/stats.rst:2 ../source/features.rst:236 msgid "Statistics" -msgstr "" +msgstr "Statistiques" #: ../../:1 msgid "Get workouts statistics for a user by time." msgstr "" +"Obtenir des statistiques sur les séances d'entraînement pour un " +"utilisateur par durée" #: ../../:1 msgid "**Example requests**:" -msgstr "" +msgstr "**Exemple de requêtes**:" #: ../../:1 -msgid "with parameters" -msgstr "" +msgid "with parameters:" +msgstr "avec des paramètres" #: ../../:1 -msgid "no workouts" -msgstr "" +msgid "no workouts:" +msgstr "pas de séances :" #: ../../:1 msgid "username" -msgstr "" +msgstr "nom d'utilisateur" #: ../../:1 #, python-format msgid "start date (format: ``%Y-%m-%d``)" -msgstr "" +msgstr "date de début (format: ``%Y-%m-%d``)" #: ../../:1 #, python-format msgid "end date (format: ``%Y-%m-%d``)" -msgstr "" +msgstr "date de fin (format: ``%Y-%m-%d``)" #: ../../:1 msgid "" "time frame: - ``week``: week starting Sunday - ``weekm``: week starting " "Monday - ``month``: month - ``year``: year (default)" msgstr "" +"période de temps : - ``week``: semaine commençant le dimanche - " +"``weekm``: semaine commençant le lundi - ``month``: mois - ``year``: " +"année (default)" #: ../../:1 msgid "time frame:" -msgstr "" +msgstr "période de temps :" #: ../../:1 msgid "``week``: week starting Sunday" -msgstr "" +msgstr "``week``: semaine commençant le dimanche" #: ../../:1 msgid "``weekm``: week starting Monday" -msgstr "" +msgstr "``weekm``: semaine commençant le lundi" #: ../../:1 msgid "``month``: month" -msgstr "" +msgstr "``month``: mois" #: ../../:1 msgid "``year``: year (default)" -msgstr "" +msgstr "``year``: année (default)" #: ../../:1 -msgid "- user does not exist" -msgstr "" - -#: ../../:1 -msgid "user does not exist" +msgid "``user does not exist``" msgstr "" #: ../../:1 msgid "Get workouts statistics for a user by sport." -msgstr "" +msgstr "Obtenir les statistiques des séances pour un utilisateur par sport." #: ../../:1 -msgid "without parameters (get stats for all sports with workouts)" +#, fuzzy +msgid "without parameters (get stats for all sports with workouts):" msgstr "" +"sans paramètres (obtenir les statistiques pour tous les sports ayant des " +"séances) :" #: ../../:1 -msgid "with sport id" -msgstr "" +msgid "with sport id:" +msgstr "avec l'identifiant du sport" #: ../../:1 -msgid "- user does not exist - sport does not exist" +msgid "- ``user does not exist`` - ``sport does not exist``" msgstr "" #: ../../:1 msgid "Get all application statistics." -msgstr "" +msgstr "Obtenir toutes les statistiques de l'application." #: ../source/api/users.rst:2 ../source/cli.rst:67 ../source/features.rst:175 msgid "Users" -msgstr "" +msgstr "Utilisateurs" #: ../../:1 msgid "" "Get all users (regardless their account status), if authenticated user " "has admin rights." msgstr "" +"Obtenir tous les utilisateurs (quel que soit le statut de leur compte), " +"si l'utilisateur authentifié a des droits d'administration." #: ../../:1 msgid "It returns user preferences only for authenticated user." msgstr "" +"Ne renvoie les préférences de l'utilisateur que pour l'utilisateur " +"authentifié." #: ../../:1 msgid "**Scope**: ``users:read``" -msgstr "" +msgstr "**Scope**: ``users:read``" #: ../../:1 -msgid "with some query parameters" -msgstr "" +msgid "with some query parameters:" +msgstr "avec quelques paramètres de requête :" #: ../../:1 msgid "page if using pagination (default: 1)" -msgstr "" +msgstr "page si pagination (par défaut : 1)" #: ../../:1 msgid "number of users per page (default: 10, max: 50)" -msgstr "" +msgstr "nombre d'utilisateurs par page (par défaut : 10, max : 50)" #: ../../:1 msgid "query on user name" -msgstr "" +msgstr "requête sur le nom de l'utilisateur" #: ../../:1 msgid "sorting order: ``asc``, ``desc`` (default: ``asc``)" -msgstr "" +msgstr "ordre de tri : ``asc``, ``desc`` (par défaut : ``asc``)" #: ../../:1 msgid "" "sorting criteria: ``username``, ``created_at``, ``workouts_count``, " "``admin``, ``is_active`` (default: ``username``)" msgstr "" +"critères de tri : ``username``, ``created_at``, ``workouts_count``, " +"``admin``, ``is_active`` (par défaut : ``username``)" #: ../../:1 msgid "" "Get single user details. Only user with admin rights can get other users " "details." msgstr "" +"Obtenir les information d'un utilisateur. Seul l'utilisateur disposant " +"des droits d'administrateur peut obtenir les informations des autres " +"utilisateurs." #: ../../:1 msgid "user name" +msgstr "nom de l'utilisateur" + +#: ../../:1 +msgid "- ``user does not exist``" msgstr "" #: ../../:1 msgid "get user picture" +msgstr "obtenir l'image de l'utilisateur" + +#: ../../:1 +msgid "- ``user does not exist`` - ``No picture.``" msgstr "" #: ../../:1 -msgid "- user does not exist - No picture." -msgstr "" - -#: ../../:1 -msgid "No picture." +msgid "``No picture.``" msgstr "" #: ../../:1 msgid "Update user account." -msgstr "" +msgstr "Mise à jour du compte utilisateur." #: ../../:1 msgid "add/remove admin rights (regardless user account status)" msgstr "" +"ajouter/supprimer des droits d'administration (quel que soit le statut du" +" compte d'utilisateur)" #: ../../:1 msgid "" "reset password (and send email to update user password, if sending " "enabled)" msgstr "" +"réinitialiser le mot de passe (et envoyer un courriel pour mettre à jour " +"le mot de passe de l'utilisateur, si l'envoi activé)" #: ../../:1 msgid "update user email (and send email to new user email, if sending enabled)" msgstr "" +"mettre à jour l'adresse électronique de l'utilisateur (et envoyer un " +"message à la nouvelle adresse électronique de l'utilisateur, si l'envoi " +"est activé)" #: ../../:1 msgid "activate account for an inactive user" -msgstr "" +msgstr "activer le compte d'un utilisateur inactif" #: ../../:1 msgid "Only user with admin rights can modify another user." msgstr "" +"Seul l'utilisateur ayant des droits d'administration peut modifier un " +"autre utilisateur." #: ../../:1 msgid "**Scope**: ``users:write``" -msgstr "" +msgstr "**Scope**: ``users:write``" #: ../../:1 msgid "activate user account" -msgstr "" +msgstr "activer le compte utilisateur" #: ../../:1 msgid "does the user have administrator rights" -msgstr "" +msgstr "l'utilisateur dispose-t-il de droits d'administration ?" #: ../../:1 msgid "new user email" -msgstr "" +msgstr "nouvelle adresse électronique de l'utilisateur" #: ../../:1 msgid "reset user password" -msgstr "" +msgstr "réinitialiser le mot de passe de l'utilisateur" #: ../../:1 msgid "" -"- invalid payload - valid email must be provided - new email must be " -"different than curent email" +"- ``invalid payload`` - ``valid email must be provided`` - ``new email " +"must be different than curent email``" msgstr "" #: ../../:1 -msgid "valid email must be provided" +msgid "``valid email must be provided``" msgstr "" #: ../../:1 -msgid "new email must be different than curent email" +msgid "``new email must be different than curent email``" msgstr "" #: ../../:1 msgid "Delete a user account." -msgstr "" +msgstr "Supprimer un compte utilisateur." #: ../../:1 msgid "A user can only delete his own account." -msgstr "" +msgstr "Un utilisateur ne peut supprimer que son propre compte." #: ../../:1 msgid "" "An admin can delete all accounts except his account if he's the only one " "admin." msgstr "" +"Un administrateur peut supprimer tous les comptes sauf le sien s'il est " +"le seul administrateur." #: ../../:1 msgid "user account deleted" -msgstr "" +msgstr "compte de l'utilisateur supprimé" #: ../../:1 msgid "" -"- you do not have permissions - you can not delete your account, no other" -" user has admin rights" +"- ``you do not have permissions`` - ``you can not delete your account, no" +" other user has admin rights``" msgstr "" #: ../../:1 -msgid "you can not delete your account, no other user has admin rights" +msgid "``you can not delete your account, no other user has admin rights``" msgstr "" #: ../source/api/workouts.rst:2 ../source/features.rst:13 msgid "Workouts" -msgstr "" +msgstr "Séances" #: ../../:1 msgid "Get workouts for the authenticated user." -msgstr "" +msgstr "Obtenir les séances de l'utilisateur authentifié." #: ../../:1 -msgid "returning at least one workout" -msgstr "" +msgid "returning at least one workout:" +msgstr "renvoyant au moins une séance :" #: ../../:1 msgid "returning no workouts" -msgstr "" +msgstr "renvoyant aucune séance" #: ../../:1 msgid "number of workouts per page (default: 5, max: 100)" -msgstr "" +msgstr "nombre d'entraînements par page (par défaut : 5, max : 100)" #: ../../:1 msgid "minimal distance" -msgstr "" +msgstr "distance minimale" #: ../../:1 msgid "maximal distance" -msgstr "" +msgstr "distance maximale" #: ../../:1 msgid "minimal duration (format: ``%H:%M``)" -msgstr "" +msgstr "durée minimale (format: ``%H:%M``)" #: ../../:1 msgid "maximal distance (format: ``%H:%M``)" -msgstr "" +msgstr "distance maximale (format: ``%H:%M``)" #: ../../:1 msgid "minimal average speed" -msgstr "" +msgstr "vitesse moyenne minimale" #: ../../:1 msgid "maximal average speed" -msgstr "" +msgstr "vitesse moyenne maximale" #: ../../:1 msgid "minimal max. speed" -msgstr "" +msgstr "vitesse max. minimale" #: ../../:1 msgid "maximal max. speed" -msgstr "" +msgstr "vitesse max. maximale" #: ../../:1 msgid "sorting order: ``asc``, ``desc`` (default: ``desc``)" -msgstr "" +msgstr "ordre de tri : ``asc``, ``desc`` (par défaut : ``desc``)" #: ../../:1 msgid "" @@ -1307,191 +1363,218 @@ msgid "" msgstr "" #: ../../ +#, fuzzy msgid "quert string title" -msgstr "" +msgstr "chaine de caractère vide" #: ../../:1 msgid "any part (or all) of the workout title; title matching is case-insensitive" msgstr "" +"une partie (ou la totalité) du titre de la séance, la correspondance " +"entre les titres ne tient pas compte des majuscules et des minuscules" #: ../../:1 msgid "Get a workout." -msgstr "" +msgstr "Obtenir une séance." #: ../../:1 msgid "workout not found:" -msgstr "" +msgstr "séance non trouvé :" #: ../../:1 msgid "workout short id" -msgstr "" +msgstr "identifiant court de la séance" #: ../../:1 -msgid "workout not found" +msgid "``workout not found``" msgstr "" #: ../../:1 msgid "Get gpx file for a workout displayed on map with Leaflet." msgstr "" +"Obtenir un fichier gpx pour une séance affichée sur une carte avec " +"Leaflet." #: ../../:1 -msgid "- workout not found - no gpx file for this workout" +msgid "- ``workout not found`` - ``no gpx file for this workout``" msgstr "" #: ../../:1 -msgid "no gpx file for this workout" +msgid "``no gpx file for this workout``" msgstr "" #: ../../:1 msgid "Get chart data from a workout gpx file, to display it with Chart.js." msgstr "" +"Récupérer les données d'une séance avec gpx pour les afficher avec " +"Chart.js" #: ../../:1 +#, fuzzy msgid "Get chart data from a workout gpx file, to display it with Recharts" msgstr "" +"Récupérer les données d'une séance avec gpx pour les afficher avec " +"Chart.js" #: ../../:1 msgid "segment id" -msgstr "" +msgstr "identifiant du segment" #: ../../:1 msgid "Get gpx file for a workout segment displayed on map with Leaflet." msgstr "" +"Obtenir un fichier gpx pour le segment d'une séance pour l'afficher sur " +"la carte avec Leaflet." #: ../../:1 msgid "Get map image for workouts with gpx." -msgstr "" +msgstr "Obtenir l'image de la carte pour les séances avec gpx." #: ../../:1 msgid "workout map id" -msgstr "" +msgstr "identifiant de la carte de la séance" #: ../../:1 -msgid "map does not exist" +msgid "``map does not exist``" msgstr "" #: ../../:1 msgid "Get map tile from tile server." -msgstr "" +msgstr "Obtenir une tuile de la carte à partir du serveur de tuiles." #: ../../:1 msgid "subdomain" -msgstr "" +msgstr "sous-domaine" #: ../../:1 msgid "zoom" -msgstr "" +msgstr "zoom" #: ../../:1 msgid "index of the tile along the map's x axis" -msgstr "" +msgstr "index de la tuile sur l'axe x de la carte" #: ../../:1 msgid "index of the tile along the map's y axis" -msgstr "" +msgstr "index de la tuile sur l'axe y de la carte" #: ../../:1 msgid "Status codes are status codes returned by tile server" -msgstr "" +msgstr "Les codes d'état sont des codes d'état renvoyés par le serveur de tuiles." #: ../../:1 msgid "Download gpx file." +msgstr "Télécharger le fichier gpx." + +#: ../../:1 +msgid "- ``workout not found`` - ``no gpx file for workout``" msgstr "" #: ../../:1 -msgid "- workout not found - no gpx file for workout" -msgstr "" - -#: ../../:1 -msgid "no gpx file for workout" +msgid "``no gpx file for workout``" msgstr "" #: ../../:1 msgid "Post a workout with a gpx file." -msgstr "" +msgstr "Créer une séance à partir d'un fichier gpx." #: ../../:1 msgid "gpx file (allowed extensions: .gpx, .zip)" -msgstr "" +msgstr "fichier gpx (extensions autorisées : .gpx, .zip)" #: ../../:1 msgid "" "sport id and notes (example: ``{\"sport_id\": 1, \"notes\": \"\"}``). " "Double quotes in notes must be escaped." msgstr "" +"l'identifiant du sport et les notes (exemple : ``{\"sport_id\": 1, " +"\"notes\": \"\"}``). Les guillemets doubles dans les notes doivent être " +"échappés." #: ../../:1 -msgid "workout created" -msgstr "" +#, fuzzy +msgid "``workout created``" +msgstr "séance créée" #: ../../:1 msgid "Post a workout without gpx file." -msgstr "" +msgstr "Créer une séance sans fichier gpx." #: ../../:1 +#, fuzzy msgid "workout ascent (not mandatory, must be provided with descent)" -msgstr "" +msgstr "dénivelé négatif (non obligatoire, à fournir avec le dénivelé positif)" #: ../../:1 msgid "workout descent (not mandatory, must be provided with ascent)" -msgstr "" +msgstr "dénivelé négatif (non obligatoire, à fournir avec le dénivelé positif)" #: ../../:1 msgid "workout distance in km" -msgstr "" +msgstr "distance de la séance en km" #: ../../:1 msgid "workout duration in seconds" -msgstr "" +msgstr "durée de la séance en secondes" #: ../../:1 msgid "notes (not mandatory)" -msgstr "" +msgstr "notes (non obligatoire)" #: ../../:1 msgid "workout sport id" -msgstr "" +msgstr "identifiant du sport de la séance" #: ../../:1 msgid "workout title (not mandatory)" -msgstr "" +msgstr "titre de la séance (non obligatoire)" #: ../../:1 #, python-format msgid "workout date, in user timezone (format: ``%Y-%m-%d %H:%M``)" msgstr "" +"date de la séance, dans le fuseau horaire de l'utilisateur (format: " +"``%Y-%m-%d %H:%M``)" + +#: ../../:1 +msgid "workout created" +msgstr "séance créée" #: ../../:1 msgid "Update a workout." -msgstr "" +msgstr "Mettre à jour une séance" #: ../../:1 msgid "" "workout ascent (only for workout without gpx, must be provided with " "descent)" msgstr "" +"dénivelé positif de la séance (seulement pour les séances sans gpx, doit " +"être fourni avec le dénivelé négatif)" #: ../../:1 msgid "" "workout descent (only for workout without gpx, must be provided with " "ascent)" msgstr "" +"dénivelé négatif de la séance (seulement pour les séances sans gpx, doit " +"être fourni avec le dénivelé positif)" #: ../../:1 msgid "workout distance in km (only for workout without gpx)" -msgstr "" +msgstr "distance de la séance en km (seulement pour les séances sans gpx)" #: ../../:1 msgid "workout duration in seconds (only for workout without gpx)" -msgstr "" +msgstr "durée de la séance en secondes (seulement pour les séances sans gpx)" #: ../../:1 msgid "notes" -msgstr "" +msgstr "notes" #: ../../:1 msgid "workout title" -msgstr "" +msgstr "titre de la séance" #: ../../:1 #, python-format @@ -1499,18 +1582,20 @@ msgid "" "workout date in user timezone (format: ``%Y-%m-%d %H:%M``) (only for " "workout without gpx)" msgstr "" +"date de la séance dans le fuseau horaire de l'utilisateur (format: " +"``%Y-%m-%d %H:%M``) (seulement pour les séances sans gpx)" #: ../../:1 msgid "workout updated" -msgstr "" +msgstr "séance mise à jour" #: ../../:1 msgid "Delete a workout." -msgstr "" +msgstr "Supprimer la séance" #: ../../:1 msgid "workout deleted" -msgstr "" +msgstr "séance supprimée" #: ../source/changelog.md:1 msgid "Change log" @@ -2215,7 +2300,7 @@ msgstr "" #: ../source/changelog.md:504 ../source/changelog.md:564 #: ../source/features.rst:2 msgid "Features" -msgstr "" +msgstr "Fonctionnalités" #: ../source/changelog.md:399 msgid "#223 - Display ascent record icon" @@ -3051,29 +3136,29 @@ msgstr "" #: ../source/changelog.md:1013 ../source/features.rst:15 msgid "Cycling (Sport)" -msgstr "" +msgstr "Vélo (Sport)" #: ../source/changelog.md:1014 ../source/features.rst:16 msgid "Cycling (Transport)" -msgstr "" +msgstr "Vélo (Transport)" #: ../source/changelog.md:1015 ../source/features.rst:18 #: ../source/features.rst:30 msgid "Hiking" -msgstr "" +msgstr "Randonnée" -#: ../source/changelog.md:1016 -msgid "Montain Biking" -msgstr "" +#: ../source/changelog.md:1016 ../source/features.rst:19 +msgid "Mountain Biking" +msgstr "VTT" #: ../source/changelog.md:1017 ../source/features.rst:23 msgid "Running" -msgstr "" +msgstr "Course à pied" #: ../source/changelog.md:1018 ../source/features.rst:28 #: ../source/features.rst:35 msgid "Walking" -msgstr "" +msgstr "Marche" #: ../source/changelog.md:1019 msgid "" @@ -3111,20 +3196,20 @@ msgstr "" #: ../source/changelog.md:1026 ../source/features.rst:64 #: ../source/features.rst:80 ../source/features.rst:86 msgid "average speed" -msgstr "" +msgstr "vitesse moyenne" #: ../source/changelog.md:1027 msgid "farest distance" -msgstr "" +msgstr "distance la plus grande" #: ../source/changelog.md:1028 ../source/features.rst:67 msgid "longest duration" -msgstr "" +msgstr "durée la plus longue" #: ../source/changelog.md:1029 ../source/features.rst:68 #: ../source/features.rst:81 msgid "maximum speed" -msgstr "" +msgstr "vitesse maximale" #: ../source/changelog.md:1030 msgid "Activities list and search" @@ -3176,217 +3261,249 @@ msgstr "" #: ../source/cli.rst:2 msgid "Command line interface" -msgstr "" +msgstr "Interface de ligne de commande" #: ../source/cli.rst:4 msgid "" "A command line interface (CLI) is available to manage database, OAuth2 " "tokens and users." msgstr "" +"Une interface en ligne de commande (CLI) est disponible pour gérer la " +"base de données, les jetons OAuth2 et les utilisateurs." #: ../source/cli.rst msgid "" "The following commands are now deprecated and will be removed in a next " "version:" msgstr "" +"Les commandes suivantes sont désormais obsolètes et seront supprimées " +"dans une prochaine version :" #: ../source/cli.rst msgid "- ``fittrackee_set_admin``" -msgstr "" +msgstr "- ``fittrackee_set_admin``" #: ../source/cli.rst msgid "- ``fittrackee_upgrade_db``" -msgstr "" +msgstr "- ``fittrackee_upgrade_db``" #: ../source/cli.rst msgid "- ``fittrackee_worker`` (disabled)" -msgstr "" +msgstr "- ``fittrackee_worker`` (désactivée)" #: ../source/cli.rst:29 msgid "Database" -msgstr "" +msgstr "Base de données" #: ../source/cli.rst:32 msgid "``ftcli db drop``" -msgstr "" +msgstr "``ftcli db drop``" #: ../source/cli.rst:35 msgid "" "Empty database and delete uploaded files, only on development " "environments." msgstr "" +"Vider la base de données et supprimer les fichiers téléchargés, " +"uniquement pour les environnements de développement." #: ../source/cli.rst:39 msgid "``ftcli db upgrade``" -msgstr "" +msgstr "``ftcli db upgrade``" #: ../source/cli.rst:42 msgid "Apply migrations." -msgstr "" +msgstr "Appliquer les migrations" #: ../source/cli.rst:49 msgid "``ftcli oauth2 clean``" -msgstr "" +msgstr "``ftcli oauth2 clean``" #: ../source/cli.rst:52 msgid "Remove tokens expired for more than provided number of days" -msgstr "" +msgstr "Supprimer les jetons expirés depuis plus d'un certain nombre de jours" #: ../source/cli.rst:59 ../source/cli.rst:80 ../source/cli.rst:97 #: ../source/cli.rst:142 msgid "Options" -msgstr "" +msgstr "Options" #: ../source/cli.rst:60 ../source/cli.rst:81 ../source/cli.rst:98 #: ../source/cli.rst:120 ../source/cli.rst:143 ../source/cli.rst:160 msgid "Description" -msgstr "" +msgstr "Description" #: ../source/cli.rst:61 ../source/cli.rst:82 ../source/cli.rst:99 msgid "``--days``" -msgstr "" +msgstr "``--days``" #: ../source/cli.rst:62 ../source/cli.rst:83 ../source/cli.rst:100 msgid "Number of days." -msgstr "" +msgstr "Nombre de jours." #: ../source/cli.rst:70 msgid "``ftcli users clean_archives``" -msgstr "" +msgstr "``ftcli users clean_archives``" #: ../source/cli.rst:73 msgid "" "Delete export requests and related archives created more than provided " "number of days." msgstr "" +"Supprimer les demandes d'export et les archives associées créées depuis " +"plus d'un certain nombre de jours." #: ../source/cli.rst:87 msgid "``ftcli users clean_tokens``" -msgstr "" +msgstr "``ftcli users clean_tokens``" #: ../source/cli.rst:90 msgid "Remove blacklisted tokens expired for more than provided number of days." msgstr "" +"Supprimer les jetons de la liste noire expirés depuis plus d'un certain " +"nombre de jours." #: ../source/cli.rst:104 msgid "``ftcli users create``" -msgstr "" +msgstr "``ftcli users create``" #: ../source/cli.rst:107 msgid "Create a user account." -msgstr "" +msgstr "Créer un compte utilisateur." #: ../source/cli.rst:110 msgid "the newly created account is already active." -msgstr "" +msgstr "le compte nouvellement créé est déjà actif." #: ../source/cli.rst:111 msgid "the CLI allows to create users when registration is disabled." msgstr "" +"le CLI permet de créer des utilisateurs lorsque l'enregistrement est " +"désactivé." #: ../source/cli.rst:119 ../source/cli.rst:159 msgid "Arguments/options" -msgstr "" +msgstr "Arguments/options" #: ../source/cli.rst:121 ../source/cli.rst:161 msgid "``USERNAME``" -msgstr "" +msgstr "``USERNAME``" #: ../source/cli.rst:122 ../source/cli.rst:162 msgid "Username." -msgstr "" +msgstr "Nom de l'utilisateur" #: ../source/cli.rst:123 msgid "``--email EMAIL``" -msgstr "" +msgstr "``--email EMAIL``" #: ../source/cli.rst:124 msgid "User email (mandatory)." -msgstr "" +msgstr "adresse électronique de l'utilisateur." #: ../source/cli.rst:125 msgid "``--password PASSWORD``" -msgstr "" +msgstr "``--password PASSWORD``" #: ../source/cli.rst:126 msgid "User password (if not provided, a random password is generated)." msgstr "" +"Mot de passe de l'utilisateur (s'il n'est pas fourni, un mot de passe " +"aléatoire est généré)." #: ../source/cli.rst:131 msgid "``ftcli users export_archives``" -msgstr "" +msgstr "``ftcli users export_archives``" #: ../source/cli.rst:134 msgid "" "Process incomplete user export requests. Can be used if redis is not set " "(no dramatiq workers running)." msgstr "" +"Traite les demandes d'export des données utilisateurs incomplètes. Peut " +"être utilisé si redis n'est pas activé (pas de *workers** dramatiq en " +"cours d'exécution)." #: ../source/cli.rst:144 msgid "``--max``" -msgstr "" +msgstr "``--max``" #: ../source/cli.rst:145 msgid "Maximum number of export requests to process." -msgstr "" +msgstr "Nombre maximal de demandes d'export à traiter." #: ../source/cli.rst:149 msgid "``ftcli users update``" -msgstr "" +msgstr "``ftcli users update``" #: ../source/cli.rst:152 msgid "Modify a user account (admin rights, active status, email and password)." msgstr "" +"Modifier le compte d'un utilisateur (droits d'administration, statut " +"actif, email et mot de passe)." #: ../source/cli.rst:163 msgid "``--set-admin BOOLEAN``" -msgstr "" +msgstr "``--set-admin BOOLEAN``" #: ../source/cli.rst:164 msgid "" "Add/remove admin rights (when adding admin rights, it also activates user" " account if not active)." msgstr "" +"Ajouter/supprimer des droits d'administration (lors de l'ajout de droits " +"d'administration, le compte de l'utilisateur est également activé s'il ne" +" l'est pas." #: ../source/cli.rst:165 msgid "``--activate``" -msgstr "" +msgstr "``--activate``" #: ../source/cli.rst:166 msgid "Activate user account." -msgstr "" +msgstr "Activer le compte d'un utilisateur." #: ../source/cli.rst:167 msgid "``--reset-password``" -msgstr "" +msgstr "``--reset-password``" #: ../source/cli.rst:168 msgid "Reset user password (a new password will be displayed)." msgstr "" +"Réinitialiser le mot de passe de l'utilisateur (un nouveau mot de passe " +"sera affiché)." #: ../source/cli.rst:169 msgid "``--update-email EMAIL``" -msgstr "" +msgstr "``--update-email EMAIL``" #: ../source/cli.rst:170 msgid "Update user email." -msgstr "" +msgstr "Mettre à jour l'adresse électronique de l'utilisateur." #: ../source/features.rst:4 msgid "" "**FitTrackee** allows you to store and display gpx files and some " "statistics from your outdoor activities." msgstr "" +"**Fitrackee** vous permet de stocker et d'afficher les données issues des" +" fichiers .gpx et quelques statistiques à partir de vos activités en " +"plein air." #: ../source/features.rst:5 msgid "" "For now, this app is kind of a single-user application. Even if several " "users can register, a user can only view his own workouts." msgstr "" +"Pour le moment, l'application est plutôt une application mono-" +"utilisateur. Même s'il est possible pour plusieurs utilisateurs de " +"s'enregistrer, un utilisateur ne peut voir que ses propres séances." #: ../source/features.rst:7 msgid "Gpx files are stored in an upload directory (without encryption)." msgstr "" +"Les fichier .gpx sont stockés dans un répertoire du serveur (sans aucun " +"chiffrement)." #: ../source/features.rst:9 msgid "" @@ -3394,46 +3511,46 @@ msgid "" "`__ is used as tile server in Workout " "detail and for static map generation." msgstr "" +"Avec la configuration par défaut, `Open Street Map " +"`__ est utilisé comme serveur de tuile sur" +" la page de détail de la séance et pour la génération des images " +"statiques des traces." #: ../source/features.rst:27 msgid "14 sports are supported:" -msgstr "" +msgstr "14 sports sont pris en charge:" #: ../source/features.rst:17 msgid "Cycling (Virtual) (*new in 0.7.3*)" -msgstr "" - -#: ../source/features.rst:19 -msgid "Mountain Biking" -msgstr "" +msgstr "Vélo (Virtuel) (*nouveau dans la version 0.7.3*)" #: ../source/features.rst:20 msgid "Mountain Biking (Electric) (*new in 0.5.0*)" -msgstr "" +msgstr "VTT (Electrique) (*nouveau dans la version in 0.5.0*)" #: ../source/features.rst:21 msgid "Mountaineering (*new in 0.7.9*)" -msgstr "" +msgstr "Alpinisme (*nouveau dans la version 0.7.9*)" #: ../source/features.rst:22 msgid "Rowing (*new in 0.5.0*)" -msgstr "" +msgstr "Aviron (*nouveau dans la version 0.5.0*)" #: ../source/features.rst:24 msgid "Skiing (Alpine) (*new in 0.5.0*)" -msgstr "" +msgstr "Ski (Alpin) (*nouveau dans la version 0.5.0*)" #: ../source/features.rst:25 msgid "Skiing (Cross Country) (*new in 0.5.0*)" -msgstr "" +msgstr "Ski (Randonnée) (*nouveau dans la version 0.5.0*)" #: ../source/features.rst:26 msgid "Snowshoes (*new in 0.5.2*)" -msgstr "" +msgstr "Raquettes (*nouveau dans la version 0.5.2*)" #: ../source/features.rst:27 msgid "Trail (*new in 0.5.0*)" -msgstr "" +msgstr "Trail (*nouveau dans la version 0.5.0*)" #: ../source/features.rst:35 msgid "" @@ -3441,26 +3558,29 @@ msgid "" "`_ is not the default one for the " "following sports (0.1 km/h instead of 1 km/h):" msgstr "" +"(*nouveau dans la version in 0.5.0*) Le seuil de vitesse arrêté utilisé " +"par `gpxpy `_ n'est plus la valeur par" +" défaut pour sports suivants (0.1 km/h au lieu de 1 km/h):" #: ../source/features.rst:31 msgid "Mountaineering" -msgstr "" +msgstr "Alpinisme" #: ../source/features.rst:32 msgid "Skiing (Cross Country)" -msgstr "" +msgstr "Ski (Randonnée)" #: ../source/features.rst:33 msgid "Snowshoes" -msgstr "" +msgstr "Raquettes" #: ../source/features.rst:34 msgid "Trail" -msgstr "" +msgstr "Trail" #: ../source/features.rst:38 msgid "It can be overridden in user preferences." -msgstr "" +msgstr "Elle peut être remplacée dans les préférences de l'utilisateur." #: ../source/features.rst:40 msgid "" @@ -3468,48 +3588,69 @@ msgid "" "can start on Sunday or Monday (which can be changed in the user " "preferences). The calendar displays up to 100 workouts." msgstr "" +"Tableau de bord avec le calendrier mensuel affichant les séances et les " +"records. La semaine peut commencer le dimanche ou le lundi (ce qui peut " +"être modifié dans les préférences de l'utilisateur). Le calendrier " +"affiche jusqu'à 100 séances." #: ../source/features.rst:41 msgid "" "Workout creation by uploading a gpx file (related data are stored in " "database in metric system)." msgstr "" +"Création d'une séance en téléversant un fichier gpx (les données " +"associées sont stockées dans la base de données dans le système " +"métrique)." #: ../source/features.rst msgid "Only gpx files with time are supported." -msgstr "" +msgstr "Seuls les fichiers gpx avec l'heure sont pris en charge" #: ../source/features.rst msgid "" "Calculated values may differ from values calculated by the application " "that originally generated the gpx files, in particular the maximum speed." msgstr "" +"Les valeurs calculées peuvent différer de celles calculées par " +"l'application qui a généré les fichiers gpx à l'origine, en particulier " +"la vitesse maximale." #: ../source/features.rst msgid "" "A workout can even be created without gpx (the user must enter date, " "time, duration and distance)." msgstr "" +"Une séance peut même être créée sans fichier gpx (l'utilisateur doit " +"entrer la date, l'heure, la durée et la distance)." #: ../source/features.rst msgid "Ascent and descent can also be provided (*new in 0.7.10*)." msgstr "" +"Les dénivelés positif et négatif peuvent être également fournis (*nouveau" +" dans la version 0.7.10*)." #: ../source/features.rst msgid "" "A workout with a gpx file can be displayed with map and charts (speed and" " elevation)." msgstr "" +"Une séance avec un fichier gpx est affichée avec une carte et des " +"graphiques (vitesse et élévation)." #: ../source/features.rst msgid "Controls allow full screen view and position reset (*new in 0.5.5*)." msgstr "" +"Des boutons permettent une visualisation en plein écran et la " +"réinitialisation de la position (*nouveau dans la version 0.5.5*)." #: ../source/features.rst msgid "" "If **Visual Crossing** (*new in 0.7.11*) API key is provided, weather is " "displayed in workout detail. Data source is displayed in **About** page." msgstr "" +"Si la clé d'API de **Visual Crossing** (*nouveau in 0.7.11*) est fournie," +" la météo est affichée dans les détails de l'entraînement. La source des " +"données est affichée dans la page **A propos**." #: ../source/features.rst msgid "" @@ -3517,108 +3658,119 @@ msgid "" "be displayed with the direction that the wind is coming **from**) (*new " "in 0.5.5*)." msgstr "" +"La vitesse du vent est affichée, avec une flèche indiquant la direction " +"(une infobulle peut être affichée avec la direction (provenance du vent))" +" (*nouveau dans la version 0.5.5*)." #: ../source/features.rst:53 msgid "Segments can be displayed." -msgstr "" +msgstr "Les segments peuvent être affichés." #: ../source/features.rst:54 msgid "Workout gpx file can be downloaded (*new in 0.5.1*)" -msgstr "" +msgstr "Le fichier gpx peut être téléchargé (*nouveau dans la version 0.5.1*)" #: ../source/features.rst:55 msgid "Workout edition and deletion. User can add a note." -msgstr "" +msgstr "Edition et suppression d'une séance. L'utilisateur peut ajouter une note." #: ../source/features.rst:61 msgid "User statistics, by time period (week, month, year) and sport:" msgstr "" +"Statistiques pour l'utilisateur, par période (semaine, mois, année) et " +"par sport :" #: ../source/features.rst:57 msgid "total distance" -msgstr "" +msgstr "distance totale" #: ../source/features.rst:58 msgid "total duration" -msgstr "" +msgstr "durée totale" #: ../source/features.rst:59 msgid "total workouts" -msgstr "" +msgstr "nombre total de séances" #: ../source/features.rst:60 msgid "total ascent (*new in 0.5.0*)" -msgstr "" +msgstr "dénivelé positif total (*nouveau dans la version 0.5.0*)" #: ../source/features.rst:61 msgid "total descent (*new in 0.5.0*)" -msgstr "" +msgstr "dénivelé négatif total (*nouveau dans la version 0.5.0*)" #: ../source/features.rst:62 msgid "average speed (*new in 0.5.1*)" -msgstr "" +msgstr "vitesse moyenne (*nouveau dans la version 0.5.1*)" #: ../source/features.rst:68 msgid "User records by sports:" -msgstr "" +msgstr "Records de l'utilisateur par sports :" #: ../source/features.rst:65 msgid "farthest distance" -msgstr "" +msgstr "la plus grande distance" #: ../source/features.rst:66 msgid "highest ascent (*new in 0.6.11*, can be hidden, see user preferences)" msgstr "" +"dénivelé positif le plus élevé (*nouveau dans la version 0.6.11*, peut " +"être masqué, cf. préférences utilisateur)" #: ../source/features.rst:71 msgid "" "Records may differ from records displayed by the application that " "originally generated the gpx files." msgstr "" +"Les records peuvent différer des records affichés par l'application qui a" +" généré les fichiers gpx à l'origine." #: ../source/features.rst:86 msgid "Workouts list." -msgstr "" +msgstr "Liste des séances." #: ../source/features.rst:80 msgid "The user can filter workouts on:" -msgstr "" +msgstr "L'utilisateur peut filtrer les séances selon :" #: ../source/features.rst:75 ../source/features.rst:83 msgid "date" -msgstr "" +msgstr "la date" #: ../source/features.rst:76 msgid "sports (only sports with workouts are displayed in sport dropdown)" msgstr "" +"le sport (seuls les sports comportant des séances sont affichées dans la " +"liste déroulante)" #: ../source/features.rst:77 msgid "title (*new in 0.7.15*)" -msgstr "" +msgstr "le titre (*nouveau dans la version 0.7.15*)" #: ../source/features.rst:78 ../source/features.rst:84 msgid "distance" -msgstr "" +msgstr "la distance" #: ../source/features.rst:79 ../source/features.rst:85 msgid "duration" -msgstr "" +msgstr "la durée" #: ../source/features.rst:86 msgid "Workouts can be sorted by:" -msgstr "" +msgstr "Les séances peuvent être triées par :" #: ../source/features.rst:89 msgid "For now, only the owner of the workout can see it." -msgstr "" +msgstr "Pour l'instant, seul le propriétaire de la séance peut la voir." #: ../source/features.rst:93 msgid "Account & preferences" -msgstr "" +msgstr "Compte et préférences" #: ../source/features.rst:94 msgid "A user can create, update and deleted his account." -msgstr "" +msgstr "Un utilisateur peut créer, modifier et supprimer son compte." #: ../source/features.rst:95 msgid "" @@ -3626,12 +3778,19 @@ msgid "" "policy is available, a message is displayed on the dashboard to review " "the new version (*new in 0.7.13*)." msgstr "" +"L'utilisateur doit accepter la politique de confidentialité pour " +"s'inscrire. Si une politique plus récente est disponible, un message " +"s'affiche sur le tableau de bord pour consulter la nouvelle version " +"(*nouveau dans la version 0.7.13*)." #: ../source/features.rst:96 msgid "" "On registration, the user account is created with selected language in " "dropdown as user preference (*new in 0.6.9*)." msgstr "" +"Lors de l'inscription, la langue sélectionnée dans le menu déroulant est " +"enregistrée comme préférence de l'utilisateur (*nouveauté dans la version" +" 0.6.9*)." #: ../source/features.rst:97 msgid "" @@ -3639,46 +3798,70 @@ msgid "" "confirmation instructions is sent to activate it. A user with an inactive" " account cannot log in. (*new in 0.6.0*)." msgstr "" +"Après l'enregistrement, le compte d'utilisateur est inactif et un " +"courriel contenant des instructions de confirmation est envoyé pour " +"l'activer. Un utilisateur dont le compte est inactif ne peut pas se " +"connecter (*nouveauté dans la version 0.6.0*)." #: ../source/features.rst:101 msgid "" "In case email sending is not configured, a `command line `__ allows to activate users account." msgstr "" +"Dans le cas où l'envoi des courriles n'est pas configuré, une `interface " +"de ligne de commande `__ permet d'activer le" +" compte des utilisateurs." #: ../source/features.rst:103 msgid "A user can set language, timezone and first day of week." msgstr "" +"L'utilisateur peut définir la langue, le fuseau horaire et le premier " +"jour de la semaine." #: ../source/features.rst:104 msgid "A user can reset his password (*new in 0.3.0*)" msgstr "" +"L'utilisateur peut réinitialiser son mot de passe (*nouveau dans la " +"version in 0.3.0*)" #: ../source/features.rst:105 msgid "A user can change his email address (*new in 0.6.0*)" msgstr "" +"Un utilisateur peut modifier son adresse électronique (*nouveau dans la " +"version 0.6.0*)" #: ../source/features.rst:106 msgid "" "A user can choose between metric system and imperial system for distance," " elevation and speed display (*new in 0.5.0*)" msgstr "" +"L'utilisateur peut choisir entre le système métrique et le système " +"impérial pour la distance, l'affichage de l'altitude et de la vitesse " +"(*nouveau dans la version 0.5.0*)." #: ../source/features.rst:107 msgid "" "A user can choose to display or hide ascent records and total on " "Dashboard (*new in 0.6.11*)" msgstr "" +"Un utilisateur peut choisir d'afficher ou cacher les records et le total" +" de dénivelé positif sur le tableau de bord (*nouveau dans la version " +"0.6.11*)" #: ../source/features.rst:108 msgid "A user can choose format used to display dates (*new in 0.7.3*)" msgstr "" +"L'utilisateur peut choisir le format d'affichage des dates (*nouveau dans" +" la version 0.7.3*)" #: ../source/features.rst:109 msgid "" "A user can choose elevation chart axis start: zero or minimum altitude " "(*new in 0.7.15*)" msgstr "" +"L'utilisateur peut choisir le point de départ de l'axe du graphique " +"d'altitude : altitude zéro ou minimale. (*nouveau dans la version " +"0.7.15*)" #: ../source/features.rst:110 msgid "" @@ -3686,26 +3869,37 @@ msgid "" "when calculating the maximum speed (by default, extreme values are " "excluded) (*new in 0.7.16*)" msgstr "" +"Un utilisateur peut choisir d'exclure les valeurs extrêmes (qui peuvent " +"être des erreurs GPS) lors du calcul de la vitesse maximale (par défaut, " +"les valeurs extrêmes sont exclues) (*nouveau dans la version 0.7.16*)" #: ../source/features.rst:113 msgid "Changing this preference will only affect next file uploads." msgstr "" +"La modification de cette préférence n'affectera que les prochains " +"fichiers ajoutés." #: ../source/features.rst:118 msgid "A user can set sport preferences (*new in 0.5.0*):" msgstr "" +"Un utilisateur peut définir des préférences en matière de sport (*nouveau" +" dans la version 0.5.0*):" #: ../source/features.rst:116 msgid "change sport color (used for sport image and charts)" msgstr "" +"changer la couleur du sport (utilisée pour l'image du sport et les " +"graphiques)" #: ../source/features.rst:117 msgid "can override stopped speed threshold (for next uploaded gpx files)" msgstr "" +"modifier le seuil de vitesse d'arrêt (pour les prochains fichiers gpx " +"ajoutés)" #: ../source/features.rst:118 msgid "disable/enable a sport." -msgstr "" +msgstr "désactiver/activer un sport." #: ../source/features.rst msgid "" @@ -3713,82 +3907,107 @@ msgid "" "user. In this case, it will only appear in preferences if the user has " "workouts and only sport color can be changed." msgstr "" +"Si un sport est désactivé par un administrateur, il ne peut pas être " +"activé par un utilisateur. Dans ce cas, il n'apparaîtra dans les " +"préférences que si l'utilisateur a des séances et seule la couleur du " +"sport peut être modifiée." #: ../source/features.rst msgid "" "A disabled sport (by admin or user) will not appear in dropdown when " "**adding a workout**." msgstr "" +"Un sport désactivé (par l'administrateur ou l'utilisateur) n'apparaîtra " +"pas dans la liste lors de l\\'**ajout d'une séance**." #: ../source/features.rst msgid "" "A workout with a disabled sport will still be displayed in the " "application." msgstr "" +"Une séance avec un sport désactivé sera toujours affichée dans " +"l'application." #: ../source/features.rst:125 msgid "" "A user can create `clients `__ for third-party applications " "(*new in 0.7.0*)." msgstr "" +"Un utilisateur peut créer des `clients `__ pour des " +"applications tierces (*nouveau dans la version 0.7.0*)." #: ../source/features.rst msgid "A user can request a data export (*new in 0.7.13*)." msgstr "" +"Un utilisateur peut demander un export de données (*nouveau dans la " +"version 0.7.13*)." #: ../source/features.rst msgid "" "It generates a zip archive containing 2 ``json`` files (user info and " "workouts data) and all uploaded gpx files." msgstr "" +"Une archive zip sera générée, contenant 2 fichiers ``json`` (informations" +" de l'utilisateur et données des séances) et tous les fichiers gpx " +"ajoutée." #: ../source/features.rst:130 msgid "" "For now, it's not possible to import these files into another " "**FitTrackee** instance." msgstr "" +"Pour l'instant, il n'est pas possible d'importer ces fichiers sur une " +"autre instance de **FitTrackee**." #: ../source/features.rst:134 ../source/features.rst:241 msgid "Administration" -msgstr "" +msgstr "Administration" #: ../source/features.rst:135 msgid "(*new in 0.3.0*)" -msgstr "" +msgstr "(*nouveau dans la version 0.3.0*)" #: ../source/features.rst:138 msgid "Application" -msgstr "" +msgstr "Application" #: ../source/features.rst:140 msgid "**Configuration**" -msgstr "" +msgstr "**Configuration**" #: ../source/features.rst:142 msgid "The following parameters can be set:" -msgstr "" +msgstr "Les paramètres suivants peuvent être définis :" #: ../source/features.rst:144 msgid "active users limit. If 0, registration is enabled (no limit defined)." msgstr "" +"limite des utilisateurs actifs. S'il est égal à 0, l'inscription est " +"activée (aucune limite n'est définie)." #: ../source/features.rst:145 msgid "" "maximum size of gpx file (individually uploaded or in a zip archive) " "(*changed in 0.7.4*)" msgstr "" +"taille maximale du fichier gpx (ajouté unitairement ou dans une archive " +"zip) (*modifié dans la version 0.7.4*)" #: ../source/features.rst:146 msgid "maximum size of zip archive" -msgstr "" +msgstr "taille maximale de l'archive zip" #: ../source/features.rst:147 msgid "maximum number of files in the zip archive (*changed in 0.7.4*)" msgstr "" +"nombre maximum de fichiers dans l'archive zip (*modifié dans la version " +"0.7.4*)" #: ../source/features.rst:148 msgid "administrator email for contact (*new in 0.6.0*)" msgstr "" +"adresse électronique pour contacter l'administrateur (*nouveau dans la " +"version 0.6.0*)" #: ../source/features.rst:151 msgid "" @@ -3797,124 +4016,149 @@ msgid "" "`_" " for instance)." msgstr "" +"La mise à jour de la configuration du serveur peut être nécessaire pour " +"gérer des fichiers volumineux (comme `nginx " +"`_" +" par exemple)." #: ../source/features.rst:154 msgid "If email sending is disabled, a warning is displayed." -msgstr "" +msgstr "Si l'envoi de courriel est désactivé, un avertissement s'affiche." #: ../source/features.rst:156 msgid "**About**" -msgstr "" +msgstr "**A propos**" #: ../source/features.rst:158 ../source/features.rst:166 msgid "(*new in 0.7.13*)" -msgstr "" +msgstr "(*nouveau dans la version 0.7.13*)" #: ../source/features.rst:160 msgid "" "It is possible displayed additional information that may be useful to " "users in **About** page." msgstr "" +"Il est possible d'afficher des informations supplémentaires qui peuvent " +"être utiles aux utilisateurs dans la page **A propos**." #: ../source/features.rst:161 msgid "Markdown syntax can be used." -msgstr "" +msgstr "La syntaxe Markdown peut être utilisée." #: ../source/features.rst:164 msgid "**Privacy policy**" -msgstr "" +msgstr "**Politique de confidentialité**" #: ../source/features.rst:168 msgid "" "A default privacy policy is available (originally adapted from the " "`Discourse `__ privacy policy)." msgstr "" +"Une politique de confidentialité par défaut est disponible (adaptée de la" +" `Politique de confidentialité de Discourse " +"`__)." #: ../source/features.rst:169 msgid "" "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." msgstr "" +"Une politique de confidentialité personnalisée peut être définie si " +"nécessaire (la syntaxe Markdown peut être utilisée). Une mise à jour de " +"la politique affichera un message sur le tableau de bord des utilisateurs" +" pour qu'ils puissent en prendre connaissance." #: ../source/features.rst:172 msgid "" "Only the default privacy policy is translated (if the translation is " "available)." msgstr "" +"Seule la politique de confidentialité par défaut est traduite (si la " +"traduction est disponible)." #: ../source/features.rst:177 msgid "display and filter users list" -msgstr "" +msgstr "afficher et filtrer la liste des utilisateurs" #: ../source/features.rst:178 msgid "edit a user to:" -msgstr "" +msgstr "modifier le compte d'un utilisateur pour :" #: ../source/features.rst:180 msgid "add/remove administration rights" -msgstr "" +msgstr "ajouter/supprimer des droits d'administration" #: ../source/features.rst:181 msgid "activate his account (*new in 0.6.0*)" -msgstr "" +msgstr "activer son compte (*nouveau dans la version 0.6.0*)" #: ../source/features.rst:182 msgid "update his email (in case his account is locked) (*new in 0.6.0*)" msgstr "" +"mettre à jour son adresse électronique (au cas où son compte serait " +"bloqué) (*nouveau dans la version 0.6.0*)" #: ../source/features.rst:183 msgid "" "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." msgstr "" +"réinitialiser son mot de passe (dans le cas où son compte est verrouillé)" +" (*nouveau dans la version 0.6.0*). Si l'envoi des courriels est " +"désactivé, cela n'est possible que via l'interface de lignes de commande " +"(CLI)." #: ../source/features.rst:184 msgid "delete a user" -msgstr "" +msgstr "supprimer le compte d'un utilisateur" #: ../source/features.rst:189 msgid "" "enable or disable a sport (a sport can be disabled even if workout with " "this sport exists)" msgstr "" +"activer ou désactiver un sport (un sport peut être désactivé même si une " +"séance avec ce sport existe)" #: ../source/features.rst:194 msgid "" "FitTrackee is available in the following languages (which can be saved in" " the user preferences):" msgstr "" +"FitTrackee est disponible dans les langues suivantes (la langue peut être" +" enregistrée dans les préférences de l'utilisateur) :" #: ../source/features.rst:196 msgid "English" -msgstr "" +msgstr "Anglais" #: ../source/features.rst:197 msgid "French (*new in 0.2.3*)" -msgstr "" +msgstr "Français (*nouveau dans la version 0.2.3*)" #: ../source/features.rst:198 msgid "German (*new in 0.6.9*)" -msgstr "" +msgstr "Allemand (*nouveau dans la version 0.6.9*)" #: ../source/features.rst:199 msgid "Dutch (*new in 0.7.8*)" -msgstr "" +msgstr "Néerlandais (*nouveau dans la version 0.7.8*)" #: ../source/features.rst:200 msgid "Italian (*new in 0.7.10*)" -msgstr "" +msgstr "Italien (*nouveau dans la version 0.7.10*)" #: ../source/features.rst:201 msgid "Galician (*new in 0.7.15*)" -msgstr "" +msgstr "Galicien (*nouveau dans la version 0.7.15*)" #: ../source/features.rst:202 msgid "Spanish (*new in 0.7.15*)" -msgstr "" +msgstr "Espagnol (*nouveau dans la version 0.7.15*)" #: ../source/features.rst:203 msgid "Norwegian Bokmål (*new in 0.7.15*)" -msgstr "" +msgstr "Norvégien (Bokmål) (*nouveau dans la version 0.7.15*)" #: ../source/features.rst:205 msgid "" @@ -3922,175 +4166,205 @@ msgid "" "`__ (may differ from the " "released version):" msgstr "" +"Etat d'avancement de la traduction sur `Weblate " +"`__ (peut différer de la " +"version publiée):" #: ../source/features.rst:211 msgid "Polish is not yet available in **FitTrackee** interface." -msgstr "" +msgstr "Le polonais n'est pas encore disponible dans l'interface de **FitTrackee**" #: ../source/features.rst:214 msgid "Screenshots" -msgstr "" +msgstr "Captures d'écran" #: ../source/features.rst:217 msgid "Dashboard" -msgstr "" +msgstr "Tableau de bord" #: ../source/features.rst:-1 ../source/index.rst:-1 +#, fuzzy msgid "FitTrackee Dashboard" -msgstr "" +msgstr "Séance sur FitTrackee" #: ../source/features.rst:224 msgid "Workout detail" -msgstr "" +msgstr "Page de détail d'une séance" #: ../source/features.rst:-1 msgid "FitTrackee Workout" -msgstr "" +msgstr "Séance sur FitTrackee" #: ../source/features.rst:230 msgid "Workouts list" -msgstr "" +msgstr "Liste des séances" #: ../source/features.rst:-1 msgid "FitTrackee Workouts" -msgstr "" +msgstr "Séances sur FitTrackee" #: ../source/features.rst:-1 msgid "FitTrackee Statistics" -msgstr "" +msgstr "Statistics sur FitTrackee" #: ../source/features.rst:-1 msgid "FitTrackee Administration" -msgstr "" +msgstr "Administration de FitTrackee" #: ../source/features.rst:-1 msgid "FitTrackee Sports Administration" -msgstr "" +msgstr "Administration des sports sur FitTrackee" #: ../source/index.rst:6 msgid "FitTrackee" -msgstr "" +msgstr "FitTrackee" #: ../source/index.rst:9 msgid "" "This web application allows you to track your outdoor activities " "(workouts) from gpx files and keep your data on your own server." msgstr "" +"Cette application web vous permet de suivre vos activités de plein air à " +"partir de fichiers gpx et de conserver vos données sur votre propre " +"serveur." #: ../source/index.rst:11 msgid "" "No mobile app has been developed yet, but several existing mobile apps " "can store workouts data locally and export them into a gpx file." msgstr "" +"Aucune application mobile n'a encore été développée, mais plusieurs " +"applications mobiles existantes peuvent stocker les données des séances " +"localement et les exporter dans un fichier au format gpx." #: ../source/index.rst:12 msgid "Examples for Android (non-exhaustive list):" -msgstr "" +msgstr "Exemples pour Android (liste non exhaustive) :" #: ../source/index.rst:13 msgid "\\* `Runner Up `_ (GPL v3)" -msgstr "" +msgstr "\\* `Runner Up `_ (GPL v3)" #: ../source/index.rst:14 msgid "\\* `ForRunners `_ (GPL v3)" -msgstr "" +msgstr "\\* `ForRunners `_ (GPL v3)" #: ../source/index.rst:15 msgid "" "\\* `OpenTracks `_ (Apache " "License)" msgstr "" +"\\* `OpenTracks `_ (Apache " +"License)" #: ../source/index.rst:16 msgid "\\* `FitoTrack `_ (GPL v3)" -msgstr "" +msgstr "\\* `FitoTrack `_ (GPL v3)" #: ../source/index.rst:19 msgid "" "Maps are displayed using `Open Street Map " "`__." msgstr "" +"Les cartes sont affichées à l'aide de `Open Street Map " +"`__." #: ../source/index.rst:20 msgid "It is also possible to add a workout without a gpx file." -msgstr "" +msgstr "Il est également possible d'ajouter une séance sans fichier gpx." #: ../source/index.rst:22 msgid "**Still under heavy development (some features may be unstable).**" msgstr "" +"**En cours de développement (certaines fonctionnalités peuvent être " +"instables).**" #: ../source/index.rst:23 msgid "" "(see `issues `__ for more " "information)" msgstr "" +"(cf. `tickets `__ pour plus " +"d'informations)" #: ../source/index.rst:30 msgid "Table of contents" -msgstr "" +msgstr "Table des matières" #: ../source/installation.rst:2 ../source/installation.rst:371 #: ../source/installation.rst:800 msgid "Installation" -msgstr "" +msgstr "Installation" #: ../source/installation.rst:4 msgid "This application is written in Python (API) and Typescript (client):" -msgstr "" +msgstr "Cette application est développée en Python (API) et Typescript (client) :" #: ../source/installation.rst:11 msgid "API:" -msgstr "" +msgstr "API :" #: ../source/installation.rst:7 msgid "Flask" -msgstr "" +msgstr "Flask" #: ../source/installation.rst:8 msgid "`gpxpy `_ to parse gpx files" msgstr "" +"`gpxpy `_ pour analyser les fichiers " +"gpx" #: ../source/installation.rst:9 msgid "" "`staticmap `_ to generate a static " "map image from gpx coordinates" msgstr "" +"`staticmap `_ pour générer une image" +" de la trace à partir des données du fichier gpx" #: ../source/installation.rst:10 msgid "" "`dramatiq `_ for task " "queue" msgstr "" +"`dramatiq `_ pour la " +"file d'attente des tâches" #: ../source/installation.rst:11 msgid "" "`Authlib `_ for OAuth 2.0 " "Authorization support" msgstr "" +"`Authlib `_ pour le support de " +"l'autorisation OAuth 2.0" #: ../source/installation.rst:12 msgid "" "`Flask-Limiter `_ for API" " rate limits" msgstr "" +"`Flask-Limiter `_ pour " +"les limitations d'accès à l'API" #: ../source/installation.rst:16 msgid "Client:" -msgstr "" +msgstr "Client :" #: ../source/installation.rst:14 msgid "Vue3/Vuex" -msgstr "" +msgstr "Vue3/Vuex" #: ../source/installation.rst:15 msgid "`Leaflet `__ to display map" -msgstr "" +msgstr "`Leaflet `__ pour affciher la carte" #: ../source/installation.rst:16 msgid "" "`Chart.js `__ to display charts with elevation " "and speed" msgstr "" +"`Chart.js `__ pour afficher les graphiques " +"d'élévation et de vitesse" #: ../source/installation.rst:18 msgid "" @@ -4098,86 +4372,112 @@ msgid "" "`__ from `www.flaticon.com " "`__." msgstr "" +"Le logo, les icônes de certains sports et celles des icônes météo ont été" +" faites par `Freepik `__ sur `www.flaticon.com " +"`__." #: ../source/installation.rst:19 msgid "FitTrackee also uses icons from `Fork Awesome `__." msgstr "" +"FitTrackee utilise également les icônes de `Fork Awesome " +"`__." #: ../source/installation.rst:22 msgid "Prerequisites" -msgstr "" +msgstr "Prérequis" #: ../source/installation.rst:25 msgid "mandatory" -msgstr "" +msgstr "obligatoires" #: ../source/installation.rst:25 +#, fuzzy msgid "Python 3.8+" -msgstr "" +msgstr "Python 3.8+" #: ../source/installation.rst:26 msgid "PostgreSQL 11+" -msgstr "" +msgstr "PostgreSQL 11+" #: ../source/installation.rst:33 msgid "optional" -msgstr "" +msgstr "optionels" #: ../source/installation.rst:28 msgid "" "Redis for task queue (if email sending is enabled and for data export " "requests) and API rate limits" msgstr "" +"Redis pour la file d'attente de tâches (si l'envoi des courriels est " +"activé et pour les demandes d'export de données) et les limitations " +"d'accès à l'API" #: ../source/installation.rst:29 msgid "SMTP provider (if email sending is enabled)" -msgstr "" +msgstr "Fournisseur SMTP (si l'envoi des courriels est activé)" #: ../source/installation.rst:30 msgid "API key from a `weather data provider `__" msgstr "" +"Clé d'API d'un `fournisseur de données météo `__" #: ../source/installation.rst:31 msgid "" "`Poetry `__ (for installation from sources " "only)" msgstr "" +"`Poetry `__ (pour l'installation à partir des " +"sources uniquement)" #: ../source/installation.rst:32 msgid "" "`Node `__ 16+ and `Yarn `__ (for" " development only)" msgstr "" +"`Node `__ 16+ et `Yarn `__ (pour" +" le développement uniquement)" #: ../source/installation.rst:33 msgid "Docker and Docker Compose (for development or evaluation purposes)" msgstr "" +"Docker et Docker Compose (pour le développement ou l'évaluation de " +"l'application)" #: ../source/installation.rst msgid "" "If registration is enabled, it is recommended to set Redis and a SMTP " "provider for email sending and data export requests." msgstr "" +"Si l'inscription des utilisateurs est activé, il est recommandé de " +"configurer un fournisseur SMTP pour l'envoi des courriels et les demandes" +" d'export de données" #: ../source/installation.rst msgid "" "The following steps describe an installation on Linux systems (tested on " "Debian and Arch)." msgstr "" +"Les étapes suivantes décrivent l'installation sur des systèmes Linux " +"(testée sur Debian et Arch)." #: ../source/installation.rst msgid "" "On other OS, some issues can be encountered and adaptations may be " "necessary." msgstr "" +"Sur d'autres systèmes d'exploitations, des problèmes peuvent être " +"rencontrés et des adaptations nécessaires." #: ../source/installation.rst:46 msgid "Environment variables" -msgstr "" +msgstr "Variables d'environnement" #: ../source/installation.rst msgid "Since FitTrackee 0.4.0, ``Makefile.custom.config`` is replaced by ``.env``" msgstr "" +"Depuis la version 0.4.0 de FitTrackee, le fichier " +"``Makefile.custom.config`` est remplacé par le fichier ``.env``" #: ../source/installation.rst:51 msgid "" @@ -4185,92 +4485,112 @@ msgid "" "application or the task processing library. They are not all mandatory " "depending on deployment method." msgstr "" +"Les variables d'environnements suivantes sont utilisées par l'application" +" web de **FitTrackee** ou la librairie de gestion de la file d'attente " +"des tâches. Elles ne sont pas toutes obligatoires selon la méthode de " +"déploiement." #: ../source/installation.rst:57 msgid "Name of the module to import at flask run." -msgstr "" +msgstr "Nom du module à importer au démarrage de Flask" #: ../source/installation.rst:58 msgid "" "``FLASK_APP`` should contain ``$(PWD)/fittrackee/__main__.py`` with " "installation from sources, else ``fittrackee``." msgstr "" +"``FLASK_APP`` doit contenir ``$(PWD)/fittrackee/__main__.py`` dans le cas" +" de l'installation à partir des sources, sinon ``fittrackee``." #: ../source/installation.rst:63 msgid "**FitTrackee** host." -msgstr "" +msgstr "Hôte **FitTrackee** " #: ../source/installation.rst msgid "default" -msgstr "" +msgstr "défaut" #: ../source/installation.rst:65 msgid "127.0.0.1" -msgstr "" +msgstr "127.0.0.1" #: ../source/installation.rst:70 msgid "**FitTrackee** port." -msgstr "" +msgstr "Port de l'application web **FitTrackee**" #: ../source/installation.rst:72 msgid "5000" -msgstr "" +msgstr "5000" #: ../source/installation.rst:77 msgid "**FitTrackee** configuration." -msgstr "" +msgstr "Configuration de **FitTrackee**" #: ../source/installation.rst:79 msgid "fittrackee.config.ProductionConfig" -msgstr "" +msgstr "fittrackee.config.ProductionConfig" #: ../source/installation.rst:84 msgid "**FitTrackee** secret key, must be initialized in production environment." msgstr "" +"clé secrète de **FitTrackee**, doit être initialisé sur un environnement " +"de production." #: ../source/installation.rst:87 msgid "Use a strong secret key. This key is used in JWT generation." msgstr "" +"Utiliser une clé secrète forte. Cette clé est utilisée pour la génération" +" des jetons JWT" #: ../source/installation.rst:91 msgid "Number of workers spawned by **Gunicorn**." -msgstr "" +msgstr "Nombre de _workers_ lancés par **Gunicorn**" #: ../source/installation.rst:93 msgid "1" -msgstr "" +msgstr "1" #: ../source/installation.rst:100 msgid "Path to log file" -msgstr "" +msgstr "Chemin du fichier log" #: ../source/installation.rst:107 msgid "" "**Absolute path** to the directory where ``uploads`` folder will be " "created." msgstr "" +"Un **chemin absolu** vers le répertoire dans le répertoire `uploads` sera" +" créé." #: ../source/installation.rst:109 msgid "``/fittrackee``" -msgstr "" +msgstr "``/fittrackee``" #: ../source/installation.rst msgid "" "With installation from PyPI, the directory will be located in " "**virtualenv** directory if the variable is not initialized." msgstr "" +"Dans le cas d'une installation avec PyPI, le répertoire sera localisé " +"dans le répertoire de l'environnement virtuel Python si la variable n'est" +" pas initialisée" #: ../source/installation.rst:117 msgid "" "Database URL with username and password, must be initialized in " "production environment." msgstr "" +"URL de la base de données avec le nom et le mot de passe de " +"l'utilisateur, doit être initialisée sur les environnements de " +"production." #: ../source/installation.rst:118 msgid "" "For example in dev environment : " "``postgresql://fittrackee:fittrackee@localhost:5432/fittrackee``" msgstr "" +"Exemple pour un environnement de développement : " +"``postgresql://fittrackee:fittrackee@localhost:5432/fittrackee``" #: ../source/installation.rst msgid "" @@ -4279,6 +4599,10 @@ msgid "" "3687655465c25a39b968b4f5f6e9170b>`__, engine URL should begin with " "``postgresql://``." msgstr "" +"Depuis la `version 1.4+ de SQLAlchemy " +"`__, l'URL doit commencé avec " +"`postgresql://`." #: ../source/installation.rst:128 msgid "" @@ -4287,62 +4611,73 @@ msgid "" "documentation `__." msgstr "" +"Désactiver le *pooling* si nécessaire (dans le cas du démarrage direct " +"avec le point d'entrée de **FitTrackee** et non avec **Gunicorn**), cf. " +"la `documentation de SqlAlchemy " +"`__." #: ../source/installation.rst:131 msgid "``false``" -msgstr "" +msgstr "``false``" #: ../source/installation.rst:135 msgid "**FitTrackee** URL, needed for links in emails." -msgstr "" +msgstr "URL de **FitTrackee**, nécessaire pour les liens dans les courriels." #: ../source/installation.rst:142 msgid "Email URL with credentials, see `Emails `__." msgstr "" +"URL du serveur d'envoi des courriels avec les informations de connexion, " +"cf. `Courriels `__." #: ../source/installation.rst:146 ../source/installation.rst:203 msgid "empty string" -msgstr "" +msgstr "chaine de caractère vide" #: ../source/installation.rst:149 msgid "If the email URL is empty, email sending will be disabled." -msgstr "" +msgstr "Si l'URL du serveur est vide, l'envoi des courriels sera désactivé." #: ../source/installation.rst:152 msgid "If the email URL is invalid, the application may not start." -msgstr "" +msgstr "Si l'URL du serveur est invalide, l'envoi des courriels sera désactivé." #: ../source/installation.rst:158 msgid "**FitTrackee** sender email address." -msgstr "" +msgstr "Adresse électronique de l'expéditeur **FitTrackee**." #: ../source/installation.rst:165 msgid "Redis instance used by **Dramatiq** and **Flask-Limiter**." -msgstr "" +msgstr "Instance Redis utilisée par **Dramatiq** et **Flask-Limiter**." #: ../source/installation.rst:167 msgid "local Redis instance (``redis://``)" -msgstr "" +msgstr "instance locale Redis (``redis://``)" #: ../source/installation.rst:174 msgid "Number of processes used by **Dramatiq**." -msgstr "" +msgstr "Nombre de processus utilisés par **Dramatiq**." #: ../source/installation.rst:181 msgid "" "API rate limits, see `API rate limits `__." msgstr "" +"Limite d'accès à l'API, cf. `Limitation d'accès à l'API " +"`__." #: ../source/installation.rst:183 msgid "``300 per 5 minutes``" -msgstr "" +msgstr "``300 per 5 minutes``" #: ../source/installation.rst:190 msgid "" "Tile server URL (with api key if needed), see `Map tile server " "`__." msgstr "" +"URl du serveur de tuiles (avec la clé de l'API si nécessaire), cf. " +"`Serveur de tuiles `__." #: ../source/installation.rst:191 msgid "" @@ -4350,26 +4685,33 @@ msgid "" "server, see `DEFAULT_STATICMAP `__)" msgstr "" +"Depuis la version **0.4.9**, il est également utiliser pour générer les " +"images statiques des cartes (pour garder le serveur par défaut cf. " +"`DEFAULT_STATICMAP `__)" #: ../source/installation.rst:193 msgid "``https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png``" -msgstr "" +msgstr "``https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png``" #: ../source/installation.rst:200 msgid "" "Some tile servers require a subdomain, see `Map tile server " "`__." msgstr "" +"Certains serveurs de tuiles nécessitent un sous-domaine, df. `Serveur de " +"tuiles `__." #: ../source/installation.rst:201 msgid "For instance: \"a,b,c\" for OSM France." -msgstr "" +msgstr "Par exemple: \"a,b,c\" pour OSM France." #: ../source/installation.rst:210 msgid "" "Map attribution (if using another tile server), see `Map tile server " "`__." msgstr "" +"Attribution de la carte (si une autre serveur de tuile est utilisé), cf. " +"`Serveur de tuiles `__." #: ../source/installation.rst:212 msgid "" @@ -4377,136 +4719,173 @@ msgid "" "target=\"_blank\" rel=\"noopener noreferrer\">OpenStreetMap " "contributors``" msgstr "" +"``© OpenStreetMap " +"contributors``" #: ../source/installation.rst:219 msgid "" "If ``True``, it keeps using default tile server to generate static maps " "(Komoot.de tile server)." msgstr "" +"Si ``True``, le serveur de tuile par défaut est conservé pour générer les" +" images statiques de cartes (serveur de tuiles Komoot.de)." #: ../source/installation.rst:220 msgid "" "Otherwise, it uses the tile server set in `TILE_SERVER_URL " "`__." msgstr "" +"Sinon, le serveur de tuiles configuré dans `TILE_SERVER_URL " +"`__ sera utilisé." #: ../source/installation.rst:224 msgid "This variable is now case-insensitive." -msgstr "" +msgstr "Cette variable est maintenant insensible à la casse." #: ../source/installation.rst:225 msgid "" "If ``False``, depending on tile server, `subdomains `__ may be mandatory." msgstr "" +"Si ``False``, selon le serveur de tuile, les `sous-domaines " +"`__ peuvent être " +"obligatoires." #: ../source/installation.rst:227 msgid "False" -msgstr "" +msgstr "False" #: ../source/installation.rst:232 msgid "⚠️ replaces ``WEATHER_API``" -msgstr "" +msgstr "⚠️ remplace ``WEATHER_API``" #: ../source/installation.rst:234 msgid "Weather API key (not mandatory), see ``WEATHER_API_PROVIDER``." msgstr "" +"Clé d'API du fournisseur de données météo (non obligatoire), cf. " +"``WEATHER_API_PROVIDER``." #: ../source/installation.rst:241 msgid "" "Provider for weather data (not mandatory), see `Weather data " "`__." msgstr "" +"Fournisseur de données météo (non obligatoire), cf `Données météo " +"`__." #: ../source/installation.rst:246 msgid "**FitTrackee** API URL, only needed in dev environment." msgstr "" +"URL de l'API **FitTrackee**, uniquement pour les environnements de " +"développement." #: ../source/installation.rst:251 msgid "Emails" -msgstr "" +msgstr "Courriels" #: ../source/installation.rst:254 msgid "To send emails, a valid ``EMAIL_URL`` must be provided:" -msgstr "" +msgstr "Pour l'envoi des courriels, une valeur valide pour la variable ``EMAIL_URL`` doit être fourni :" #: ../source/installation.rst:256 msgid "" "with an unencrypted SMTP server: " "``smtp://username:password@smtp.example.com:25``" msgstr "" +"avec un SMTP server sans chiffrement : " +"``smtp://username:password@smtp.example.com:25``" #: ../source/installation.rst:257 msgid "with SSL: ``smtp://username:password@smtp.example.com:465/?ssl=True``" -msgstr "" +msgstr "avec SSL: ``smtp://username:password@smtp.example.com:465/?ssl=True``" #: ../source/installation.rst:258 msgid "with STARTTLS: ``smtp://username:password@smtp.example.com:587/?tls=True``" -msgstr "" +msgstr "avec STARTTLS: ``smtp://username:password@smtp.example.com:587/?tls=True``" #: ../source/installation.rst msgid "- If the email URL is invalid, the application may not start." msgstr "" +"- si l'URl su serveur n'est pas valide, l'application peut ne pas " +"démarrer." #: ../source/installation.rst msgid "- Sending emails with Office365 may not work if SMTP auth is disabled." msgstr "" +"L'envoi de courriels avec Office365 peut ne pas fonctionner si " +"l'authentification SMTP est désactivée." #: ../source/installation.rst:266 msgid "Credentials can be omitted: ``smtp://smtp.example.com:25``." msgstr "" +"Les informations d'identification peuvent être omises: " +"``smtp://smtp.example.com:25``." #: ../source/installation.rst:267 msgid "If ``:`` is omitted, the port defaults to 25." -msgstr "" +msgstr "Si ``:`` est omis, the port par défaut est 25." #: ../source/installation.rst msgid "" "Since 0.6.0, newly created accounts must be confirmed (an email with " "confirmation instructions is sent after registration)." msgstr "" +"Depuis la version 0.6.0, les comptes nouvellement créés doivent être " +"confirmés (un courriel contenant des instructions de confirmation est " +"envoyé après l'inscription)." #: ../source/installation.rst:272 msgid "Emails sent by FitTrackee are:" -msgstr "" +msgstr "Les courriels envoyés par FitTrackee sont :" #: ../source/installation.rst:274 msgid "account confirmation instructions" -msgstr "" +msgstr "instructions pour la confirmation du compte" #: ../source/installation.rst:275 msgid "password reset request" -msgstr "" +msgstr "demande de réinitialisation du mot de passe" #: ../source/installation.rst:276 msgid "email change (to old and new email adresses)" -msgstr "" +msgstr "changement d'adresse électronique (vers l'ancienne et la nouvelle adresse)" #: ../source/installation.rst:277 msgid "password change" -msgstr "" +msgstr "changement de mot de passe" #: ../source/installation.rst:278 msgid "" "notification when a data export archive is ready to download (*new in " "0.7.13*)" msgstr "" +"notification lorsqu'une archive d'exportation de données est prête à être" +" téléchargée (*ajouté dans la version 0.7.13*)" #: ../source/installation.rst:282 msgid "" "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)." msgstr "" +"Dans le cas des instance avec un seul utilisateur, il est possible de " +"désactiver l'envoi de courriel en laissant la variable ``EMAIL_URL`` vide" +" (dans ce cas il n'est pas nécessaire de lancer les *workers* de " +"dramatiq)." #: ../source/installation.rst:284 msgid "" "A `CLI `__ is available to activate account," " modify email and password and handle data export requests." msgstr "" +"Une `interface de ligne de commande (CLI) `__ est disponible pour activer les comptes, modifier l'adresse " +"électronique et le mot de passe et gérer les demandes d'exports de " +"données." #: ../source/installation.rst:288 msgid "Map tile server" -msgstr "" +msgstr "Serveur de tuiles" #: ../source/installation.rst:291 msgid "" @@ -4516,16 +4895,24 @@ msgid "" " (`list of tile servers " "`__)." msgstr "" +"Le serveur de tuiles par défaut est maintenant le serveur standard " +"d'**OpenStreetMap** (si les variables d'environnements ne sont pas " +"initialisées). Le serveur de tuile peut être changé en modifiant les " +"variables ``TILE_SERVER_URL`` et ``MAP_ATTRIBUTION`` (`liste des serveurs" +" de tuiles " +"`__)." #: ../source/installation.rst:294 msgid "To keep using **ThunderForest Outdoors**, the configuration is:" -msgstr "" +msgstr "Pour conserver **ThunderForest Outdoors**, la configuration est :" #: ../source/installation.rst:296 msgid "" "``TILE_SERVER_URL=https://{s}.tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey=XXXX``" " where **XXXX** is **ThunderForest** API key" msgstr "" +"``TILE_SERVER_URL=https://{s}.tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey=XXXX``" +" où **XXXX** est la clé d'API de **ThunderForest**" #: ../source/installation.rst:297 msgid "" @@ -4534,24 +4921,35 @@ msgid "" "href=\"http://www.openstreetmap.org/copyright\">OpenStreetMap " "contributors``" msgstr "" +"``MAP_ATTRIBUTION=© Thunderforest, © OpenStreetMap " +"contributors``" #: ../source/installation.rst msgid "Check the terms of service of tile provider for map attribution." msgstr "" +"Vérifier les conditions d'utilisation du fournisseur de tuiles pour " +"l'attribution des cartes." #: ../source/installation.rst:305 msgid "" "Since the tile server can be used for static map generation, some servers" " require a subdomain." msgstr "" +"Depuis que le serveur de tuiles peut être utilisé pour la génération des " +"images statiques de cartes, certains serveurs nécessitent un sous-" +"domaine." #: ../source/installation.rst:307 msgid "For instance, to set OSM France tile server, the expected values are:" msgstr "" +"par exemple, pour configurer le serveur d\\'OSM France, les valeurs " +"attendues sont :" #: ../source/installation.rst:309 msgid "``TILE_SERVER_URL=https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png``" -msgstr "" +msgstr "``TILE_SERVER_URL=https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png``" #: ../source/installation.rst:310 msgid "" @@ -4561,18 +4959,23 @@ msgid "" "href=\"http://creativecommons.org/licenses/by-sa/2.0/fr/\" " "target=\"_blank\" rel=\"nofollow noopener\">licence CC BY-SA'``" msgstr "" +"``MAP_ATTRIBUTION='fond de carte par OpenStreetMap France, sous licence CC BY-SA'``" #: ../source/installation.rst:311 msgid "``STATICMAP_SUBDOMAINS=a,b,c``" -msgstr "" +msgstr "``STATICMAP_SUBDOMAINS=a,b,c``" #: ../source/installation.rst:313 msgid "The subdomain will be chosen randomly." -msgstr "" +msgstr "Le sous-domaine sera choisi de manière aléatoire." #: ../source/installation.rst:317 msgid "API rate limits" -msgstr "" +msgstr "Limitation d'accès à l'API" #: ../source/installation.rst:320 msgid "" @@ -4580,20 +4983,27 @@ msgid "" "limiter.readthedocs.io/en/stable>`_, based on IP with fixed window " "strategy." msgstr "" +"La limitation d'accès à l'API est gérée par `Flask-Limiter `_, et basé sur l'adresse IP " +"avec une stratégie de fenêtre fixe." #: ../source/installation.rst:321 msgid "To enable rate limits, **Redis** must be available." -msgstr "" +msgstr "Pour activer la limitation d'accès, **Redis** doit être accessible." #: ../source/installation.rst msgid "" "If no Redis instance is available for rate limits, FitTrackee can still " "start." msgstr "" +"Si aucune instance Redis n'est disponible, FitTrackee pourra tout de même" +" démarrer." #: ../source/installation.rst:326 msgid "All endpoints are subject to rate limits, except endpoints serving assets." msgstr "" +"Tous les points d'accès sont soumis à des limitations d'accès sauf les " +"points servant des _assets_." #: ../source/installation.rst:327 msgid "" @@ -4602,10 +5012,14 @@ msgid "" "://flask-limiter.readthedocs.io/en/stable/configuration.html#rate-limit-" "string-notation>`_)." msgstr "" +"Les limites peuvent être modifiées en configurant la variable " +"``API_RATE_LIMITS`` (cf. la `documentation Flask-Limiter sur la notation " +"`_)." #: ../source/installation.rst:328 msgid "Rate limits must be separated by a comma, for instance:" -msgstr "" +msgstr "Les limites doivent être séparées par des virgules, par exemple :" #: ../source/installation.rst:334 msgid "" @@ -4613,106 +5027,132 @@ msgid "" "limiter.readthedocs.io/en/stable/cli.html>`_ for maintenance and " "diagnostic purposes." msgstr "" +"**Flask-Limiter** fournit une `Interface de lignes de commande `_ à des fins de " +"maintenance et de diagnostic" #: ../source/installation.rst:353 msgid "Weather data" -msgstr "" +msgstr "Données météo" #: ../source/installation.rst:356 msgid "The following weather data providers are supported by **FitTrackee**:" msgstr "" +"Les fournisseurs de données météo suivants sont pris en charge par " +"**FitTrackee** :" #: ../source/installation.rst:358 msgid "" "`Visual Crossing `__ (**note**: " "historical data are provided on hourly period)" msgstr "" +"`Visual Crossing `__ (**note**: les " +"données historiques sont fournies sur une période d'une heure)" #: ../source/installation.rst:360 msgid "To configure a weather provider, set the following environment variables:" msgstr "" +"Pour configurer un fournisseur de données météo, initialiser les " +"variables d'environnement suivantes :" #: ../source/installation.rst:362 msgid "``WEATHER_API_KEY``: the key to the corresponding weather provider" msgstr "" +"``WEATHER_API_KEY``: clé d'API correspondant au fournisseur de données " +"météo" #: ../source/installation.rst:367 msgid "" "**DarkSky** support is discontinued, since the service shut down on March" " 31, 2023." msgstr "" +"Le support de **DarkSky** est interrompu, depuis l'arrêt du service le 31" +" Mars 2023." #: ../source/installation.rst msgid "" "Note that **FitTrackee** is under heavy development, some features may be" " unstable." msgstr "" +"Remarque : FitTrackee est en cours de développement, certaines " +"fonctionnalités peuvent être instables." #: ../source/installation.rst:377 ../source/installation.rst:563 msgid "From PyPI" -msgstr "" +msgstr "A partir de PyPI" #: ../source/installation.rst msgid "Recommended way on production." -msgstr "" +msgstr "Méthode recommandée en production" #: ../source/installation.rst:382 msgid "Create and activate a virtualenv" -msgstr "" +msgstr "Créer et activer l'environnement virtuel" #: ../source/installation.rst:384 msgid "Install **FitTrackee** with pip" -msgstr "" +msgstr "Installer **FitTrackee** à partir de pip" #: ../source/installation.rst:390 msgid "Create ``fittrackee`` database" -msgstr "" +msgstr "Créer la base de données ``fittrackee``" #: ../source/installation.rst:392 msgid "Example :" -msgstr "" +msgstr "Exemple :" #: ../source/installation.rst msgid "" "see PostgreSQL `documentation `_ for schema and privileges." msgstr "" +"cf. `documentation `_ PostgreSQL pour les schémas et privilèges." #: ../source/installation.rst:403 msgid "" "Initialize environment variables, see `Environment variables " "`__" msgstr "" +"Initialiser les variables d'environnement, cf. `Variables d'environnement" +" `__" #: ../source/installation.rst:405 msgid "" "For instance, copy and update ``.env`` file from ``.env.example`` and " "source the file." msgstr "" +"Par exemple, copier et coller le fichier ``.env`` à partir de " +"``.env.example`` et activer le fichier" #: ../source/installation.rst:412 msgid "Initialize database schema" -msgstr "" +msgstr "Initialiser le schéma de la base de données" #: ../source/installation.rst:418 msgid "Start the application" -msgstr "" +msgstr "Démarrer l'application" #: ../source/installation.rst:424 msgid "" "Start task queue workers if email sending is enabled, with flask-dramatiq" " CLI:" msgstr "" +"Démarrer les *workers* de la file d'attente des tâches si l'envoi des " +"courriels est activé, avec l'interface de ligne de commandes de flask-" +"dramatiq" #: ../source/installation.rst msgid "" "To start application and workers with **systemd** service, see " "`Deployment `__" msgstr "" +"Pour démarrer l'application et les *workers* avec le service **systemd**," +" cf. `Déploiement `__" #: ../source/installation.rst:433 ../source/installation.rst:542 msgid "Open http://localhost:5000 and register" -msgstr "" +msgstr "Ouvrir l'URL http://localhost:5000 avec un navigateur et s'inscrire" #: ../source/installation.rst:435 ../source/installation.rst:493 #: ../source/installation.rst:544 ../source/installation.rst:825 @@ -4720,25 +5160,31 @@ msgid "" "To set admin rights to the newly created account, use the following " "command line:" msgstr "" +"Pour donner les droits d'administration au compte nouvellement créé " +"utiliser la ligne de commande suivante :" #: ../source/installation.rst:442 ../source/installation.rst:500 #: ../source/installation.rst:551 ../source/installation.rst:832 msgid "If the user account is inactive, it activates it." -msgstr "" +msgstr "Si le compte de l'utilisateur est inactif, il sera alors activée." #: ../source/installation.rst:445 ../source/installation.rst:590 msgid "From sources" -msgstr "" +msgstr "A partir des sources" #: ../source/installation.rst msgid "Since **FitTrackee** 0.2.1, Python packages installation needs Poetry." msgstr "" +"Depuis la version 0.2.1 de FitTrackee, l'installation des paquets Python " +"nécessite Poetry." #: ../source/installation.rst msgid "" "For more information, see `Poetry Documentation `__" msgstr "" +"Pour plus d'information, voir la `documentation de Poetry `__" #: ../source/installation.rst msgid "To keep virtualenv in project directory, update Poetry configuration." @@ -4746,39 +5192,43 @@ msgstr "" #: ../source/installation.rst:459 ../source/installation.rst:593 msgid "Dev environment" -msgstr "" +msgstr "Environnements de développement" #: ../source/installation.rst:461 msgid "Clone this repo:" -msgstr "" +msgstr "Cloner ce dépôt :" #: ../source/installation.rst:468 ../source/installation.rst:517 msgid "" "Create **.env** from example and update it (see `Environment variables " "`__)." msgstr "" +"Créer le fichier **.env** à partir de l'exemple et le mettre à jour (cf. " +"`Variables d'environnement `__)." #: ../source/installation.rst:471 msgid "" "Install Python virtualenv, Vue and all related packages and initialize " "the database:" msgstr "" +"Installer l'environnement virtuel Python, Vue et tous les paquets " +"nécessaires et initialiser la base de données :" #: ../source/installation.rst:479 msgid "Start the server and the client:" -msgstr "" +msgstr "Démarrer le serveur et le client :" #: ../source/installation.rst:485 ../source/installation.rst:621 msgid "Run dramatiq workers:" -msgstr "" +msgstr "Démarrer les *workers* dramatiq" #: ../source/installation.rst:491 msgid "Open http://localhost:3000 and register" -msgstr "" +msgstr "Ouvrir l'URL http://localhost:3000 avec un navigateur et s'inscrire" #: ../source/installation.rst:503 msgid "Production environment" -msgstr "" +msgstr "Environnements de production" #: ../source/installation.rst msgid "" @@ -4788,114 +5238,131 @@ msgstr "" #: ../source/installation.rst:508 msgid "Download the last release (for now, it is the release v0.7.17):" -msgstr "" +msgstr "Télécharger la dernière version (à ce jour, la version v0.7.17):" #: ../source/installation.rst:520 msgid "Install Python virtualenv and all related packages:" -msgstr "" +msgstr "Installer l'environnement virtuel Python et tous les paquets nécessaires:" #: ../source/installation.rst:526 msgid "" "Initialize the database (**after updating** ``db/create.sql`` **to change" " database credentials**):" msgstr "" +"Initialiser la base de données (**après avoir mis à jour** " +"``db/create.sql`` **pour changer les informations de connexion à la base " +"de données**):" #: ../source/installation.rst:533 msgid "Start the server and dramatiq workers:" -msgstr "" +msgstr "Démarrer le serveur et les *workers* dramatiq :" #: ../source/installation.rst:540 ../source/installation.rst:664 msgid "If email sending is disabled: ``$ make run-server``" -msgstr "" +msgstr "Si l'envoi des courriels est désactivé : ``$ make run-server``" #: ../source/installation.rst:554 msgid "Upgrade" -msgstr "" +msgstr "Mise à jour" #: ../source/installation.rst msgid "Before upgrading, make a backup of all data:" msgstr "" +"Avant de procéder à la mise à jour, faire une sauvegarde de l'ensemble " +"des données :" #: ../source/installation.rst msgid "" "- database (with `pg_dump `__ for instance)" msgstr "" +"- base de données (avec la commande `pg_dump " +"`__ par exemple)" #: ../source/installation.rst msgid "" "- upload directory (see `Environment variables `__)" msgstr "" +"- répertoire des fichiers téléversés (see `Variables d'environnement " +"`__)" #: ../source/installation.rst:565 msgid "Stop the application and activate the virtualenv" -msgstr "" +msgstr "Stopper l'application et activer l'environnement virtuel" #: ../source/installation.rst:567 msgid "Upgrade with pip" -msgstr "" +msgstr "Mettre à jour avec pip" #: ../source/installation.rst:573 msgid "" "Update environment variables if needed and source environment variables " "file" -msgstr "" +msgstr "Mettre à jour les variables d'environnements si nécessaire et les activer " #: ../source/installation.rst:580 ../source/installation.rst:609 #: ../source/installation.rst:651 msgid "Upgrade database if needed (see changelog for migrations):" msgstr "" +"Mettre à jour la base de données si nécessaire (voir le journal des " +"changements pour les migrations)" #: ../source/installation.rst:586 msgid "" "Restart the application and task queue workers (if email sending is " "enabled)." msgstr "" +"Redémarrer l'application et les *workers* de la file d'attente des tâches" +" (si l'envoi des courriels est activé)." #: ../source/installation.rst:595 msgid "Stop the application and pull the repository:" -msgstr "" +msgstr "Arrêter l'application et récupérer les derniers changements du dépôt :" #: ../source/installation.rst:601 ../source/installation.rst:643 msgid "" "Update **.env** if needed (see `Environment variables `__)." msgstr "" +"Mettre à jour le fichier **.env** si nécessaire (cf. `Variables " +"d'environnement `__)." #: ../source/installation.rst:603 ../source/installation.rst:645 msgid "Upgrade packages:" -msgstr "" +msgstr "Mettre à jour les paquets" #: ../source/installation.rst:615 msgid "Restart the server:" -msgstr "" +msgstr "Redémarrer le serveur" #: ../source/installation.rst:628 msgid "Prod environment" -msgstr "" +msgstr "Environnement de production" #: ../source/installation.rst:630 msgid "Stop the application" -msgstr "" +msgstr "Arrêter l'application" #: ../source/installation.rst:632 msgid "Change to the directory where FitTrackee directory is located" -msgstr "" +msgstr "Changer pour le répertoire dans lequel FitTrackee est localisé" #: ../source/installation.rst:634 msgid "" "Download the last release (for now, it is the release v0.7.17) and " "overwrite existing files:" msgstr "" +"Télécharger la dernière version (à ce jour, la version v0.7.17) et " +"écraser les fichiers existants :" #: ../source/installation.rst:657 msgid "Restart the server and dramatiq workers:" -msgstr "" +msgstr "Redémarrer le serveur et les *workers* dramatiq :" #: ../source/installation.rst:667 msgid "Deployment" -msgstr "" +msgstr "Déploiement" #: ../source/installation.rst:669 msgid "" @@ -4903,16 +5370,22 @@ msgid "" "queue library. One way is to use a **systemd** services and **Nginx** to " "proxy pass to **Gunicorn**." msgstr "" +"Il y a plusieurs méthodes pour démarrer et servir l'application web " +"**FitTrackee** et l'application de gestion de la file d'attente de " +"tâches. Un des moyens est d'utiliser les services **systemd** et " +"**Nginx** to proxy passer à **Gunicorn**." #: ../source/installation.rst:673 msgid "" "Examples (to adapt depending on your instance configuration and operating" " system):" msgstr "" +"Exemples (à adapter selon la configuration de votre instance et votre " +"système d'exploitation):" #: ../source/installation.rst:675 msgid "for application: ``fittrackee.service``" -msgstr "" +msgstr "pour l'application: ``fittrackee.service``" #: ../source/installation.rst:715 msgid "" @@ -4920,20 +5393,26 @@ msgid "" "`__ can be " "set." msgstr "" +"Pour gérer les fichiers de taille importante, une valeur plus importante " +"pour le `timeout " +"`__ peut être " +"configurée." #: ../source/installation.rst:718 msgid "" "More information on deployment with Gunicorn in its `documentation " "`__." msgstr "" +"Plus d'informations sur le déploiement avec Gunicorn dans sa " +"`documentation `__." #: ../source/installation.rst:720 msgid "for task queue workers: ``fittrackee_workers.service``" -msgstr "" +msgstr "pour les *workers* de la file d'attente: ``fittrackee_workers.service``" #: ../source/installation.rst:755 msgid "**Nginx** configuration:" -msgstr "" +msgstr "Configuration **Nginx** :" #: ../source/installation.rst:793 msgid "" @@ -4941,94 +5420,108 @@ msgid "" "`client_max_body_size " "`_)." msgstr "" +"Si besoin, modifier la configuration pour gérer les fichiers de taille " +"importante (cf. `client_max_body_size " +"`_)." #: ../source/installation.rst:797 msgid "Docker" -msgstr "" +msgstr "Docker" #: ../source/installation.rst:804 msgid "" "For evaluation purposes, docker files are available, installing " "**FitTrackee** from **sources**." msgstr "" +"A des fins d'évaluation, des fichiers Docker sont disponible, installant " +"**FitTrackee** à partir des sources **sources**." #: ../source/installation.rst:806 msgid "To install **FitTrackee**:" -msgstr "" +msgstr "Pour installer **FitTrackee** :" #: ../source/installation.rst:815 msgid "To initialise database:" -msgstr "" +msgstr "Pour initialiser la base de données :" #: ../source/installation.rst:821 msgid "Open http://localhost:5000 and register." -msgstr "" +msgstr "Ouvrir l'URL http://localhost:5000 avec un navigateur et s'inscrire." #: ../source/installation.rst:823 msgid "" "Open http://localhost:8025 to access `MailHog interface " "`_ (email testing tool)" msgstr "" +"Ouvrir l'URL http://localhost:8025 pour accéder à l'interface de `MailHog" +" `_ (outil de test)" #: ../source/installation.rst:834 msgid "To stop **Fittrackee**:" -msgstr "" +msgstr "Pour arrêter **Fittrackee** :" #: ../source/installation.rst:840 msgid "To start **Fittrackee** (application and dramatiq workers):" -msgstr "" +msgstr "pour démarrer **Fittrackee** (application et *workers* dramatiq):" #: ../source/installation.rst:847 msgid "To run shell inside **Fittrackee** container:" -msgstr "" +msgstr "Pour lancer le shell dans le container **Fittrackee** :" #: ../source/installation.rst:855 msgid "Development" -msgstr "" +msgstr "Développement" #: ../source/installation.rst:859 msgid "an additional step is needed to install ``fittrackee_client``" -msgstr "" +msgstr "une étape additionnelle est nécessaire pour installer `fittrackee_client`" #: ../source/installation.rst:865 msgid "to start **FitTrackee** with client dev tools:" -msgstr "" +msgstr "pour démarrer **FitTrackee** avec les outils de développement client:" #: ../source/installation.rst:871 msgid "Open http://localhost:3000" -msgstr "" +msgstr "Ouvrir http://localhost:3000" #: ../source/installation.rst:874 msgid "Some environment variables need to be updated like ``UI_URL``" msgstr "" +"Certaines variables d'environnement doivent être mise à jour comme " +"``UI_URL``" #: ../source/installation.rst:876 msgid "to run lint or tests:" -msgstr "" +msgstr "pour lancer le lint et les tests :" #: ../source/installation.rst:887 msgid "Yunohost" -msgstr "" +msgstr "Yunohost" #: ../source/installation.rst:889 msgid "" "A package is available, see https://github.com/YunoHost-" "Apps/fittrackee_ynh." msgstr "" +"un paquet est available, cf. https://github.com/YunoHost-" +"Apps/fittrackee_ynh." #: ../source/oauth.rst:2 msgid "OAuth 2.0" -msgstr "" +msgstr "OAuth 2.0" #: ../source/oauth.rst:3 msgid "(*new in 0.7.0*)" -msgstr "" +msgstr "(*nouveau dans la version in 0.7.0*)" #: ../source/oauth.rst:5 msgid "" "FitTrackee provides a REST API (see `documentation `__) " "whose most endpoints require authentication/authorization." msgstr "" +"FitTrackee fournit une API REST (voir `documentation `__)" +" dont la plupart des points d'accès nécessitent une " +"authentification/autorisation." #: ../source/oauth.rst:8 msgid "" @@ -5036,6 +5529,10 @@ msgid "" "`OAuth2 `_ client can be " "created in user settings ('apps' tab)." msgstr "" +"Pour permettre à une application tierce d'interagir avec les points " +"d'accès de l'API, un client `OAuth2 " +"`_ peut être créé dans les" +" paramètres de l'utilisateur (onglet 'apps')." #: ../source/oauth.rst:13 msgid "" @@ -5043,6 +5540,9 @@ msgid "" "party applications (`documentation `__), only by " "FitTrackee client (first-party application)." msgstr "" +"Les points d'entrée OAuth2 nécessitant une authentification ne sont pas " +"accessibles par des applications tierces (`documentation " +"`__), seulement par l'application web FitTrackee)." #: ../source/oauth.rst:17 msgid "" @@ -5053,130 +5553,170 @@ msgid "" "client ID and secret must be sent in the POST body. It is recommended to " "use PKCE to provide a better security." msgstr "" +"Il ne prend en charge que le flux avec un `Code d'Autorisation " +"`_ (avec " +"prise en charge de `PKCE " +"`_). Il permet d'échanger " +"un code d'autorisation contre un jeton d'accès. L'identifiant et le " +"secret du client doivent être envoyés dans le corps du message (méthode " +"\"POST\"). Il est recommandé d'utiliser PKCE pour assurer une meilleure " +"sécurité." #: ../source/oauth.rst:24 msgid "Scopes" -msgstr "" +msgstr "Scopes" #: ../source/oauth.rst:26 msgid "The following scopes are available:" -msgstr "" +msgstr "Les scopes suivants sont disponibles :" #: ../source/oauth.rst:28 msgid "" "``application:write``: grants write access to application configuration " "(only for users with administration rights)," msgstr "" +"``application:write`` : permet d'accéder en écriture à la configuration " +"de l'application (uniquement pour les utilisateurs ayant des droits " +"d'administration), " #: ../source/oauth.rst:29 msgid "``profile:read``: grants read access to auth endpoints," msgstr "" +"``profile:read`` : accorde un accès en lecture aux points d'entrée " +"d'authentification/profil utilisateur," #: ../source/oauth.rst:30 msgid "``profile:write``: grants write access to auth endpoints," msgstr "" +"``profile:write`` : accorde l'accès en écriture aux points d'entrée " +"d'authentification/profil utilisateur," #: ../source/oauth.rst:31 msgid "``users:read``: grants read access to users endpoints," msgstr "" +"``users:read`` : accorde un accès en lecture aux points d'entrée des " +"utilisateurs," #: ../source/oauth.rst:32 msgid "``users:write``: grants write access to users endpoints," msgstr "" +"``users:write`` : accorde un accès en écriture aux points d'entrée des " +"utilisateurs," #: ../source/oauth.rst:33 msgid "``workouts:read``: grants read access to workouts-related endpoints," msgstr "" +"``workouts:read``: accorde un accès en lecture aux points d'entrée " +"associés aux séances," #: ../source/oauth.rst:34 msgid "``workouts:write``: grants write access to workouts-related endpoints." msgstr "" +"``workouts:write``: accorde un accès en écriture aux points d'entrée " +"associés aux séances," #: ../source/oauth.rst:38 msgid "Flow" -msgstr "" +msgstr "Flux" #: ../source/oauth.rst:40 msgid "" "The user creates an App (client) on FitTrackee for a third-party " "application." msgstr "" +"L'utilisateur crée une application (client) sur FitTrackee pour une " +"application tierce." #: ../source/oauth.rst msgid "OAuth2 client creation on FitTrackee" -msgstr "" +msgstr "Création d'un client OAuth2 sur FitTrackee" #: ../source/oauth.rst msgid "After registration, the client id and secret are shown." msgstr "" +"Après l'enregistrement, l'identifiant et le secret du client sont " +"affichés." #: ../source/oauth.rst msgid "They must be stored in the 3rd-party application by the user." -msgstr "" +msgstr "Ils doivent être stockés dans l'application tierce par l'utilisateur." #: ../source/oauth.rst msgid "" "The 3rd-party app needs to redirect to FitTrackee, in order for the user " "to authorize the 3rd-party app to access user data on FitTrackee." msgstr "" +"L'application tierce doit rediriger vers FitTrackee, afin que " +"l'utilisateur puisse autoriser l'application tierce à accéder aux données" +" de l'utilisateur sur FitTrackee." #: ../source/oauth.rst msgid "App authorization on FitTrackee" -msgstr "" +msgstr "Autorisation de l'application sur FitTrackee" #: ../source/oauth.rst msgid "" "The authorization URL is " "``https:///profile/apps/authorize``." msgstr "" +"L'URL pour l'autorisation est " +"``https:///profile/apps/authorize``." #: ../source/oauth.rst msgid "The required parameters are:" -msgstr "" +msgstr "Les paramètres requis sont les suivants :" #: ../source/oauth.rst:56 msgid "``client_id``: the client id displayed after registration" -msgstr "" +msgstr "``client_id`` : l'identifiant du client affiché après l'enregistrement" #: ../source/oauth.rst:57 msgid "" "``response_type``: ``code``, since FitTrackee only supports " "Authorization Code flow." msgstr "" +"``response_type`` : ``code``, FitTrackee ne supportant que le flux de " +"code d'autorisation." #: ../source/oauth.rst:58 msgid "``scope``: scopes separated with space." -msgstr "" +msgstr "``scope`` : scopes séparés par des espaces." #: ../source/oauth.rst msgid "and optional parameters:" -msgstr "" +msgstr "et des paramètres facultatifs :" #: ../source/oauth.rst:62 msgid "``state``: unique value to prevent cross-site request forgery" msgstr "" +"``state`` : valeur unique pour empêcher la falsification des requêtes " +"entre les sites" #: ../source/oauth.rst msgid "For PKCE, the following parameters are mandatory:" -msgstr "" +msgstr "Pour PKCE, les paramètres suivants sont obligatoires :" #: ../source/oauth.rst:66 msgid "``code_challenge``: string generated from a code verifier" msgstr "" +"``code_challenge`` : chaîne de caractères générée par un vérificateur de " +"code" #: ../source/oauth.rst:67 msgid "" "``code_challenge_method``: method used to create challenge, for instance " "\"S256\"" msgstr "" +"``code_challenge_method`` : méthode utilisée pour créer le challenge, par" +" exemple \"S256\"" #: ../source/oauth.rst msgid "Example for PKCE:" -msgstr "" +msgstr "Exemple pour PKCE:" #: ../source/oauth.rst msgid "``https:///profile/apps/authorize?response_type=code&client_id=&scope=profile%3Aread+workouts%3Awrite&state=&code_challenge=&code_challenge_method=S256``" -msgstr "" +msgstr "``https:///profile/apps/authorize?response_type=code&client_id=&scope=profile%3Aread+workouts%3Awrite&state=&code_challenge=&code_challenge_method=S256``" #: ../source/oauth.rst msgid "" @@ -5187,38 +5727,48 @@ msgid "" "`_)." msgstr "" +"Après l'autorisation, FitTrackee redirige vers l'application tierce, de " +"sorte que l'application tierce puisse obtenir le code d'autorisation à " +"partir de l'URL de redirection et récupère ensuite un jeton d'accès avec " +"l'identifiant et le secret du client (point d'accès `/api/oauth/token " +"`_)." #: ../source/oauth.rst msgid "Example of a redirect URL:" -msgstr "" +msgstr "Exemple d'URL de redirection :" #: ../source/oauth.rst msgid "``https://example.com/callback?code=&state=``" -msgstr "" +msgstr "``https://example.com/callback?code=&state=``" #: ../source/oauth.rst:79 msgid "" "OAuth2 support is implemented with `Authlib " "`_ library." msgstr "" +"La prise en charge d'OAuth2 est mise en œuvre avec la bibliothèque " +"`Authlib `_ bibliothèque." #: ../source/oauth.rst msgid "" "If FitTrackee is running behind a proxy, the ``X-Forwarded-Proto`` header" " must be set." msgstr "" +"Si FitTrackee fonctionne derrière un proxy, l'en-tête ``X-Forwarded-" +"Proto`` doit être défini." #: ../source/oauth.rst msgid "For instance for ``nginx``:" -msgstr "" +msgstr "Par exemple pour ``nginx`` :" #: ../source/oauth.rst:90 msgid "Resources" -msgstr "" +msgstr "Ressources" #: ../source/oauth.rst:92 msgid "Some resources about OAuth 2.0:" -msgstr "" +msgstr "Quelques ressources sur OAuth 2.0 :" #: ../source/oauth.rst:94 msgid "" @@ -5227,6 +5777,10 @@ msgid "" "PKCE `_)" msgstr "" +"`OAuth 2.0 Simplified `_ par `Aaron Parecki " +"`_ (exemple pour le flux avec le `code " +"d'authorisation et PKCE `_)" #: ../source/oauth.rst:95 msgid "" @@ -5234,6 +5788,9 @@ msgid "" "oauthlib.readthedocs.io/en/latest/examples/real_world_example.html>`_ " "with Requests-OAuthlib (python)" msgstr "" +"`Web App Example of OAuth 2 web application flow `_ " +"with Requests-OAuthlib (python)" #: ../source/oauth.rst:96 msgid "" @@ -5241,40 +5798,49 @@ msgid "" "`_" " with Authlib (python)" msgstr "" +"`OAuth 2 Session " +"`_" +" with Authlib (python)" #: ../source/oauth.rst:97 msgid "" "`Minimal example of an application interacting with FitTrackee " "`_ (python)" msgstr "" +"`Exemple d'une application minimale interagissant avec FitTrackee " +"`_ (python)" #: ../source/third_party_tools.rst:2 msgid "Third-party tools" -msgstr "" +msgstr "Outils tiers" #: ../source/third_party_tools.rst:4 msgid "Thanks to the contributors, the following tools are available:" -msgstr "" +msgstr "Grâce aux contributeurs, les outils suivants sont disponibles :" #: ../source/third_party_tools.rst:6 msgid "" "`strava-to-fittrackee `_ " "(import workouts from a Strava account)" msgstr "" +"`strava-to-fittrackee `_ " +"(importer des séances à partir d'un compte Strava)" #: ../source/third_party_tools.rst:7 msgid "" "`FitTrackee Uploader `_ (upload .gpx and .fit files)" msgstr "" +"`FitTrackee Uploader `_ (ajouter des fichiers .gpx et .fit)" #: ../source/troubleshooting/administrator.rst:2 msgid "Administrator" -msgstr "" +msgstr "Administrateur" #: ../source/troubleshooting/administrator.rst:6 msgid "`FitTrackee fails to start`" -msgstr "" +msgstr "`FitTrackee ne démarre pas`" #: ../source/troubleshooting/administrator.rst:8 msgid "" @@ -5282,12 +5848,18 @@ msgid "" "#envvar-DATABASE_URL>`__ if the following error is displayed in " "**gunicorn** logs:" msgstr "" +"Vérifiez l'URL de la base de données dans les `variables d'environnement " +"<../installation.html#envvar-DATABASE_URL>`__ si l'erreur suivante est " +"affichée dans les logs de **gunicorn** :" #: ../source/troubleshooting/administrator.rst:14 +#, fuzzy msgid "" "It must start with ``postgresql://`` (engine URLs starting with " "``postgres://`` are no longer supported)." msgstr "" +"Il doit commencer par `postgresql://` (les URL commençant par `postgres://` " +"ne sont plus supportées)." #: ../source/troubleshooting/administrator.rst:16 msgid "" @@ -5295,26 +5867,36 @@ msgid "" "#envvar-EMAIL_URL>`__ if the following error is displayed in **gunicorn**" " logs:" msgstr "" +"Vérifiez l'URL du serveur SMTP dans les `environment variables " +"<../installation.html#envvar-EMAIL_URL>`__ si l'erreur suivante est " +"affichée dans les logs de **gunicorn** :" #: ../source/troubleshooting/administrator.rst:22 msgid "" "A valid ``EMAIL_URL`` must be provided (see `emails " "<../installation.html#emails>`__)." msgstr "" +"Une valeur valide pour la variable ``EMAIL_URL`` doit être fourni (voir `courriels " +"<../installation.html#emails>`__)." #: ../source/troubleshooting/administrator.rst:26 msgid "`Map images are not displayed but map is shown in Workout detail`" msgstr "" +"`Les images de la carte ne sont pas affichées mais la carte est affichée " +"dans le détail de la séance`" #: ../source/troubleshooting/administrator.rst:28 msgid "" "Check the path in `environment variables <../installation.html#envvar-" "UPLOAD_FOLDER>`__. ``UPLOAD_FOLDER`` must be set with an absolute path." msgstr "" +"Vérifier le chemin dans les `variables d'environnement " +"<../installation.html#envvar-UPLOAD_FOLDER>`__. ``UPLOAD_FOLDER`` doit " +"être défini avec un chemin absolu." #: ../source/troubleshooting/administrator.rst:32 msgid "`Failed to upload or download files`" -msgstr "" +msgstr "`Échec du chargement ou du téléchargement de fichiers`" #: ../source/troubleshooting/administrator.rst:34 msgid "" @@ -5322,6 +5904,10 @@ msgid "" " handle larger files (see **nginx** `documentation " "`_)." msgstr "" +"Vérifiez ``client_max_body_size`` dans la configuration **nginx**. " +"Augmentez la valeur pour gérer des fichiers plus volumineux (voir la " +"`documentation de **nginx** " +"`_)." #: ../source/troubleshooting/administrator.rst:36 msgid "" @@ -5330,8 +5916,12 @@ msgid "" "the following error is displayed in gunicorn log: ``[CRITICAL] WORKER " "TIMEOUT``." msgstr "" +"Augmenter le délai d'attente (timeout) **gunicorn** " +"`__ si " +"l'erreur suivante est affichée dans le journal de gunicorn : ``[CRITICAL]" +" WORKER TIMEOUT``." #: ../source/troubleshooting/index.rst:2 msgid "Troubleshooting" -msgstr "" +msgstr "Dépannage" diff --git a/fittrackee/application/app_config.py b/fittrackee/application/app_config.py index 0d037138..90386e41 100644 --- a/fittrackee/application/app_config.py +++ b/fittrackee/application/app_config.py @@ -58,8 +58,8 @@ def get_application_config() -> Union[Dict, HttpResponse]: "status": "success" } - :statuscode 200: success - :statuscode 500: error on getting configuration + :statuscode 200: ``success`` + :statuscode 500: ``error on getting configuration`` """ try: @@ -125,15 +125,15 @@ def update_application_config(auth_user: User) -> Union[Dict, HttpResponse]: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success - :statuscode 400: invalid payload + :statuscode 200: ``success`` + :statuscode 400: ``invalid payload`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - - valid email must be provided for admin contact - :statuscode 403: you do not have permissions - :statuscode 500: error when updating configuration + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + - ``valid email must be provided for admin contact`` + :statuscode 403: ``you do not have permissions`` + :statuscode 500: ``error when updating configuration`` """ config_data = request.get_json() if not config_data: @@ -209,6 +209,6 @@ def health_check() -> Union[Dict, HttpResponse]: "status": "success" } - :statuscode 200: success + :statuscode 200: ``success`` """ return {'status': 'success', 'message': 'pong!'} diff --git a/fittrackee/oauth2/routes.py b/fittrackee/oauth2/routes.py index 1176b4ff..76d5a6f6 100644 --- a/fittrackee/oauth2/routes.py +++ b/fittrackee/oauth2/routes.py @@ -47,14 +47,14 @@ def get_clients(auth_user: User) -> Dict: **Example request**: - - without parameters + - without parameters: .. sourcecode:: http GET /api/oauth/apps HTTP/1.1 Content-Type: application/json - - with 'page' parameter + - with 'page' parameter: .. sourcecode:: http @@ -99,11 +99,11 @@ def get_clients(auth_user: User) -> Dict: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` """ params = request.args.copy() page = int(params.get('page', 1)) @@ -177,17 +177,16 @@ def create_client(auth_user: User) -> Union[HttpResponse, Tuple[Dict, int]]: :json string client_uri: client URL :json array redirect_uri: list of client redirect URLs (string) :json string scope: client scopes - :json string client_description: client description (`OPTIONAL`) + :json string client_description: client description (``OPTIONAL``) :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success - :statuscode 400: - - invalid payload + :statuscode 200: ``success`` + :statuscode 400: ``invalid payload`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` """ client_metadata = request.get_json() if not client_metadata: @@ -268,7 +267,7 @@ def get_client_by_client_id( **Example responses**: - - success + - success: .. sourcecode:: http @@ -293,7 +292,7 @@ def get_client_by_client_id( "status": "success" } - - not found + - not found: .. sourcecode:: http @@ -309,12 +308,12 @@ def get_client_by_client_id( :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: OAuth2 client not found + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``OAuth2 client not found`` """ return get_client( auth_user, client_id=None, client_client_id=client_client_id @@ -341,7 +340,7 @@ def get_client_by_id( **Example responses**: - - success + - success: .. sourcecode:: http @@ -366,7 +365,7 @@ def get_client_by_id( "status": "success" } - - not found + - not found: .. sourcecode:: http @@ -382,12 +381,12 @@ def get_client_by_id( :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: OAuth2 client not found + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``OAuth2 client not found`` """ return get_client(auth_user, client_id=client_id, client_client_id=None) @@ -423,10 +422,10 @@ def delete_client( :statuscode 204: OAuth2 client deleted :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: OAuth2 client not found + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``OAuth2 client not found`` """ client = OAuth2Client.query.filter_by( id=client_id, @@ -474,12 +473,12 @@ def revoke_client_tokens( :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: OAuth2 client not found + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``OAuth2 client not found`` """ client = OAuth2Client.query.filter_by(id=client_id).first() @@ -534,14 +533,14 @@ def authorize(auth_user: User) -> Union[HttpResponse, Dict]: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 400: - - invalid payload + - ``invalid payload`` - errors returned by Authlib library :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` """ data = request.form if ( @@ -603,13 +602,12 @@ def issue_token() -> Response: (for token issue with PKCE, not mandatory) :form string refresh_token: refresh token (for token refresh) - :statuscode 200: success - :statuscode 400: - - errors returned by Authlib library + :statuscode 200: ``success`` + :statuscode 400: errors returned by Authlib library :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` """ return authorization_server.create_token_response() @@ -639,12 +637,11 @@ def revoke_token() -> Response: :form string client_secret: OAuth2 client secret :form string token: access token to revoke - :statuscode 200: success - :statuscode 400: - - errors returned by Authlib library + :statuscode 200: ``success`` + :statuscode 400: errors returned by Authlib library :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` """ return authorization_server.create_endpoint_response('revocation') diff --git a/fittrackee/users/auth.py b/fittrackee/users/auth.py index 91c10243..f223ddbb 100644 --- a/fittrackee/users/auth.py +++ b/fittrackee/users/auth.py @@ -91,7 +91,7 @@ def register_user() -> Union[Tuple[Dict, int], HttpResponse]: **Example responses**: - - success + - success: .. sourcecode:: http @@ -102,7 +102,7 @@ def register_user() -> Union[Tuple[Dict, int], HttpResponse]: "status": "success" } - - error on registration + - error on registration: .. sourcecode:: http @@ -121,21 +121,18 @@ def register_user() -> Union[Tuple[Dict, int], HttpResponse]: fallback to 'en' (english)) : Union[Dict, HttpResponse]: **Example responses**: - - successful login + - successful login: .. sourcecode:: http @@ -232,10 +229,10 @@ def login_user() -> Union[Dict, HttpResponse]: : Union[Dict, HttpResponse]: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: user profile updated - :statuscode 400: - - invalid payload + :statuscode 200: ``user profile updated`` + :statuscode 400: ``invalid payload`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 500: error, please try again or contact the administrator + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 500: ``error, please try again or contact the administrator`` """ # get post data post_data = request.get_json() @@ -668,19 +664,19 @@ def update_user_account(auth_user: User) -> Union[Dict, HttpResponse]: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: user account updated + :statuscode 200: ``user account updated`` :statuscode 400: - - invalid payload - - email is missing - - current password is missing - - email: valid email must be provided - - password: 8 characters required + - ``invalid payload`` + - ``email is missing`` + - ``current password is missing`` + - ``email: valid email must be provided`` + - ``password: 8 characters required`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - - invalid credentials - :statuscode 500: error, please try again or contact the administrator + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + - ``invalid credentials`` + :statuscode 500: ``error, please try again or contact the administrator`` """ data = request.get_json() if not data: @@ -901,15 +897,15 @@ def edit_user_preferences(auth_user: User) -> Union[Dict, HttpResponse]: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: user preferences updated + :statuscode 200: ``user preferences updated`` :statuscode 400: - - invalid payload - - password: password and password confirmation don't match + - ``invalid payload`` + - ``password: password and password confirmation don't match`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 500: error, please try again or contact the administrator + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 500: ``error, please try again or contact the administrator`` """ # get post data post_data = request.get_json() @@ -999,17 +995,16 @@ def edit_user_sport_preferences( :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: user preferences updated + :statuscode 200: ``user sport preferences updated`` :statuscode 400: - - invalid payload - - invalid hexadecimal color + - ``invalid payload`` + - ``invalid hexadecimal color`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: - - sport does not exist - :statuscode 500: error, please try again or contact the administrator + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``sport does not exist`` + :statuscode 500: ``error, please try again or contact the administrator`` """ post_data = request.get_json() if ( @@ -1094,12 +1089,11 @@ def reset_user_sport_preferences( :statuscode 204: user preferences deleted :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: - - sport does not exist - :statuscode 500: error, please try again or contact the administrator + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``sport does not exist`` + :statuscode 500: ``error, please try again or contact the administrator`` """ sport = Sport.query.filter_by(id=sport_id).first() if not sport: @@ -1151,18 +1145,18 @@ def edit_picture(auth_user: User) -> Union[Dict, HttpResponse]: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: user picture updated + :statuscode 200: ``user picture updated`` :statuscode 400: - - invalid payload - - no file part - - no selected file - - file extension not allowed + - ``invalid payload`` + - ``no file part`` + - ``no selected file`` + - ``file extension not allowed`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 413: error during picture update: file size exceeds 1.0MB - :statuscode 500: error during picture update + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 413: ``error during picture update: file size exceeds 1.0MB`` + :statuscode 500: ``error during picture update`` """ try: response_object = get_error_response_if_file_is_invalid( @@ -1235,10 +1229,10 @@ def del_picture(auth_user: User) -> Union[Tuple[Dict, int], HttpResponse]: :statuscode 204: picture deleted :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 500: error during picture deletion + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 500: ``error during picture deletion`` """ try: @@ -1282,9 +1276,9 @@ def request_password_reset() -> Union[Dict, HttpResponse]: : Union[Dict, HttpResponse]: : Union[Dict, HttpResponse]: : Union[Dict, HttpResponse]: : Union[Dict, HttpResponse]: : Union[Tuple[Dict, int], HttpResponse]: **Example responses**: - - successful logout + - successful logout: .. sourcecode:: http @@ -1615,7 +1609,7 @@ def logout_user(auth_user: User) -> Union[Tuple[Dict, int], HttpResponse]: "status": "success" } - - error on logout + - error on logout: .. sourcecode:: http @@ -1629,13 +1623,12 @@ def logout_user(auth_user: User) -> Union[Tuple[Dict, int], HttpResponse]: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: successfully logged out + :statuscode 200: ``successfully logged out`` :statuscode 401: - - provide a valid auth token - - The access token provided is expired, revoked, malformed, or invalid - for other reasons. - :statuscode 500: - - error on token blacklist + - ``provide a valid auth token`` + - ``The access token provided is expired, revoked, malformed, or invalid + for other reasons.`` + :statuscode 500: ``error on token blacklist`` """ auth_token = request.headers.get('Authorization', '').split(' ')[1] @@ -1682,14 +1675,13 @@ def accept_privacy_policy(auth_user: User) -> Union[Dict, HttpResponse]: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success - :statuscode 400: - - invalid payload + :statuscode 200: ``success`` + :statuscode 400: ``invalid payload`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 500: internal server error + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 500: ``error, please try again or contact the administrator`` """ post_data = request.get_json() if not post_data or not post_data.get('accepted_policy'): @@ -1738,15 +1730,15 @@ def request_user_data_export(auth_user: User) -> Union[Dict, HttpResponse]: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 400: - - ongoing request exists - - completed request already exists + - ``ongoing request exists`` + - ``completed request already exists`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 500: internal server error + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 500: ``error, please try again or contact the administrator`` """ existing_export_request = UserDataExport.query.filter_by( user_id=auth_user.id @@ -1800,7 +1792,7 @@ def get_user_data_export(auth_user: User) -> Union[Dict, HttpResponse]: **Example response**: - - if a request exists + - if a request exists: .. sourcecode:: http @@ -1817,7 +1809,7 @@ def get_user_data_export(auth_user: User) -> Union[Dict, HttpResponse]: } } - - if no request + - if no request: .. sourcecode:: http @@ -1831,11 +1823,11 @@ def get_user_data_export(auth_user: User) -> Union[Dict, HttpResponse]: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` """ export_request = UserDataExport.query.filter_by( user_id=auth_user.id @@ -1874,12 +1866,12 @@ def download_data_export( :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: file not found + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``file not found`` """ export_request = UserDataExport.query.filter_by( user_id=auth_user.id diff --git a/fittrackee/users/users.py b/fittrackee/users/users.py index 73a02d07..d351d295 100644 --- a/fittrackee/users/users.py +++ b/fittrackee/users/users.py @@ -47,14 +47,14 @@ def get_users(auth_user: User) -> Dict: **Example request**: - - without parameters + - without parameters: .. sourcecode:: http GET /api/users HTTP/1.1 Content-Type: application/json - - with some query parameters + - with some query parameters: .. sourcecode:: http @@ -180,11 +180,11 @@ def get_users(auth_user: User) -> Dict: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` """ params = request.args.copy() @@ -325,13 +325,13 @@ def get_single_user( :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` :statuscode 404: - - user does not exist + - ``user does not exist`` """ if user_name != auth_user.username and not auth_user.admin: return ForbiddenErrorResponse() @@ -369,10 +369,10 @@ def get_picture(user_name: str) -> Any: :param integer user_name: user name - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 404: - - user does not exist - - No picture. + - ``user does not exist`` + - ``No picture.`` """ try: @@ -504,19 +504,18 @@ def update_user(auth_user: User, user_name: str) -> Union[Dict, HttpResponse]: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 400: - - invalid payload - - valid email must be provided - - new email must be different than curent email + - ``invalid payload`` + - ``valid email must be provided`` + - ``new email must be different than curent email`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 403: you do not have permissions - :statuscode 404: - - user does not exist - :statuscode 500: + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 403: ``you do not have permissions`` + :statuscode 404: ``user does not exist`` + :statuscode 500: ``error, please try again or contact the administrator`` """ user_data = request.get_json() if not user_data: @@ -632,15 +631,14 @@ def delete_user( :statuscode 204: user account deleted :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` :statuscode 403: - - you do not have permissions - - you can not delete your account, no other user has admin rights - :statuscode 404: - - user does not exist - :statuscode 500: error, please try again or contact the administrator + - ``you do not have permissions`` + - ``you can not delete your account, no other user has admin rights`` + :statuscode 404: ``user does not exist`` + :statuscode 500: ``error, please try again or contact the administrator`` """ try: diff --git a/fittrackee/workouts/records.py b/fittrackee/workouts/records.py index 9b0b2a2d..81d92ebd 100644 --- a/fittrackee/workouts/records.py +++ b/fittrackee/workouts/records.py @@ -110,11 +110,11 @@ def get_records(auth_user: User) -> Dict: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` """ records = ( diff --git a/fittrackee/workouts/sports.py b/fittrackee/workouts/sports.py index 63443b74..91ef6e96 100644 --- a/fittrackee/workouts/sports.py +++ b/fittrackee/workouts/sports.py @@ -35,7 +35,7 @@ def get_sports(auth_user: User) -> Dict: **Example response**: - - for non admin user : + - for non admin user: .. sourcecode:: http @@ -98,7 +98,7 @@ def get_sports(auth_user: User) -> Dict: "status": "success" } - - for admin user : + - for admin user: .. sourcecode:: http @@ -169,11 +169,11 @@ def get_sports(auth_user: User) -> Dict: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` """ sports = Sport.query.order_by(Sport.id).all() @@ -213,7 +213,7 @@ def get_sport(auth_user: User, sport_id: int) -> Union[Dict, HttpResponse]: **Example response**: - - success for non admin user : + - success for non admin user: .. sourcecode:: http @@ -236,7 +236,7 @@ def get_sport(auth_user: User, sport_id: int) -> Union[Dict, HttpResponse]: "status": "success" } - - success for admin user : + - success for admin user: .. sourcecode:: http @@ -260,7 +260,7 @@ def get_sport(auth_user: User, sport_id: int) -> Union[Dict, HttpResponse]: "status": "success" } - - sport not found + - sport not found: .. sourcecode:: http @@ -278,12 +278,12 @@ def get_sport(auth_user: User, sport_id: int) -> Union[Dict, HttpResponse]: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: sport not found + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``sport not found`` """ sport = Sport.query.filter_by(id=sport_id).first() @@ -326,7 +326,7 @@ def update_sport(auth_user: User, sport_id: int) -> Union[Dict, HttpResponse]: **Example responses**: - - success + - success: .. sourcecode:: http @@ -350,7 +350,7 @@ def update_sport(auth_user: User, sport_id: int) -> Union[Dict, HttpResponse]: "status": "success" } - - sport not found + - sport not found: .. sourcecode:: http @@ -371,14 +371,14 @@ def update_sport(auth_user: User, sport_id: int) -> Union[Dict, HttpResponse]: :reqheader Authorization: OAuth 2.0 Bearer Token :statuscode 200: sport updated - :statuscode 400: invalid payload + :statuscode 400: ``invalid payload`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 403: you do not have permissions - :statuscode 404: sport not found - :statuscode 500: + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 403: ``you do not have permissions`` + :statuscode 404: ``sport not found`` + :statuscode 500: ``error, please try again or contact the administrator`` """ sport_data = request.get_json() diff --git a/fittrackee/workouts/stats.py b/fittrackee/workouts/stats.py index 837b99fc..576eaff5 100644 --- a/fittrackee/workouts/stats.py +++ b/fittrackee/workouts/stats.py @@ -185,13 +185,13 @@ def get_workouts_by_time( **Example requests**: - - without parameters + - without parameters: .. sourcecode:: http GET /api/stats/admin/by_time HTTP/1.1 - - with parameters + - with parameters: .. sourcecode:: http @@ -200,7 +200,7 @@ def get_workouts_by_time( **Example responses**: - - success + - success: .. sourcecode:: http @@ -243,7 +243,7 @@ def get_workouts_by_time( "status": "success" } - - no workouts + - no workouts: .. sourcecode:: http @@ -270,13 +270,12 @@ def get_workouts_by_time( :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: - - user does not exist + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``user does not exist`` """ return get_workouts(user_name, 'by_time') @@ -294,13 +293,13 @@ def get_workouts_by_sport( **Example requests**: - - without parameters (get stats for all sports with workouts) + - without parameters (get stats for all sports with workouts): .. sourcecode:: http GET /api/stats/admin/by_sport HTTP/1.1 - - with sport id + - with sport id: .. sourcecode:: http @@ -308,7 +307,7 @@ def get_workouts_by_sport( **Example responses**: - - success + - success: .. sourcecode:: http @@ -347,7 +346,7 @@ def get_workouts_by_sport( "status": "success" } - - no workouts + - no workouts: .. sourcecode:: http @@ -367,14 +366,14 @@ def get_workouts_by_sport( :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` :statuscode 404: - - user does not exist - - sport does not exist + - ``user does not exist`` + - ``sport does not exist`` """ return get_workouts(user_name, 'by_sport') @@ -414,12 +413,12 @@ def get_application_stats(auth_user: User) -> Dict: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 403: you do not have permissions + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 403: ``you do not have permissions`` """ nb_workouts = Workout.query.filter().count() diff --git a/fittrackee/workouts/workouts.py b/fittrackee/workouts/workouts.py index 7305c7e3..4002be74 100644 --- a/fittrackee/workouts/workouts.py +++ b/fittrackee/workouts/workouts.py @@ -65,13 +65,13 @@ def get_workouts(auth_user: User) -> Union[Dict, HttpResponse]: **Example requests**: - - without parameters + - without parameters: .. sourcecode:: http GET /api/workouts/ HTTP/1.1 - - with some query parameters + - with some query parameters: .. sourcecode:: http @@ -79,7 +79,7 @@ def get_workouts(auth_user: User) -> Union[Dict, HttpResponse]: **Example responses**: - - returning at least one workout + - returning at least one workout: .. sourcecode:: http @@ -187,7 +187,7 @@ def get_workouts(auth_user: User) -> Union[Dict, HttpResponse]: :query integer per_page: number of workouts per page (default: 5, max: 100) :query integer sport_id: sport id - :quert string title: any part (or all) of the workout title; + :query string title: any part (or all) of the workout title; title matching is case-insensitive :query string from: start date (format: ``%Y-%m-%d``) :query string to: end date (format: ``%Y-%m-%d``) @@ -206,12 +206,12 @@ def get_workouts(auth_user: User) -> Union[Dict, HttpResponse]: :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 500: + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 500: ``error, please try again or contact the administrator`` """ try: @@ -315,7 +315,7 @@ def get_workout( **Example responses**: - - success + - success: .. sourcecode:: http @@ -377,13 +377,13 @@ def get_workout( :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 403: you do not have permissions - :statuscode 404: workout not found + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 403: ``you do not have permissions`` + :statuscode 404: ``workout not found`` """ workout_uuid = decode_short_id(workout_short_id) @@ -499,15 +499,15 @@ def get_workout_gpx( :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` :statuscode 404: - - workout not found - - no gpx file for this workout - :statuscode 500: + - ``workout not found`` + - ``no gpx file for this workout`` + :statuscode 500: ``error, please try again or contact the administrator`` """ return get_workout_data(auth_user, workout_short_id, 'gpx') @@ -570,15 +570,15 @@ def get_workout_chart_data( :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` :statuscode 404: - - workout not found - - no gpx file for this workout - :statuscode 500: + - ``workout not found`` + - ``no gpx file for this workout`` + :statuscode 500: ``error, please try again or contact the administrator`` """ return get_workout_data(auth_user, workout_short_id, 'chart_data') @@ -624,14 +624,14 @@ def get_segment_gpx( :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success - :statuscode 400: no gpx file for this workout + :statuscode 200: ``success`` + :statuscode 400: ``no gpx file for this workout`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: workout not found - :statuscode 500: + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``workout not found`` + :statuscode 500: ``error, please try again or contact the administrator`` """ return get_workout_data(auth_user, workout_short_id, 'gpx', segment_id) @@ -647,7 +647,7 @@ def get_segment_chart_data( auth_user: User, workout_short_id: str, segment_id: int ) -> Union[Dict, HttpResponse]: """ - Get chart data from a workout gpx file, to display it with Recharts + Get chart data from a workout gpx file, to display it with Chart.js. **Scope**: ``workouts:read`` @@ -697,14 +697,14 @@ def get_segment_chart_data( :reqheader Authorization: OAuth 2.0 Bearer Token - :statuscode 200: success - :statuscode 400: no gpx file for this workout + :statuscode 200: ``success`` + :statuscode 400: ``no gpx file for this workout`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: workout not found - :statuscode 500: + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``workout not found`` + :statuscode 500: ``error, please try again or contact the administrator`` """ return get_workout_data( @@ -739,14 +739,14 @@ def download_workout_gpx( :param string workout_short_id: workout short id - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` :statuscode 404: - - workout not found - - no gpx file for workout + - ``workout not found`` + - ``no gpx file for workout`` """ workout_uuid = decode_short_id(workout_short_id) workout = Workout.query.filter_by( @@ -794,13 +794,13 @@ def get_map(map_id: int) -> Union[HttpResponse, Response]: :param string map_id: workout map id - :statuscode 200: success + :statuscode 200: ``success`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: map does not exist - :statuscode 500: + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``map does not exist`` + :statuscode 500: ``error, please try again or contact the administrator`` """ try: @@ -967,16 +967,16 @@ def post_workout(auth_user: User) -> Union[Tuple[Dict, int], HttpResponse]: :statuscode 201: workout created :statuscode 400: - - invalid payload - - no file part - - no selected file - - file extension not allowed + - ``invalid payload`` + - ``no file part`` + - ``no selected file`` + - ``file extension not allowed`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 413: error during picture update: file size exceeds 1.0MB - :statuscode 500: + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 413: ``error during picture update: file size exceeds 1.0MB`` + :statuscode 500: ``error, please try again or contact the administrator`` """ try: @@ -1151,12 +1151,12 @@ def post_workout_no_gpx( :reqheader Authorization: OAuth 2.0 Bearer Token :statuscode 201: workout created - :statuscode 400: invalid payload + :statuscode 400: ``invalid payload`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 500: + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 500: ``error, please try again or contact the administrator`` """ workout_data = request.get_json() @@ -1325,13 +1325,13 @@ def update_workout( :reqheader Authorization: OAuth 2.0 Bearer Token :statuscode 200: workout updated - :statuscode 400: invalid payload + :statuscode 400: ``invalid payload`` :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: workout not found - :statuscode 500: + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``workout not found`` + :statuscode 500: ``error, please try again or contact the administrator`` """ workout_data = request.get_json() @@ -1418,11 +1418,11 @@ def delete_workout( :statuscode 204: workout deleted :statuscode 401: - - provide a valid auth token - - signature expired, please log in again - - invalid token, please log in again - :statuscode 404: workout not found - :statuscode 500: error, please try again or contact the administrator + - ``provide a valid auth token`` + - ``signature expired, please log in again`` + - ``invalid token, please log in again`` + :statuscode 404: ``workout not found`` + :statuscode 500: ``error, please try again or contact the administrator`` """