diff --git a/backend/server/adventures/views.py b/backend/server/adventures/views.py index 1b87e95..2dbb013 100644 --- a/backend/server/adventures/views.py +++ b/backend/server/adventures/views.py @@ -1235,6 +1235,8 @@ class ReverseGeocodeViewSet(viewsets.ViewSet): if serialized_adventure['is_visited'] == True: lat = adventure.latitude lon = adventure.longitude + if not lat or not lon: + continue url = f"https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat={lat}&lon={lon}" headers = {'User-Agent': 'AdventureLog Server'} response = requests.get(url, headers=headers) diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 526a96e..7bc5ba7 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -217,7 +217,8 @@ "to": "Zu", "transportation_delete_confirm": "Sind Sie sicher, dass Sie diesen Transport löschen möchten? \nDiese Aktion kann nicht rückgängig gemacht werden.", "show_map": "Karte anzeigen", - "will_be_marked": "wird als besucht markiert, sobald das Abenteuer gespeichert ist." + "will_be_marked": "wird als besucht markiert, sobald das Abenteuer gespeichert ist.", + "cities_updated": "Städte aktualisiert" }, "home": { "desc_1": "Entdecken, planen und erkunden Sie mit Leichtigkeit", @@ -497,7 +498,8 @@ "member_since": "Mitglied seit", "user_stats": "Benutzerstatistiken", "visited_countries": "Besuchte Länder", - "visited_regions": "Besuchte Regionen" + "visited_regions": "Besuchte Regionen", + "visited_cities": "Besuchte Städte" }, "categories": { "category_name": "Kategoriename", @@ -515,7 +517,8 @@ "recent_adventures": "Aktuelle Abenteuer", "total_adventures": "Totale Abenteuer", "total_visited_regions": "Insgesamt besuchte Regionen", - "welcome_back": "Willkommen zurück" + "welcome_back": "Willkommen zurück", + "total_visited_cities": "Insgesamt besuchte Städte" }, "immich": { "api_key": "Immich-API-Schlüssel", diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index 4e98a1a..c924bd7 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -197,6 +197,7 @@ "mark_visited": "Mark Visited", "error_updating_regions": "Error updating regions", "regions_updated": "regions updated", + "cities_updated": "cities updated", "visited_region_check": "Visited Region Check", "visited_region_check_desc": "By selecting this, the server will check all of your visited adventures and mark the regions they are located in as visited in world travel.", "update_visited_regions": "Update Visited Regions", @@ -497,7 +498,8 @@ "member_since": "Member since", "user_stats": "User Stats", "visited_countries": "Visited Countries", - "visited_regions": "Visited Regions" + "visited_regions": "Visited Regions", + "visited_cities": "Visited Cities" }, "categories": { "manage_categories": "Manage Categories", @@ -513,6 +515,7 @@ "countries_visited": "Countries Visited", "total_adventures": "Total Adventures", "total_visited_regions": "Total Visited Regions", + "total_visited_cities": "Total Visited Cities", "recent_adventures": "Recent Adventures", "no_recent_adventures": "No recent adventures?", "add_some": "Why not start planning your next adventure? You can add a new adventure by clicking the button below." diff --git a/frontend/src/locales/es.json b/frontend/src/locales/es.json index f0a488b..fcf1572 100644 --- a/frontend/src/locales/es.json +++ b/frontend/src/locales/es.json @@ -264,7 +264,8 @@ "to": "A", "transportation_delete_confirm": "¿Está seguro de que desea eliminar este transporte? \nEsta acción no se puede deshacer.", "show_map": "Mostrar mapa", - "will_be_marked": "se marcará como visitado una vez guardada la aventura." + "will_be_marked": "se marcará como visitado una vez guardada la aventura.", + "cities_updated": "ciudades actualizadas" }, "worldtravel": { "all": "Todo", @@ -497,7 +498,8 @@ "member_since": "Miembro desde", "user_stats": "Estadísticas de usuario", "visited_countries": "Países visitados", - "visited_regions": "Regiones visitadas" + "visited_regions": "Regiones visitadas", + "visited_cities": "Ciudades Visitadas" }, "categories": { "category_name": "Nombre de categoría", @@ -515,7 +517,8 @@ "recent_adventures": "Aventuras recientes", "total_adventures": "Aventuras totales", "total_visited_regions": "Total de regiones visitadas", - "welcome_back": "Bienvenido de nuevo" + "welcome_back": "Bienvenido de nuevo", + "total_visited_cities": "Total de ciudades visitadas" }, "immich": { "api_key": "Clave API de Immich", diff --git a/frontend/src/locales/fr.json b/frontend/src/locales/fr.json index d793779..a4206b3 100644 --- a/frontend/src/locales/fr.json +++ b/frontend/src/locales/fr.json @@ -217,7 +217,8 @@ "to": "À", "transportation_delete_confirm": "Etes-vous sûr de vouloir supprimer ce transport ? \nCette action ne peut pas être annulée.", "show_map": "Afficher la carte", - "will_be_marked": "sera marqué comme visité une fois l’aventure sauvegardée." + "will_be_marked": "sera marqué comme visité une fois l’aventure sauvegardée.", + "cities_updated": "villes mises à jour" }, "home": { "desc_1": "Découvrez, planifiez et explorez en toute simplicité", @@ -497,7 +498,8 @@ "member_since": "Membre depuis", "user_stats": "Statistiques des utilisateurs", "visited_countries": "Pays visités", - "visited_regions": "Régions visitées" + "visited_regions": "Régions visitées", + "visited_cities": "Villes visitées" }, "categories": { "category_name": "Nom de la catégorie", @@ -515,7 +517,8 @@ "recent_adventures": "Aventures récentes", "total_adventures": "Aventures totales", "total_visited_regions": "Total des régions visitées", - "welcome_back": "Content de te revoir" + "welcome_back": "Content de te revoir", + "total_visited_cities": "Total des villes visitées" }, "immich": { "api_key": "Clé API Immich", diff --git a/frontend/src/locales/it.json b/frontend/src/locales/it.json index 85bb8ca..b7abe9e 100644 --- a/frontend/src/locales/it.json +++ b/frontend/src/locales/it.json @@ -217,7 +217,8 @@ "to": "A", "transportation_delete_confirm": "Sei sicuro di voler eliminare questo trasporto? \nQuesta azione non può essere annullata.", "show_map": "Mostra mappa", - "will_be_marked": "verrà contrassegnato come visitato una volta salvata l'avventura." + "will_be_marked": "verrà contrassegnato come visitato una volta salvata l'avventura.", + "cities_updated": "città aggiornate" }, "home": { "desc_1": "Scopri, pianifica ed esplora con facilità", @@ -497,7 +498,8 @@ "member_since": "Membro da allora", "user_stats": "Statistiche utente", "visited_countries": "Paesi visitati", - "visited_regions": "Regioni visitate" + "visited_regions": "Regioni visitate", + "visited_cities": "Città visitate" }, "categories": { "category_name": "Nome della categoria", @@ -515,7 +517,8 @@ "recent_adventures": "Avventure recenti", "total_adventures": "Avventure totali", "total_visited_regions": "Totale regioni visitate", - "welcome_back": "Bentornato" + "welcome_back": "Bentornato", + "total_visited_cities": "Totale città visitate" }, "immich": { "api_key": "Chiave API Immich", diff --git a/frontend/src/locales/nl.json b/frontend/src/locales/nl.json index 30660fa..5ea896d 100644 --- a/frontend/src/locales/nl.json +++ b/frontend/src/locales/nl.json @@ -217,7 +217,8 @@ "transportation_delete_confirm": "Weet u zeker dat u dit transport wilt verwijderen? \nDeze actie kan niet ongedaan worden gemaakt.", "ending_airport": "Einde luchthaven", "show_map": "Toon kaart", - "will_be_marked": "wordt gemarkeerd als bezocht zodra het avontuur is opgeslagen." + "will_be_marked": "wordt gemarkeerd als bezocht zodra het avontuur is opgeslagen.", + "cities_updated": "steden bijgewerkt" }, "home": { "desc_1": "Ontdek, plan en verken met gemak", @@ -497,7 +498,8 @@ "member_since": "Lid sinds", "user_stats": "Gebruikersstatistieken", "visited_countries": "Bezochte landen", - "visited_regions": "Bezochte regio's" + "visited_regions": "Bezochte regio's", + "visited_cities": "Steden bezocht" }, "categories": { "category_name": "Categorienaam", @@ -515,7 +517,8 @@ "recent_adventures": "Recente avonturen", "total_adventures": "Totale avonturen", "total_visited_regions": "Totaal bezochte regio's", - "welcome_back": "Welkom terug" + "welcome_back": "Welkom terug", + "total_visited_cities": "Totaal bezochte steden" }, "immich": { "api_key": "Immich API-sleutel", diff --git a/frontend/src/locales/pl.json b/frontend/src/locales/pl.json index d70b73e..e6422d3 100644 --- a/frontend/src/locales/pl.json +++ b/frontend/src/locales/pl.json @@ -264,7 +264,8 @@ "to": "Do", "transportation_delete_confirm": "Czy na pewno chcesz usunąć ten transport? \nTej akcji nie można cofnąć.", "show_map": "Pokaż mapę", - "will_be_marked": "zostanie oznaczona jako odwiedzona po zapisaniu przygody." + "will_be_marked": "zostanie oznaczona jako odwiedzona po zapisaniu przygody.", + "cities_updated": "miasta zaktualizowane" }, "worldtravel": { "country_list": "Lista krajów", @@ -497,7 +498,8 @@ "member_since": "Użytkownik od", "user_stats": "Statystyki użytkownika", "visited_countries": "Odwiedzone kraje", - "visited_regions": "Odwiedzone regiony" + "visited_regions": "Odwiedzone regiony", + "visited_cities": "Odwiedzone miasta" }, "categories": { "manage_categories": "Zarządzaj kategoriami", @@ -515,7 +517,8 @@ "recent_adventures": "Ostatnie przygody", "total_adventures": "Totalne przygody", "total_visited_regions": "Łączna liczba odwiedzonych regionów", - "welcome_back": "Witamy z powrotem" + "welcome_back": "Witamy z powrotem", + "total_visited_cities": "Łączna liczba odwiedzonych miast" }, "immich": { "api_key": "Klucz API Immicha", diff --git a/frontend/src/locales/sv.json b/frontend/src/locales/sv.json index c9afb14..e5367c5 100644 --- a/frontend/src/locales/sv.json +++ b/frontend/src/locales/sv.json @@ -217,7 +217,8 @@ "to": "Till", "transportation_delete_confirm": "Är du säker på att du vill ta bort denna transport? \nDenna åtgärd kan inte ångras.", "show_map": "Visa karta", - "will_be_marked": "kommer att markeras som besökt när äventyret har sparats." + "will_be_marked": "kommer att markeras som besökt när äventyret har sparats.", + "cities_updated": "städer uppdaterade" }, "home": { "desc_1": "Upptäck, planera och utforska med lätthet", @@ -497,7 +498,8 @@ "member_since": "Medlem sedan", "user_stats": "Användarstatistik", "visited_countries": "Besökta länder", - "visited_regions": "Besökta regioner" + "visited_regions": "Besökta regioner", + "visited_cities": "Besökte städer" }, "categories": { "category_name": "Kategorinamn", @@ -515,7 +517,8 @@ "recent_adventures": "Senaste äventyr", "total_adventures": "Totala äventyr", "total_visited_regions": "Totalt antal besökta regioner", - "welcome_back": "Välkommen tillbaka" + "welcome_back": "Välkommen tillbaka", + "total_visited_cities": "Totalt antal besökta städer" }, "immich": { "api_key": "Immich API-nyckel", diff --git a/frontend/src/locales/zh.json b/frontend/src/locales/zh.json index 99a5fad..d98383b 100644 --- a/frontend/src/locales/zh.json +++ b/frontend/src/locales/zh.json @@ -217,7 +217,8 @@ "to": "到", "transportation_delete_confirm": "您确定要删除此交通工具吗?\n此操作无法撤消。", "show_map": "显示地图", - "will_be_marked": "保存冒险后将被标记为已访问。" + "will_be_marked": "保存冒险后将被标记为已访问。", + "cities_updated": "城市已更新" }, "home": { "desc_1": "轻松发现、规划和探索", @@ -497,7 +498,8 @@ "member_since": "会员自", "user_stats": "用户统计", "visited_countries": "访问过的国家", - "visited_regions": "访问地区" + "visited_regions": "访问地区", + "visited_cities": "访问城市" }, "categories": { "category_name": "类别名称", @@ -515,7 +517,8 @@ "recent_adventures": "最近的冒险", "total_adventures": "全面冒险", "total_visited_regions": "总访问地区", - "welcome_back": "欢迎回来" + "welcome_back": "欢迎回来", + "total_visited_cities": "访问城市总数" }, "immich": { "api_key": "伊米奇 API 密钥", diff --git a/frontend/src/routes/dashboard/+page.svelte b/frontend/src/routes/dashboard/+page.svelte index 43c32d2..b015fa8 100644 --- a/frontend/src/routes/dashboard/+page.svelte +++ b/frontend/src/routes/dashboard/+page.svelte @@ -8,6 +8,7 @@ import FlagCheckeredVariantIcon from '~icons/mdi/flag-checkered-variant'; import Airplane from '~icons/mdi/airplane'; import CityVariantOutline from '~icons/mdi/city-variant-outline'; + import MapMarkerStarOutline from '~icons/mdi/map-marker-star-outline'; const user = data.user; const recentAdventures = data.props.adventures; @@ -26,13 +27,6 @@