diff --git a/backend/server/adventures/views.py b/backend/server/adventures/views.py index 3ee3e79..5c0c593 100644 --- a/backend/server/adventures/views.py +++ b/backend/server/adventures/views.py @@ -20,6 +20,7 @@ from django.contrib.auth import get_user_model from icalendar import Calendar, Event, vText, vCalAddress from django.http import HttpResponse from datetime import datetime +from django.db.models import Min User = get_user_model() @@ -44,17 +45,25 @@ class AdventureViewSet(viewsets.ModelViewSet): order_direction = self.request.query_params.get('order_direction', 'asc') include_collections = self.request.query_params.get('include_collections', 'true') - valid_order_by = ['name', 'type', 'start_date', 'rating', 'updated_at'] + valid_order_by = ['name', 'type', 'date', 'rating', 'updated_at'] if order_by not in valid_order_by: order_by = 'name' if order_direction not in ['asc', 'desc']: order_direction = 'asc' + if order_by == 'date': + # order by the earliest visit object associated with the adventure + queryset = queryset.annotate(earliest_visit=Min('visits__start_date')) + queryset = queryset.filter(earliest_visit__isnull=False) + ordering = 'earliest_visit' # Apply case-insensitive sorting for the 'name' field - if order_by == 'name': + elif order_by == 'name': queryset = queryset.annotate(lower_name=Lower('name')) ordering = 'lower_name' + elif order_by == 'rating': + queryset = queryset.filter(rating__isnull=False) + ordering = 'rating' else: ordering = order_by diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index dfb35cc..e8f982d 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -284,7 +284,8 @@ "email_required": "E-Mail ist erforderlich", "both_passwords_required": "Beide Passwörter sind erforderlich", "new_password": "Neues Passwort", - "reset_failed": "Passwort konnte nicht zurückgesetzt werden" + "reset_failed": "Passwort konnte nicht zurückgesetzt werden", + "or_3rd_party": "Oder melden Sie sich bei einem Drittanbieter an" }, "users": { "no_users_found": "Keine Benutzer mit öffentlichen Profilen gefunden." @@ -369,7 +370,15 @@ "csrf_failed": "CSRF-Token konnte nicht abgerufen werden", "duplicate_email": "Diese E-Mail-Adresse wird bereits verwendet.", "email_taken": "Diese E-Mail-Adresse wird bereits verwendet.", - "username_taken": "Dieser Benutzername wird bereits verwendet." + "username_taken": "Dieser Benutzername wird bereits verwendet.", + "administration_settings": "Verwaltungseinstellungen", + "documentation_link": "Dokumentationslink", + "launch_account_connections": "Kontoverbindungen starten", + "launch_administration_panel": "Starten Sie das Administrationspanel", + "no_verified_email_warning": "Sie müssen über eine verifizierte E-Mail-Adresse verfügen, um die Zwei-Faktor-Authentifizierung zu aktivieren.", + "social_auth_desc": "Aktivieren oder deaktivieren Sie soziale und OIDC-Authentifizierungsanbieter für Ihr Konto. \nMit diesen Verbindungen können Sie sich bei selbst gehosteten Authentifizierungsidentitätsanbietern wie Authentik oder Drittanbietern wie GitHub anmelden.", + "social_auth_desc_2": "Diese Einstellungen werden auf dem AdventureLog-Server verwaltet und müssen vom Administrator manuell aktiviert werden.", + "social_oidc_auth": "Soziale und OIDC-Authentifizierung" }, "checklist": { "add_item": "Artikel hinzufügen", diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index b3a1f43..a46986d 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -371,7 +371,14 @@ "duplicate_email": "This email address is already in use.", "csrf_failed": "Failed to fetch CSRF token", "email_taken": "This email address is already in use.", - "username_taken": "This username is already in use." + "username_taken": "This username is already in use.", + "administration_settings": "Administration Settings", + "launch_administration_panel": "Launch Administration Panel", + "social_oidc_auth": "Social and OIDC Authentication", + "social_auth_desc": "Enable or disable social and OIDC authentication providers for your account. These connections allow you to sign in with self hosted authentication identity providers like Authentik or 3rd party providers like GitHub.", + "social_auth_desc_2": "These settings are managed in the AdventureLog server and must be manually enabled by the administrator.", + "documentation_link": "Documentation Link", + "launch_account_connections": "Launch Account Connections" }, "collection": { "collection_created": "Collection created successfully!", diff --git a/frontend/src/locales/es.json b/frontend/src/locales/es.json index 0211650..f8d33ab 100644 --- a/frontend/src/locales/es.json +++ b/frontend/src/locales/es.json @@ -295,7 +295,8 @@ "email_required": "Se requiere correo electrónico", "both_passwords_required": "Se requieren ambas contraseñas", "new_password": "Nueva contraseña", - "reset_failed": "No se pudo restablecer la contraseña" + "reset_failed": "No se pudo restablecer la contraseña", + "or_3rd_party": "O inicie sesión con un servicio de terceros" }, "users": { "no_users_found": "No se encontraron usuarios con perfiles públicos." @@ -369,7 +370,15 @@ "csrf_failed": "No se pudo recuperar el token CSRF", "duplicate_email": "Esta dirección de correo electrónico ya está en uso.", "email_taken": "Esta dirección de correo electrónico ya está en uso.", - "username_taken": "Este nombre de usuario ya está en uso." + "username_taken": "Este nombre de usuario ya está en uso.", + "administration_settings": "Configuración de administración", + "documentation_link": "Enlace de documentación", + "launch_account_connections": "Iniciar conexiones de cuenta", + "launch_administration_panel": "Iniciar el panel de administración", + "no_verified_email_warning": "Debe tener una dirección de correo electrónico verificada para habilitar la autenticación de dos factores.", + "social_auth_desc": "Habilite o deshabilite los proveedores de autenticación social y OIDC para su cuenta. \nEstas conexiones le permiten iniciar sesión con proveedores de identidad de autenticación autohospedados como Authentik o proveedores externos como GitHub.", + "social_auth_desc_2": "Estas configuraciones se administran en el servidor AdventureLog y el administrador debe habilitarlas manualmente.", + "social_oidc_auth": "Autenticación social y OIDC" }, "checklist": { "add_item": "Agregar artículo", diff --git a/frontend/src/locales/fr.json b/frontend/src/locales/fr.json index 4572619..5d43237 100644 --- a/frontend/src/locales/fr.json +++ b/frontend/src/locales/fr.json @@ -284,7 +284,8 @@ "email_required": "L'e-mail est requis", "both_passwords_required": "Les deux mots de passe sont requis", "new_password": "Nouveau mot de passe", - "reset_failed": "Échec de la réinitialisation du mot de passe" + "reset_failed": "Échec de la réinitialisation du mot de passe", + "or_3rd_party": "Ou connectez-vous avec un service tiers" }, "users": { "no_users_found": "Aucun utilisateur trouvé avec des profils publics." @@ -369,7 +370,15 @@ "csrf_failed": "Échec de la récupération du jeton CSRF", "duplicate_email": "Cette adresse e-mail est déjà utilisée.", "email_taken": "Cette adresse e-mail est déjà utilisée.", - "username_taken": "Ce nom d'utilisateur est déjà utilisé." + "username_taken": "Ce nom d'utilisateur est déjà utilisé.", + "administration_settings": "Paramètres d'administration", + "documentation_link": "Lien vers la documentation", + "launch_account_connections": "Lancer les connexions au compte", + "launch_administration_panel": "Lancer le panneau d'administration", + "no_verified_email_warning": "Vous devez disposer d'une adresse e-mail vérifiée pour activer l'authentification à deux facteurs.", + "social_auth_desc": "Activez ou désactivez les fournisseurs d'authentification sociale et OIDC pour votre compte. \nCes connexions vous permettent de vous connecter avec des fournisseurs d'identité d'authentification auto-hébergés comme Authentik ou des fournisseurs tiers comme GitHub.", + "social_auth_desc_2": "Ces paramètres sont gérés sur le serveur AdventureLog et doivent être activés manuellement par l'administrateur.", + "social_oidc_auth": "Authentification sociale et OIDC" }, "checklist": { "add_item": "Ajouter un article", diff --git a/frontend/src/locales/it.json b/frontend/src/locales/it.json index 9c06a22..025f9e0 100644 --- a/frontend/src/locales/it.json +++ b/frontend/src/locales/it.json @@ -284,7 +284,8 @@ "email_required": "L'e-mail è obbligatoria", "both_passwords_required": "Sono necessarie entrambe le password", "new_password": "Nuova parola d'ordine", - "reset_failed": "Impossibile reimpostare la password" + "reset_failed": "Impossibile reimpostare la password", + "or_3rd_party": "Oppure accedi con un servizio di terze parti" }, "users": { "no_users_found": "Nessun utente trovato con profili pubblici." @@ -369,7 +370,15 @@ "csrf_failed": "Impossibile recuperare il token CSRF", "duplicate_email": "Questo indirizzo email è già in uso.", "email_taken": "Questo indirizzo email è già in uso.", - "username_taken": "Questo nome utente è già in uso." + "username_taken": "Questo nome utente è già in uso.", + "administration_settings": "Impostazioni di amministrazione", + "documentation_link": "Collegamento alla documentazione", + "launch_account_connections": "Avvia Connessioni account", + "launch_administration_panel": "Avvia il pannello di amministrazione", + "no_verified_email_warning": "È necessario disporre di un indirizzo e-mail verificato per abilitare l'autenticazione a due fattori.", + "social_auth_desc": "Abilita o disabilita i provider di autenticazione social e OIDC per il tuo account. \nQueste connessioni ti consentono di accedere con provider di identità di autenticazione self-hosted come Authentik o provider di terze parti come GitHub.", + "social_auth_desc_2": "Queste impostazioni sono gestite nel server AdventureLog e devono essere abilitate manualmente dall'amministratore.", + "social_oidc_auth": "Autenticazione sociale e OIDC" }, "checklist": { "add_item": "Aggiungi articolo", diff --git a/frontend/src/locales/nl.json b/frontend/src/locales/nl.json index 91fb42b..750bbd7 100644 --- a/frontend/src/locales/nl.json +++ b/frontend/src/locales/nl.json @@ -284,7 +284,8 @@ "email_required": "E-mail is vereist", "both_passwords_required": "Beide wachtwoorden zijn vereist", "new_password": "Nieuw wachtwoord", - "reset_failed": "Kan het wachtwoord niet opnieuw instellen" + "reset_failed": "Kan het wachtwoord niet opnieuw instellen", + "or_3rd_party": "Of log in met een service van derden" }, "users": { "no_users_found": "Er zijn geen gebruikers gevonden met openbare profielen." @@ -369,7 +370,15 @@ "csrf_failed": "Kan CSRF-token niet ophalen", "duplicate_email": "Dit e-mailadres is al in gebruik.", "email_taken": "Dit e-mailadres is al in gebruik.", - "username_taken": "Deze gebruikersnaam is al in gebruik." + "username_taken": "Deze gebruikersnaam is al in gebruik.", + "administration_settings": "Beheerinstellingen", + "documentation_link": "Documentatielink", + "launch_account_connections": "Start Accountverbindingen", + "launch_administration_panel": "Start het Beheerpaneel", + "no_verified_email_warning": "U moet een geverifieerd e-mailadres hebben om tweefactorauthenticatie in te schakelen.", + "social_auth_desc": "Schakel sociale en OIDC-authenticatieproviders in of uit voor uw account. \nMet deze verbindingen kunt u inloggen met zelfgehoste authenticatie-identiteitsproviders zoals Authentik of externe providers zoals GitHub.", + "social_auth_desc_2": "Deze instellingen worden beheerd op de AdventureLog-server en moeten handmatig worden ingeschakeld door de beheerder.", + "social_oidc_auth": "Sociale en OIDC-authenticatie" }, "checklist": { "add_item": "Artikel toevoegen", diff --git a/frontend/src/locales/pl.json b/frontend/src/locales/pl.json index 641aa95..189be2c 100644 --- a/frontend/src/locales/pl.json +++ b/frontend/src/locales/pl.json @@ -295,7 +295,8 @@ "email_required": "Adres e-mail jest wymagany", "both_passwords_required": "Obydwa hasła są wymagane", "new_password": "Nowe hasło", - "reset_failed": "Nie udało się zresetować hasła" + "reset_failed": "Nie udało się zresetować hasła", + "or_3rd_party": "Lub zaloguj się za pomocą usługi strony trzeciej" }, "users": { "no_users_found": "Nie znaleziono użytkowników z publicznymi profilami." @@ -369,7 +370,15 @@ "csrf_failed": "Nie udało się pobrać tokena CSRF", "duplicate_email": "Ten adres e-mail jest już używany.", "email_taken": "Ten adres e-mail jest już używany.", - "username_taken": "Ta nazwa użytkownika jest już używana." + "username_taken": "Ta nazwa użytkownika jest już używana.", + "administration_settings": "Ustawienia administracyjne", + "documentation_link": "Link do dokumentacji", + "launch_account_connections": "Uruchom Połączenia kont", + "launch_administration_panel": "Uruchom Panel administracyjny", + "no_verified_email_warning": "Aby włączyć uwierzytelnianie dwuskładnikowe, musisz mieć zweryfikowany adres e-mail.", + "social_auth_desc": "Włącz lub wyłącz dostawców uwierzytelniania społecznościowego i OIDC dla swojego konta. \nPołączenia te umożliwiają logowanie się za pośrednictwem dostawców tożsamości uwierzytelniających, takich jak Authentik, lub dostawców zewnętrznych, takich jak GitHub.", + "social_auth_desc_2": "Ustawienia te są zarządzane na serwerze AdventureLog i muszą zostać włączone ręcznie przez administratora.", + "social_oidc_auth": "Uwierzytelnianie społecznościowe i OIDC" }, "collection": { "collection_created": "Kolekcja została pomyślnie utworzona!", diff --git a/frontend/src/locales/sv.json b/frontend/src/locales/sv.json index 505fbb6..7f7baab 100644 --- a/frontend/src/locales/sv.json +++ b/frontend/src/locales/sv.json @@ -295,7 +295,8 @@ "email_required": "E-post krävs", "both_passwords_required": "Båda lösenorden krävs", "new_password": "Nytt lösenord", - "reset_failed": "Det gick inte att återställa lösenordet" + "reset_failed": "Det gick inte att återställa lösenordet", + "or_3rd_party": "Eller logga in med en tredjepartstjänst" }, "users": { "no_users_found": "Inga användare hittades med offentliga profiler." @@ -369,7 +370,15 @@ "csrf_failed": "Det gick inte att hämta CSRF-token", "duplicate_email": "Den här e-postadressen används redan.", "email_taken": "Den här e-postadressen används redan.", - "username_taken": "Detta användarnamn används redan." + "username_taken": "Detta användarnamn används redan.", + "administration_settings": "Administrationsinställningar", + "documentation_link": "Dokumentationslänk", + "launch_account_connections": "Starta kontoanslutningar", + "launch_administration_panel": "Starta administrationspanelen", + "no_verified_email_warning": "Du måste ha en verifierad e-postadress för att aktivera tvåfaktorsautentisering.", + "social_auth_desc": "Aktivera eller inaktivera sociala och OIDC-autentiseringsleverantörer för ditt konto. \nDessa anslutningar gör att du kan logga in med leverantörer av autentiseringsidentitetsidentitet som är värd för dig som Authentik eller tredjepartsleverantörer som GitHub.", + "social_auth_desc_2": "Dessa inställningar hanteras i AdventureLog-servern och måste aktiveras manuellt av administratören.", + "social_oidc_auth": "Social och OIDC-autentisering" }, "checklist": { "add_item": "Lägg till objekt", diff --git a/frontend/src/locales/zh.json b/frontend/src/locales/zh.json index 86674c5..d9b5be1 100644 --- a/frontend/src/locales/zh.json +++ b/frontend/src/locales/zh.json @@ -284,7 +284,8 @@ "email_required": "电子邮件为必填项", "both_passwords_required": "两个密码都需要", "new_password": "新密码", - "reset_failed": "重置密码失败" + "reset_failed": "重置密码失败", + "or_3rd_party": "或者使用第三方服务登录" }, "worldtravel": { "all": "全部", @@ -369,7 +370,15 @@ "csrf_failed": "获取 CSRF 令牌失败", "duplicate_email": "该电子邮件地址已被使用。", "email_taken": "该电子邮件地址已被使用。", - "username_taken": "该用户名已被使用。" + "username_taken": "该用户名已被使用。", + "administration_settings": "管理设置", + "documentation_link": "文档链接", + "launch_account_connections": "启动帐户连接", + "launch_administration_panel": "启动管理面板", + "no_verified_email_warning": "您必须拥有经过验证的电子邮件地址才能启用双因素身份验证。", + "social_auth_desc": "为您的帐户启用或禁用社交和 OIDC 身份验证提供商。\n这些连接允许您使用自托管身份验证身份提供商(如 Authentik)或第三方提供商(如 GitHub)登录。", + "social_auth_desc_2": "这些设置在 AdventureLog 服务器中进行管理,并且必须由管理员手动启用。", + "social_oidc_auth": "社交和 OIDC 身份验证" }, "checklist": { "add_item": "添加项目", diff --git a/frontend/src/routes/settings/+page.svelte b/frontend/src/routes/settings/+page.svelte index cdba5c3..245b957 100644 --- a/frontend/src/routes/settings/+page.svelte +++ b/frontend/src/routes/settings/+page.svelte @@ -436,10 +436,12 @@ {#if user.is_staff}
-

Administration Settings

+

+ {$t('settings.administration_settings')} +

Launch Administration Pannel{$t('settings.launch_administration_panel')}
@@ -447,12 +449,10 @@
-

Social and ODIC Authentication

+

{$t('settings.social_oidc_auth')}

- Enable or disable social and OIDC authentication providers for your account. These - connections allow you to sign in with self hosted authentication identity providers like - Authentik or 3rd party providers like GitHub. + {$t('settings.social_auth_desc')}

Launch Account Connections{$t('settings.launch_account_connections')}