diff options
| -rw-r--r-- | fietsboek/locale/de/LC_MESSAGES/messages.mo | bin | 15377 -> 15508 bytes | |||
| -rw-r--r-- | fietsboek/locale/de/LC_MESSAGES/messages.po | 152 | ||||
| -rw-r--r-- | fietsboek/locale/en/LC_MESSAGES/messages.mo | bin | 14369 -> 14483 bytes | |||
| -rw-r--r-- | fietsboek/locale/en/LC_MESSAGES/messages.po | 152 | ||||
| -rw-r--r-- | fietsboek/locale/fietslog.pot | 156 | ||||
| -rw-r--r-- | fietsboek/templates/profile.jinja2 | 8 | ||||
| -rw-r--r-- | fietsboek/views/profile.py | 17 | 
7 files changed, 267 insertions, 218 deletions
diff --git a/fietsboek/locale/de/LC_MESSAGES/messages.mo b/fietsboek/locale/de/LC_MESSAGES/messages.mo Binary files differindex 3c020df..aeb978d 100644 --- a/fietsboek/locale/de/LC_MESSAGES/messages.mo +++ b/fietsboek/locale/de/LC_MESSAGES/messages.mo diff --git a/fietsboek/locale/de/LC_MESSAGES/messages.po b/fietsboek/locale/de/LC_MESSAGES/messages.po index 24e1cb5..934ac94 100644 --- a/fietsboek/locale/de/LC_MESSAGES/messages.po +++ b/fietsboek/locale/de/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid ""  msgstr ""  "Project-Id-Version: PROJECT VERSION\n"  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-11-10 22:23+0100\n" +"POT-Creation-Date: 2024-02-02 23:44+0100\n"  "PO-Revision-Date: 2022-07-02 17:35+0200\n"  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"  "Language: de\n" @@ -18,54 +18,54 @@ msgstr ""  "Content-Transfer-Encoding: 8bit\n"  "Generated-By: Babel 2.12.1\n" -#: fietsboek/actions.py:257 +#: fietsboek/actions.py:267  msgid "email.verify_mail.subject"  msgstr "Fietsboek Konto Bestätigung" -#: fietsboek/actions.py:260 +#: fietsboek/actions.py:270  msgid "email.verify.text"  msgstr ""  "Um Dein Fietsboek-Konto zu bestätigen, nutze diesen Link: {}\n"  "\n"  "Falls Du kein Konto angelegt hast, ignoriere diese E-Mail." -#: fietsboek/util.py:306 +#: fietsboek/util.py:307  msgid "password_constraint.mismatch"  msgstr "Passwörter stimmen nicht überein" -#: fietsboek/util.py:308 +#: fietsboek/util.py:309  msgid "password_constraint.length"  msgstr "Passwort zu kurz" -#: fietsboek/models/track.py:602 +#: fietsboek/models/track.py:603  msgid "tooltip.table.length"  msgstr "Länge" -#: fietsboek/models/track.py:603 +#: fietsboek/models/track.py:604  msgid "tooltip.table.people"  msgstr "# Personen" -#: fietsboek/models/track.py:604 +#: fietsboek/models/track.py:605  msgid "tooltip.table.uphill"  msgstr "Bergauf" -#: fietsboek/models/track.py:605 +#: fietsboek/models/track.py:606  msgid "tooltip.table.downhill"  msgstr "Bergab" -#: fietsboek/models/track.py:606 +#: fietsboek/models/track.py:607  msgid "tooltip.table.moving_time"  msgstr "Fahrzeit" -#: fietsboek/models/track.py:607 +#: fietsboek/models/track.py:608  msgid "tooltip.table.stopped_time"  msgstr "Haltezeit" -#: fietsboek/models/track.py:609 +#: fietsboek/models/track.py:610  msgid "tooltip.table.max_speed"  msgstr "Maximalgeschwindigkeit" -#: fietsboek/models/track.py:613 +#: fietsboek/models/track.py:614  msgid "tooltip.table.avg_speed"  msgstr "Durchschnittsgeschwindigkeit" @@ -462,36 +462,36 @@ msgstr "Markierte Personen"  msgid "page.track.form.add_friend"  msgstr "Freund suchen" -#: fietsboek/templates/edit_form.jinja2:90 +#: fietsboek/templates/edit_form.jinja2:92  msgid "page.track.form.badges"  msgstr "Wappen" -#: fietsboek/templates/edit_form.jinja2:101 +#: fietsboek/templates/edit_form.jinja2:103  msgid "page.track.form.description"  msgstr "Beschreibung" -#: fietsboek/templates/edit_form.jinja2:108 -#: fietsboek/templates/edit_form.jinja2:129 +#: fietsboek/templates/edit_form.jinja2:110 +#: fietsboek/templates/edit_form.jinja2:131  msgid "page.track.form.remove_image"  msgstr "Bild entfernen" -#: fietsboek/templates/edit_form.jinja2:118 +#: fietsboek/templates/edit_form.jinja2:120  msgid "page.track.form.select_images"  msgstr "Bilder auswählen" -#: fietsboek/templates/edit_form.jinja2:122 +#: fietsboek/templates/edit_form.jinja2:124  msgid "page.track.form.image_uploads_disabled"  msgstr "Das Hochladen von Bildern ist auf diesem Fietsboek deaktiviert" -#: fietsboek/templates/edit_form.jinja2:140 +#: fietsboek/templates/edit_form.jinja2:142  msgid "page.track.form.image_description_modal"  msgstr "Bildbeschreibung" -#: fietsboek/templates/edit_form.jinja2:147 +#: fietsboek/templates/edit_form.jinja2:149  msgid "page.track.form.image_description_modal.save"  msgstr "Übernehmen" -#: fietsboek/templates/edit_form.jinja2:173 +#: fietsboek/templates/edit_form.jinja2:175  msgid "page.track.form.transformer.enable"  msgstr "Transformation anwenden" @@ -630,59 +630,67 @@ msgstr "Passwörter stimmen nicht überein"  msgid "page.password_reset.reset"  msgstr "Zurücksetzen" -#: fietsboek/templates/profile.jinja2:66 +#: fietsboek/templates/profile.jinja2:67  msgid "page.profile.length"  msgstr "Länge" -#: fietsboek/templates/profile.jinja2:70 +#: fietsboek/templates/profile.jinja2:71 +msgid "page.profile.avg_length" +msgstr "durchschnittliche Länge" + +#: fietsboek/templates/profile.jinja2:75  msgid "page.profile.uphill"  msgstr "Bergauf" -#: fietsboek/templates/profile.jinja2:74 +#: fietsboek/templates/profile.jinja2:79  msgid "page.profile.downhill"  msgstr "Bergab" -#: fietsboek/templates/profile.jinja2:78 +#: fietsboek/templates/profile.jinja2:83  msgid "page.profile.moving_time"  msgstr "Fahrzeit" -#: fietsboek/templates/profile.jinja2:82 +#: fietsboek/templates/profile.jinja2:87  msgid "page.profile.stopped_time"  msgstr "Haltezeit" -#: fietsboek/templates/profile.jinja2:86 +#: fietsboek/templates/profile.jinja2:91 +msgid "page.profile.avg_duration" +msgstr "durchschnittliche Dauer" + +#: fietsboek/templates/profile.jinja2:95  msgid "page.profile.max_speed"  msgstr "maximale Geschwindigkeit" -#: fietsboek/templates/profile.jinja2:90 +#: fietsboek/templates/profile.jinja2:99  msgid "page.profile.avg_speed"  msgstr "durchschnittliche Geschwindigkeit" -#: fietsboek/templates/profile.jinja2:94 +#: fietsboek/templates/profile.jinja2:103  msgid "page.profile.number_of_tracks"  msgstr "Anzahl der Strecken" -#: fietsboek/templates/profile.jinja2:100 +#: fietsboek/templates/profile.jinja2:109  msgid "page.profile.longest_distance_track"  msgstr "Weiteste Strecke" -#: fietsboek/templates/profile.jinja2:105 +#: fietsboek/templates/profile.jinja2:114  msgid "page.profile.shortest_distance_track"  msgstr "Kürzeste Strecke" -#: fietsboek/templates/profile.jinja2:110 +#: fietsboek/templates/profile.jinja2:119  msgid "page.profile.longest_duration_track"  msgstr "Am Längsten Dauernde Strecke" -#: fietsboek/templates/profile.jinja2:115 +#: fietsboek/templates/profile.jinja2:124  msgid "page.profile.shortest_duration_track"  msgstr "Am Kürzesten Dauernde Strecke" -#: fietsboek/templates/profile.jinja2:135 +#: fietsboek/templates/profile.jinja2:144  msgid "page.profile.heatmap"  msgstr "Heatmap" -#: fietsboek/templates/profile.jinja2:140 +#: fietsboek/templates/profile.jinja2:149  msgid "page.profile.tilehunt"  msgstr "Kacheljäger" @@ -792,87 +800,87 @@ msgstr "E-Mail-Adresse des Freundes"  msgid "page.my_profile.send_friend_request"  msgstr "Freundschaftsanfrage senden" -#: fietsboek/transformers/breaks.py:31 +#: fietsboek/transformers/breaks.py:32  msgid "transformers.remove-breaks.title"  msgstr "Pausen entfernen" -#: fietsboek/transformers/breaks.py:35 +#: fietsboek/transformers/breaks.py:36  msgid "transformers.remove-breaks.description"  msgstr "Diese Transformation entfernt längere Pausen aus der Aufnahme." -#: fietsboek/transformers/elevation.py:42 +#: fietsboek/transformers/elevation.py:43  msgid "transformers.fix-null-elevation.title"  msgstr "Nullhöhen beheben" -#: fietsboek/transformers/elevation.py:46 +#: fietsboek/transformers/elevation.py:47  msgid "transformers.fix-null-elevation.description"  msgstr ""  "Diese Transformation passt die Höhenangabe für Punkte an, bei denen die "  "Höhenangabe fehlt." -#: fietsboek/transformers/elevation.py:115 +#: fietsboek/transformers/elevation.py:116  msgid "transformers.fix-elevation-jumps"  msgstr "Höhensprünge beheben" -#: fietsboek/transformers/elevation.py:119 +#: fietsboek/transformers/elevation.py:120  msgid "transformers.fix-elevation-jumps.description"  msgstr ""  "Diese Transformation passt die Höhenangabe für Punkte an, bei denen die "  "Höhe sprunghaft steigt oder fällt." -#: fietsboek/views/account.py:53 +#: fietsboek/views/account.py:54  msgid "flash.invalid_name"  msgstr "Ungültiger Name" -#: fietsboek/views/account.py:58 +#: fietsboek/views/account.py:59  msgid "flash.invalid_email"  msgstr "Ungültige E-Mail-Adresse" -#: fietsboek/views/account.py:68 +#: fietsboek/views/account.py:69  msgid "flash.a_confirmation_link_has_been_sent"  msgstr "Ein Bestätigungslink wurde versandt" -#: fietsboek/views/admin.py:48 +#: fietsboek/views/admin.py:49  msgid "flash.badge_added"  msgstr "Wappen hinzugefügt" -#: fietsboek/views/admin.py:72 +#: fietsboek/views/admin.py:73  msgid "flash.badge_modified"  msgstr "Wappen bearbeitet" -#: fietsboek/views/admin.py:92 +#: fietsboek/views/admin.py:93  msgid "flash.badge_deleted"  msgstr "Wappen gelöscht" -#: fietsboek/views/default.py:115 +#: fietsboek/views/default.py:116  msgid "flash.invalid_credentials"  msgstr "Ungültige Nutzerdaten" -#: fietsboek/views/default.py:119 +#: fietsboek/views/default.py:120  msgid "flash.account_not_verified"  msgstr "Konto noch nicht bestätigt" -#: fietsboek/views/default.py:122 +#: fietsboek/views/default.py:123  msgid "flash.logged_in"  msgstr "Du bist nun angemeldet" -#: fietsboek/views/default.py:143 +#: fietsboek/views/default.py:144  msgid "flash.logged_out"  msgstr "Du bist nun abgemeldet" -#: fietsboek/views/default.py:173 +#: fietsboek/views/default.py:174  msgid "flash.reset_invalid_email"  msgstr "Ungültige E-Mail-Adresse angegeben" -#: fietsboek/views/default.py:178 +#: fietsboek/views/default.py:179  msgid "flash.password_token_generated"  msgstr "Ein Link zum Zurücksetzen des Passworts wurde versandt" -#: fietsboek/views/default.py:183 +#: fietsboek/views/default.py:184  msgid "page.password_reset.email.subject"  msgstr "Fietsboek Passwortzurücksetzung" -#: fietsboek/views/default.py:186 +#: fietsboek/views/default.py:187  msgid "page.password_reset.email.body"  msgstr ""  "Du kannst Dein Fietsboek-Passwort hier zurücksetzen: {}\n" @@ -880,67 +888,67 @@ msgstr ""  "Falls Du keine Passwortzurücksetzung beantragt hast, dann ignoriere diese"  " E-Mail." -#: fietsboek/views/default.py:225 +#: fietsboek/views/default.py:226  msgid "flash.resend_verification_email_fail"  msgstr "Ungültige E-Mail-Adresse angegeben" -#: fietsboek/views/default.py:230 +#: fietsboek/views/default.py:231  msgid "flash.verification_token_generated"  msgstr "Ein Link zur Bestätigung Deines Kontos wurde versandt" -#: fietsboek/views/default.py:250 +#: fietsboek/views/default.py:251  msgid "flash.token_expired"  msgstr "Der Link ist nicht mehr gültig" -#: fietsboek/views/default.py:256 +#: fietsboek/views/default.py:257  msgid "flash.email_verified"  msgstr "E-Mail-Adresse bestätigt" -#: fietsboek/views/default.py:270 +#: fietsboek/views/default.py:271  msgid "flash.password_updated"  msgstr "Passwort aktualisiert" -#: fietsboek/views/detail.py:161 +#: fietsboek/views/detail.py:162  msgid "flash.track_deleted"  msgstr "Strecke gelöscht" -#: fietsboek/views/upload.py:52 +#: fietsboek/views/upload.py:53  msgid "flash.no_file_selected"  msgstr "Keine Datei ausgewählt" -#: fietsboek/views/upload.py:65 +#: fietsboek/views/upload.py:66  msgid "flash.invalid_file"  msgstr "Ungültige GPX-Datei gesendet" -#: fietsboek/views/upload.py:191 +#: fietsboek/views/upload.py:192  msgid "flash.upload_success"  msgstr "Hochladen erfolgreich" -#: fietsboek/views/upload.py:210 +#: fietsboek/views/upload.py:211  msgid "flash.upload_cancelled"  msgstr "Hochladen abgebrochen" -#: fietsboek/views/user_data.py:66 +#: fietsboek/views/user_data.py:67  msgid "flash.personal_data_updated"  msgstr "Persönliche Daten wurden gespeichert" -#: fietsboek/views/user_data.py:85 +#: fietsboek/views/user_data.py:86  msgid "flash.friend_not_found"  msgstr "Das angegebene Konto wurde nicht gefunden" -#: fietsboek/views/user_data.py:91 +#: fietsboek/views/user_data.py:92  msgid "flash.friend_already_exists"  msgstr "Dieser Freund existiert bereits" -#: fietsboek/views/user_data.py:99 +#: fietsboek/views/user_data.py:100  msgid "flash.friend_added"  msgstr "Freund hinzugefügt" -#: fietsboek/views/user_data.py:109 +#: fietsboek/views/user_data.py:110  msgid "flash.friend_request_sent"  msgstr "Freundschaftsanfrage gesendet" -#: fietsboek/views/user_data.py:195 +#: fietsboek/views/user_data.py:196  msgid "flash.sessions_logged_out"  msgstr "Die Sitzungen wurden beendet. Melde Dich bitte erneut an, um fortzufahren." diff --git a/fietsboek/locale/en/LC_MESSAGES/messages.mo b/fietsboek/locale/en/LC_MESSAGES/messages.mo Binary files differindex c03929b..9f7170c 100644 --- a/fietsboek/locale/en/LC_MESSAGES/messages.mo +++ b/fietsboek/locale/en/LC_MESSAGES/messages.mo diff --git a/fietsboek/locale/en/LC_MESSAGES/messages.po b/fietsboek/locale/en/LC_MESSAGES/messages.po index f5a7874..645d059 100644 --- a/fietsboek/locale/en/LC_MESSAGES/messages.po +++ b/fietsboek/locale/en/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid ""  msgstr ""  "Project-Id-Version: PROJECT VERSION\n"  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-11-10 22:23+0100\n" +"POT-Creation-Date: 2024-02-02 23:44+0100\n"  "PO-Revision-Date: 2023-04-03 20:42+0200\n"  "Last-Translator: \n"  "Language: en\n" @@ -18,54 +18,54 @@ msgstr ""  "Content-Transfer-Encoding: 8bit\n"  "Generated-By: Babel 2.12.1\n" -#: fietsboek/actions.py:257 +#: fietsboek/actions.py:267  msgid "email.verify_mail.subject"  msgstr "Fietsboek Account Verification" -#: fietsboek/actions.py:260 +#: fietsboek/actions.py:270  msgid "email.verify.text"  msgstr ""  "To verify your Fietsboek account, please use this link: {}\n"  "\n"  "If you did not create an account, ignore this email." -#: fietsboek/util.py:306 +#: fietsboek/util.py:307  msgid "password_constraint.mismatch"  msgstr "Passwords don't match" -#: fietsboek/util.py:308 +#: fietsboek/util.py:309  msgid "password_constraint.length"  msgstr "Password not long enough" -#: fietsboek/models/track.py:602 +#: fietsboek/models/track.py:603  msgid "tooltip.table.length"  msgstr "Length" -#: fietsboek/models/track.py:603 +#: fietsboek/models/track.py:604  msgid "tooltip.table.people"  msgstr "# People" -#: fietsboek/models/track.py:604 +#: fietsboek/models/track.py:605  msgid "tooltip.table.uphill"  msgstr "Uphill" -#: fietsboek/models/track.py:605 +#: fietsboek/models/track.py:606  msgid "tooltip.table.downhill"  msgstr "Downhill" -#: fietsboek/models/track.py:606 +#: fietsboek/models/track.py:607  msgid "tooltip.table.moving_time"  msgstr "Moving Time" -#: fietsboek/models/track.py:607 +#: fietsboek/models/track.py:608  msgid "tooltip.table.stopped_time"  msgstr "Stopped Time" -#: fietsboek/models/track.py:609 +#: fietsboek/models/track.py:610  msgid "tooltip.table.max_speed"  msgstr "Max Speed" -#: fietsboek/models/track.py:613 +#: fietsboek/models/track.py:614  msgid "tooltip.table.avg_speed"  msgstr "Average Speed" @@ -458,36 +458,36 @@ msgstr "Tagged People"  msgid "page.track.form.add_friend"  msgstr "Search friends" -#: fietsboek/templates/edit_form.jinja2:90 +#: fietsboek/templates/edit_form.jinja2:92  msgid "page.track.form.badges"  msgstr "Badges" -#: fietsboek/templates/edit_form.jinja2:101 +#: fietsboek/templates/edit_form.jinja2:103  msgid "page.track.form.description"  msgstr "Description" -#: fietsboek/templates/edit_form.jinja2:108 -#: fietsboek/templates/edit_form.jinja2:129 +#: fietsboek/templates/edit_form.jinja2:110 +#: fietsboek/templates/edit_form.jinja2:131  msgid "page.track.form.remove_image"  msgstr "Remove image" -#: fietsboek/templates/edit_form.jinja2:118 +#: fietsboek/templates/edit_form.jinja2:120  msgid "page.track.form.select_images"  msgstr "Select images" -#: fietsboek/templates/edit_form.jinja2:122 +#: fietsboek/templates/edit_form.jinja2:124  msgid "page.track.form.image_uploads_disabled"  msgstr "Image uploads are disabled on this Fietsboek" -#: fietsboek/templates/edit_form.jinja2:140 +#: fietsboek/templates/edit_form.jinja2:142  msgid "page.track.form.image_description_modal"  msgstr "Image description" -#: fietsboek/templates/edit_form.jinja2:147 +#: fietsboek/templates/edit_form.jinja2:149  msgid "page.track.form.image_description_modal.save"  msgstr "Apply" -#: fietsboek/templates/edit_form.jinja2:173 +#: fietsboek/templates/edit_form.jinja2:175  msgid "page.track.form.transformer.enable"  msgstr "Apply transformation" @@ -624,59 +624,67 @@ msgstr "Passwords must match"  msgid "page.password_reset.reset"  msgstr "Reset" -#: fietsboek/templates/profile.jinja2:66 +#: fietsboek/templates/profile.jinja2:67  msgid "page.profile.length"  msgstr "Length" -#: fietsboek/templates/profile.jinja2:70 +#: fietsboek/templates/profile.jinja2:71 +msgid "page.profile.avg_length" +msgstr "Average Length" + +#: fietsboek/templates/profile.jinja2:75  msgid "page.profile.uphill"  msgstr "Uphill" -#: fietsboek/templates/profile.jinja2:74 +#: fietsboek/templates/profile.jinja2:79  msgid "page.profile.downhill"  msgstr "Downhill" -#: fietsboek/templates/profile.jinja2:78 +#: fietsboek/templates/profile.jinja2:83  msgid "page.profile.moving_time"  msgstr "Moving Time" -#: fietsboek/templates/profile.jinja2:82 +#: fietsboek/templates/profile.jinja2:87  msgid "page.profile.stopped_time"  msgstr "Stopped Time" -#: fietsboek/templates/profile.jinja2:86 +#: fietsboek/templates/profile.jinja2:91 +msgid "page.profile.avg_duration" +msgstr "Average Duration" + +#: fietsboek/templates/profile.jinja2:95  msgid "page.profile.max_speed"  msgstr "Max Speed" -#: fietsboek/templates/profile.jinja2:90 +#: fietsboek/templates/profile.jinja2:99  msgid "page.profile.avg_speed"  msgstr "Average Speed" -#: fietsboek/templates/profile.jinja2:94 +#: fietsboek/templates/profile.jinja2:103  msgid "page.profile.number_of_tracks"  msgstr "Number of tracks" -#: fietsboek/templates/profile.jinja2:100 +#: fietsboek/templates/profile.jinja2:109  msgid "page.profile.longest_distance_track"  msgstr "Longest Track" -#: fietsboek/templates/profile.jinja2:105 +#: fietsboek/templates/profile.jinja2:114  msgid "page.profile.shortest_distance_track"  msgstr "Shortest Track" -#: fietsboek/templates/profile.jinja2:110 +#: fietsboek/templates/profile.jinja2:119  msgid "page.profile.longest_duration_track"  msgstr "Most Time-Consuming Track" -#: fietsboek/templates/profile.jinja2:115 +#: fietsboek/templates/profile.jinja2:124  msgid "page.profile.shortest_duration_track"  msgstr "Quickest Track" -#: fietsboek/templates/profile.jinja2:135 +#: fietsboek/templates/profile.jinja2:144  msgid "page.profile.heatmap"  msgstr "Heat Map" -#: fietsboek/templates/profile.jinja2:140 +#: fietsboek/templates/profile.jinja2:149  msgid "page.profile.tilehunt"  msgstr "Tilehunt" @@ -786,150 +794,150 @@ msgstr "Email of the friend"  msgid "page.my_profile.send_friend_request"  msgstr "Send friend request" -#: fietsboek/transformers/breaks.py:31 +#: fietsboek/transformers/breaks.py:32  msgid "transformers.remove-breaks.title"  msgstr "Remove breaks" -#: fietsboek/transformers/breaks.py:35 +#: fietsboek/transformers/breaks.py:36  msgid "transformers.remove-breaks.description"  msgstr "This transformer removes long breaks from the recording" -#: fietsboek/transformers/elevation.py:42 +#: fietsboek/transformers/elevation.py:43  msgid "transformers.fix-null-elevation.title"  msgstr "Fix null elevation" -#: fietsboek/transformers/elevation.py:46 +#: fietsboek/transformers/elevation.py:47  msgid "transformers.fix-null-elevation.description"  msgstr "This transformer fixes the elevation of points whose elevation is unset." -#: fietsboek/transformers/elevation.py:115 +#: fietsboek/transformers/elevation.py:116  msgid "transformers.fix-elevation-jumps"  msgstr "Fix elevation jumps" -#: fietsboek/transformers/elevation.py:119 +#: fietsboek/transformers/elevation.py:120  msgid "transformers.fix-elevation-jumps.description"  msgstr "This transformer fixes abrupt jumps in the elevation value." -#: fietsboek/views/account.py:53 +#: fietsboek/views/account.py:54  msgid "flash.invalid_name"  msgstr "Invalid name" -#: fietsboek/views/account.py:58 +#: fietsboek/views/account.py:59  msgid "flash.invalid_email"  msgstr "Invalid email" -#: fietsboek/views/account.py:68 +#: fietsboek/views/account.py:69  msgid "flash.a_confirmation_link_has_been_sent"  msgstr "A confirmation link has been sent" -#: fietsboek/views/admin.py:48 +#: fietsboek/views/admin.py:49  msgid "flash.badge_added"  msgstr "Badge has been added" -#: fietsboek/views/admin.py:72 +#: fietsboek/views/admin.py:73  msgid "flash.badge_modified"  msgstr "Badge has been modified" -#: fietsboek/views/admin.py:92 +#: fietsboek/views/admin.py:93  msgid "flash.badge_deleted"  msgstr "Badge has been deleted" -#: fietsboek/views/default.py:115 +#: fietsboek/views/default.py:116  msgid "flash.invalid_credentials"  msgstr "Invalid login credentials" -#: fietsboek/views/default.py:119 +#: fietsboek/views/default.py:120  msgid "flash.account_not_verified"  msgstr "Your account is not verified yet" -#: fietsboek/views/default.py:122 +#: fietsboek/views/default.py:123  msgid "flash.logged_in"  msgstr "You are now logged in" -#: fietsboek/views/default.py:143 +#: fietsboek/views/default.py:144  msgid "flash.logged_out"  msgstr "You have been logged out" -#: fietsboek/views/default.py:173 +#: fietsboek/views/default.py:174  msgid "flash.reset_invalid_email"  msgstr "Invalid email address provided" -#: fietsboek/views/default.py:178 +#: fietsboek/views/default.py:179  msgid "flash.password_token_generated"  msgstr "A password reset email has been sent" -#: fietsboek/views/default.py:183 +#: fietsboek/views/default.py:184  msgid "page.password_reset.email.subject"  msgstr "Fietsboek Password Reset" -#: fietsboek/views/default.py:186 +#: fietsboek/views/default.py:187  msgid "page.password_reset.email.body"  msgstr ""  "You can reset your Fietsboek password here: {}\n"  "\n"  "If you did not request a password reset, ignore this email." -#: fietsboek/views/default.py:225 +#: fietsboek/views/default.py:226  msgid "flash.resend_verification_email_fail"  msgstr "Invalid email address provided" -#: fietsboek/views/default.py:230 +#: fietsboek/views/default.py:231  msgid "flash.verification_token_generated"  msgstr "A verification email has been sent" -#: fietsboek/views/default.py:250 +#: fietsboek/views/default.py:251  msgid "flash.token_expired"  msgstr "The link has expired" -#: fietsboek/views/default.py:256 +#: fietsboek/views/default.py:257  msgid "flash.email_verified"  msgstr "Your email address has been verified" -#: fietsboek/views/default.py:270 +#: fietsboek/views/default.py:271  msgid "flash.password_updated"  msgstr "Password has been updated" -#: fietsboek/views/detail.py:161 +#: fietsboek/views/detail.py:162  msgid "flash.track_deleted"  msgstr "Track has been deleted" -#: fietsboek/views/upload.py:52 +#: fietsboek/views/upload.py:53  msgid "flash.no_file_selected"  msgstr "No file selected" -#: fietsboek/views/upload.py:65 +#: fietsboek/views/upload.py:66  msgid "flash.invalid_file"  msgstr "Invalid GPX file selected" -#: fietsboek/views/upload.py:191 +#: fietsboek/views/upload.py:192  msgid "flash.upload_success"  msgstr "Upload successful" -#: fietsboek/views/upload.py:210 +#: fietsboek/views/upload.py:211  msgid "flash.upload_cancelled"  msgstr "Upload cancelled" -#: fietsboek/views/user_data.py:66 +#: fietsboek/views/user_data.py:67  msgid "flash.personal_data_updated"  msgstr "Personal data has been updated" -#: fietsboek/views/user_data.py:85 +#: fietsboek/views/user_data.py:86  msgid "flash.friend_not_found"  msgstr "The friend was not found" -#: fietsboek/views/user_data.py:91 +#: fietsboek/views/user_data.py:92  msgid "flash.friend_already_exists"  msgstr "Friend already exists" -#: fietsboek/views/user_data.py:99 +#: fietsboek/views/user_data.py:100  msgid "flash.friend_added"  msgstr "Friend has been added" -#: fietsboek/views/user_data.py:109 +#: fietsboek/views/user_data.py:110  msgid "flash.friend_request_sent"  msgstr "Friend request sent" -#: fietsboek/views/user_data.py:195 +#: fietsboek/views/user_data.py:196  msgid "flash.sessions_logged_out"  msgstr "All sessions have been logged out. Please log in again to continue." diff --git a/fietsboek/locale/fietslog.pot b/fietsboek/locale/fietslog.pot index e5a0b40..4fd3812 100644 --- a/fietsboek/locale/fietslog.pot +++ b/fietsboek/locale/fietslog.pot @@ -1,14 +1,14 @@  # Translations template for PROJECT. -# Copyright (C) 2023 ORGANIZATION +# Copyright (C) 2024 ORGANIZATION  # This file is distributed under the same license as the PROJECT project. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2023. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.  #  #, fuzzy  msgid ""  msgstr ""  "Project-Id-Version: PROJECT VERSION\n"  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-11-10 22:23+0100\n" +"POT-Creation-Date: 2024-02-02 23:44+0100\n"  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"  "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,51 +17,51 @@ msgstr ""  "Content-Transfer-Encoding: 8bit\n"  "Generated-By: Babel 2.12.1\n" -#: fietsboek/actions.py:257 +#: fietsboek/actions.py:267  msgid "email.verify_mail.subject"  msgstr "" -#: fietsboek/actions.py:260 +#: fietsboek/actions.py:270  msgid "email.verify.text"  msgstr "" -#: fietsboek/util.py:306 +#: fietsboek/util.py:307  msgid "password_constraint.mismatch"  msgstr "" -#: fietsboek/util.py:308 +#: fietsboek/util.py:309  msgid "password_constraint.length"  msgstr "" -#: fietsboek/models/track.py:602 +#: fietsboek/models/track.py:603  msgid "tooltip.table.length"  msgstr "" -#: fietsboek/models/track.py:603 +#: fietsboek/models/track.py:604  msgid "tooltip.table.people"  msgstr "" -#: fietsboek/models/track.py:604 +#: fietsboek/models/track.py:605  msgid "tooltip.table.uphill"  msgstr "" -#: fietsboek/models/track.py:605 +#: fietsboek/models/track.py:606  msgid "tooltip.table.downhill"  msgstr "" -#: fietsboek/models/track.py:606 +#: fietsboek/models/track.py:607  msgid "tooltip.table.moving_time"  msgstr "" -#: fietsboek/models/track.py:607 +#: fietsboek/models/track.py:608  msgid "tooltip.table.stopped_time"  msgstr "" -#: fietsboek/models/track.py:609 +#: fietsboek/models/track.py:610  msgid "tooltip.table.max_speed"  msgstr "" -#: fietsboek/models/track.py:613 +#: fietsboek/models/track.py:614  msgid "tooltip.table.avg_speed"  msgstr "" @@ -452,36 +452,36 @@ msgstr ""  msgid "page.track.form.add_friend"  msgstr "" -#: fietsboek/templates/edit_form.jinja2:90 +#: fietsboek/templates/edit_form.jinja2:92  msgid "page.track.form.badges"  msgstr "" -#: fietsboek/templates/edit_form.jinja2:101 +#: fietsboek/templates/edit_form.jinja2:103  msgid "page.track.form.description"  msgstr "" -#: fietsboek/templates/edit_form.jinja2:108 -#: fietsboek/templates/edit_form.jinja2:129 +#: fietsboek/templates/edit_form.jinja2:110 +#: fietsboek/templates/edit_form.jinja2:131  msgid "page.track.form.remove_image"  msgstr "" -#: fietsboek/templates/edit_form.jinja2:118 +#: fietsboek/templates/edit_form.jinja2:120  msgid "page.track.form.select_images"  msgstr "" -#: fietsboek/templates/edit_form.jinja2:122 +#: fietsboek/templates/edit_form.jinja2:124  msgid "page.track.form.image_uploads_disabled"  msgstr "" -#: fietsboek/templates/edit_form.jinja2:140 +#: fietsboek/templates/edit_form.jinja2:142  msgid "page.track.form.image_description_modal"  msgstr "" -#: fietsboek/templates/edit_form.jinja2:147 +#: fietsboek/templates/edit_form.jinja2:149  msgid "page.track.form.image_description_modal.save"  msgstr "" -#: fietsboek/templates/edit_form.jinja2:173 +#: fietsboek/templates/edit_form.jinja2:175  msgid "page.track.form.transformer.enable"  msgstr "" @@ -618,59 +618,67 @@ msgstr ""  msgid "page.password_reset.reset"  msgstr "" -#: fietsboek/templates/profile.jinja2:66 +#: fietsboek/templates/profile.jinja2:67  msgid "page.profile.length"  msgstr "" -#: fietsboek/templates/profile.jinja2:70 +#: fietsboek/templates/profile.jinja2:71 +msgid "page.profile.avg_length" +msgstr "" + +#: fietsboek/templates/profile.jinja2:75  msgid "page.profile.uphill"  msgstr "" -#: fietsboek/templates/profile.jinja2:74 +#: fietsboek/templates/profile.jinja2:79  msgid "page.profile.downhill"  msgstr "" -#: fietsboek/templates/profile.jinja2:78 +#: fietsboek/templates/profile.jinja2:83  msgid "page.profile.moving_time"  msgstr "" -#: fietsboek/templates/profile.jinja2:82 +#: fietsboek/templates/profile.jinja2:87  msgid "page.profile.stopped_time"  msgstr "" -#: fietsboek/templates/profile.jinja2:86 +#: fietsboek/templates/profile.jinja2:91 +msgid "page.profile.avg_duration" +msgstr "" + +#: fietsboek/templates/profile.jinja2:95  msgid "page.profile.max_speed"  msgstr "" -#: fietsboek/templates/profile.jinja2:90 +#: fietsboek/templates/profile.jinja2:99  msgid "page.profile.avg_speed"  msgstr "" -#: fietsboek/templates/profile.jinja2:94 +#: fietsboek/templates/profile.jinja2:103  msgid "page.profile.number_of_tracks"  msgstr "" -#: fietsboek/templates/profile.jinja2:100 +#: fietsboek/templates/profile.jinja2:109  msgid "page.profile.longest_distance_track"  msgstr "" -#: fietsboek/templates/profile.jinja2:105 +#: fietsboek/templates/profile.jinja2:114  msgid "page.profile.shortest_distance_track"  msgstr "" -#: fietsboek/templates/profile.jinja2:110 +#: fietsboek/templates/profile.jinja2:119  msgid "page.profile.longest_duration_track"  msgstr "" -#: fietsboek/templates/profile.jinja2:115 +#: fietsboek/templates/profile.jinja2:124  msgid "page.profile.shortest_duration_track"  msgstr "" -#: fietsboek/templates/profile.jinja2:135 +#: fietsboek/templates/profile.jinja2:144  msgid "page.profile.heatmap"  msgstr "" -#: fietsboek/templates/profile.jinja2:140 +#: fietsboek/templates/profile.jinja2:149  msgid "page.profile.tilehunt"  msgstr "" @@ -774,147 +782,147 @@ msgstr ""  msgid "page.my_profile.send_friend_request"  msgstr "" -#: fietsboek/transformers/breaks.py:31 +#: fietsboek/transformers/breaks.py:32  msgid "transformers.remove-breaks.title"  msgstr "" -#: fietsboek/transformers/breaks.py:35 +#: fietsboek/transformers/breaks.py:36  msgid "transformers.remove-breaks.description"  msgstr "" -#: fietsboek/transformers/elevation.py:42 +#: fietsboek/transformers/elevation.py:43  msgid "transformers.fix-null-elevation.title"  msgstr "" -#: fietsboek/transformers/elevation.py:46 +#: fietsboek/transformers/elevation.py:47  msgid "transformers.fix-null-elevation.description"  msgstr "" -#: fietsboek/transformers/elevation.py:115 +#: fietsboek/transformers/elevation.py:116  msgid "transformers.fix-elevation-jumps"  msgstr "" -#: fietsboek/transformers/elevation.py:119 +#: fietsboek/transformers/elevation.py:120  msgid "transformers.fix-elevation-jumps.description"  msgstr "" -#: fietsboek/views/account.py:53 +#: fietsboek/views/account.py:54  msgid "flash.invalid_name"  msgstr "" -#: fietsboek/views/account.py:58 +#: fietsboek/views/account.py:59  msgid "flash.invalid_email"  msgstr "" -#: fietsboek/views/account.py:68 +#: fietsboek/views/account.py:69  msgid "flash.a_confirmation_link_has_been_sent"  msgstr "" -#: fietsboek/views/admin.py:48 +#: fietsboek/views/admin.py:49  msgid "flash.badge_added"  msgstr "" -#: fietsboek/views/admin.py:72 +#: fietsboek/views/admin.py:73  msgid "flash.badge_modified"  msgstr "" -#: fietsboek/views/admin.py:92 +#: fietsboek/views/admin.py:93  msgid "flash.badge_deleted"  msgstr "" -#: fietsboek/views/default.py:115 +#: fietsboek/views/default.py:116  msgid "flash.invalid_credentials"  msgstr "" -#: fietsboek/views/default.py:119 +#: fietsboek/views/default.py:120  msgid "flash.account_not_verified"  msgstr "" -#: fietsboek/views/default.py:122 +#: fietsboek/views/default.py:123  msgid "flash.logged_in"  msgstr "" -#: fietsboek/views/default.py:143 +#: fietsboek/views/default.py:144  msgid "flash.logged_out"  msgstr "" -#: fietsboek/views/default.py:173 +#: fietsboek/views/default.py:174  msgid "flash.reset_invalid_email"  msgstr "" -#: fietsboek/views/default.py:178 +#: fietsboek/views/default.py:179  msgid "flash.password_token_generated"  msgstr "" -#: fietsboek/views/default.py:183 +#: fietsboek/views/default.py:184  msgid "page.password_reset.email.subject"  msgstr "" -#: fietsboek/views/default.py:186 +#: fietsboek/views/default.py:187  msgid "page.password_reset.email.body"  msgstr "" -#: fietsboek/views/default.py:225 +#: fietsboek/views/default.py:226  msgid "flash.resend_verification_email_fail"  msgstr "" -#: fietsboek/views/default.py:230 +#: fietsboek/views/default.py:231  msgid "flash.verification_token_generated"  msgstr "" -#: fietsboek/views/default.py:250 +#: fietsboek/views/default.py:251  msgid "flash.token_expired"  msgstr "" -#: fietsboek/views/default.py:256 +#: fietsboek/views/default.py:257  msgid "flash.email_verified"  msgstr "" -#: fietsboek/views/default.py:270 +#: fietsboek/views/default.py:271  msgid "flash.password_updated"  msgstr "" -#: fietsboek/views/detail.py:161 +#: fietsboek/views/detail.py:162  msgid "flash.track_deleted"  msgstr "" -#: fietsboek/views/upload.py:52 +#: fietsboek/views/upload.py:53  msgid "flash.no_file_selected"  msgstr "" -#: fietsboek/views/upload.py:65 +#: fietsboek/views/upload.py:66  msgid "flash.invalid_file"  msgstr "" -#: fietsboek/views/upload.py:191 +#: fietsboek/views/upload.py:192  msgid "flash.upload_success"  msgstr "" -#: fietsboek/views/upload.py:210 +#: fietsboek/views/upload.py:211  msgid "flash.upload_cancelled"  msgstr "" -#: fietsboek/views/user_data.py:66 +#: fietsboek/views/user_data.py:67  msgid "flash.personal_data_updated"  msgstr "" -#: fietsboek/views/user_data.py:85 +#: fietsboek/views/user_data.py:86  msgid "flash.friend_not_found"  msgstr "" -#: fietsboek/views/user_data.py:91 +#: fietsboek/views/user_data.py:92  msgid "flash.friend_already_exists"  msgstr "" -#: fietsboek/views/user_data.py:99 +#: fietsboek/views/user_data.py:100  msgid "flash.friend_added"  msgstr "" -#: fietsboek/views/user_data.py:109 +#: fietsboek/views/user_data.py:110  msgid "flash.friend_request_sent"  msgstr "" -#: fietsboek/views/user_data.py:195 +#: fietsboek/views/user_data.py:196  msgid "flash.sessions_logged_out"  msgstr "" diff --git a/fietsboek/templates/profile.jinja2 b/fietsboek/templates/profile.jinja2 index 69c37e2..bab6d49 100644 --- a/fietsboek/templates/profile.jinja2 +++ b/fietsboek/templates/profile.jinja2 @@ -68,6 +68,10 @@        <td id="profileLength">{{ (total.length / 1000) | round(2) | format_decimal }} km</td>      </tr>      <tr> +      <th scope="row">{{ _("page.profile.avg_length") }}</th> +      <td id="profileAvgLength">{{ (total.avg_length / 1000) | round(2) | format_decimal }} km</td> +    </tr> +    <tr>        <th scope="row">{{ _("page.profile.uphill") }}</th>        <td id="profileUphill">{{ total.uphill | round(2) | format_decimal }} m</td>      </tr> @@ -84,6 +88,10 @@        <td id="profileStoppedTime">{{ total.stopped_time }}</td>      </tr>      <tr> +      <th scope="row">{{ _("page.profile.avg_duration") }}</th> +      <td id="profileAvgDuration">{{ total.avg_duration }}</td> +    </tr> +    <tr>        <th scope="row">{{ _("page.profile.max_speed") }}</th>        <td id="profileMaxSpeed">{{ mps_to_kph(total.max_speed) | round(2) | format_decimal }} km/h</td>      </tr> diff --git a/fietsboek/views/profile.py b/fietsboek/views/profile.py index dc2fcd9..b353abd 100644 --- a/fietsboek/views/profile.py +++ b/fietsboek/views/profile.py @@ -127,6 +127,23 @@ class CumulativeStats:              return 0.0          return self.length / self.moving_time.total_seconds() +    @property +    def avg_length(self) -> float: +        """Average length, in m.""" +        if not self.count: +            return 0 +        return self.length / self.count + +    @property +    def avg_duration(self) -> datetime.timedelta: +        """Average duration of a track. + +        Note that this property is automatically rounded to seconds. +        """ +        if not self.count: +            return datetime.timedelta() +        return round_to_seconds((self.moving_time + self.stopped_time) / self.count) +  def round_to_seconds(value: datetime.timedelta) -> datetime.timedelta:      """Round a timedelta to full seconds.  | 
