From 55298ea9d873ba842942eec1204fc6f95dcab581 Mon Sep 17 00:00:00 2001 From: gpetrak Date: Thu, 2 Jul 2026 16:28:00 +0300 Subject: [PATCH 1/2] moving the logic of PROFILE_LANGUAGE_CHOICES to a helper function (cherry picked from commit 79f1616c49793dee01bd6d97c1956e7a0b976a4c) --- geonode/people/forms/__init__.py | 5 +++-- geonode/people/tests.py | 4 ---- geonode/people/utils.py | 8 ++++++++ geonode/people/views.py | 4 ++-- geonode/settings.py | 3 --- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/geonode/people/forms/__init__.py b/geonode/people/forms/__init__.py index 9e7fefb9e14..8b9a17306d7 100644 --- a/geonode/people/forms/__init__.py +++ b/geonode/people/forms/__init__.py @@ -23,7 +23,8 @@ from django.contrib.auth import get_user_model from django.contrib.auth.forms import UserCreationForm, UserChangeForm from django.utils.translation import gettext_lazy as _ -from django.conf import settings + +from geonode.people.utils import get_profile_language_choices # Ported in from django-registration attrs_dict = {"class": "required"} @@ -52,7 +53,7 @@ class ProfileForm(forms.ModelForm): language = forms.ChoiceField( label=_("Language"), - choices=settings.PROFILE_LANGUAGE_CHOICES, + choices=get_profile_language_choices, ) class Meta: diff --git a/geonode/people/tests.py b/geonode/people/tests.py index 9de1027e568..6fc29ae6068 100644 --- a/geonode/people/tests.py +++ b/geonode/people/tests.py @@ -1361,10 +1361,6 @@ def test_authenticated_user_language_switch_updates_session_and_db(self): ("en-us", "English"), ("it-it", "Italiano"), ), - PROFILE_LANGUAGE_CHOICES=( - ("en", "English"), - ("it", "Italiano"), - ), ) def test_authenticated_user_language_switch_stores_profile_code_from_runtime_code(self): user = get_user_model().objects.get(username="bobby") diff --git a/geonode/people/utils.py b/geonode/people/utils.py index 8a4ed64a07f..c16636ed760 100644 --- a/geonode/people/utils.py +++ b/geonode/people/utils.py @@ -246,3 +246,11 @@ def runtime_to_profile_lang(lang): return None return lang.lower().split("-")[0] + + +def get_profile_language_choices(): + """ + Build the list of DB-based (2-char) language choices from the currently + configured settings.LANGUAGES + """ + return tuple((code.split("-")[0].lower(), label) for code, label in settings.LANGUAGES) diff --git a/geonode/people/views.py b/geonode/people/views.py index 476d2606473..6500c009fe8 100644 --- a/geonode/people/views.py +++ b/geonode/people/views.py @@ -33,7 +33,7 @@ from geonode.tasks.tasks import send_email from geonode.people.forms import ProfileForm -from geonode.people.utils import get_available_users, runtime_to_profile_lang +from geonode.people.utils import get_available_users, get_profile_language_choices, runtime_to_profile_lang from geonode.base.auth import get_or_create_token from geonode.people.forms import ForgotUsernameForm from geonode.base.views import user_and_group_permission @@ -178,7 +178,7 @@ def set_session_language(request): raw_lang = request.POST.get("language") profile_lang = runtime_to_profile_lang(raw_lang) - if profile_lang in {code for code, _label in settings.PROFILE_LANGUAGE_CHOICES}: + if profile_lang in {code for code, _label in get_profile_language_choices()}: request.session[SESSION_LANG_KEY] = profile_lang is_read_only = Configuration.load().read_only diff --git a/geonode/settings.py b/geonode/settings.py index 5d9cef9b746..1c61d67699a 100644 --- a/geonode/settings.py +++ b/geonode/settings.py @@ -1436,9 +1436,6 @@ def get_geonode_catalogue_service(): else: LANGUAGES = MAPSTORE_DEFAULT_LANGUAGES - # This setting includes supported Maptstore language choices in a DB-based format - PROFILE_LANGUAGE_CHOICES = tuple((code.split("-")[0].lower(), label) for code, label in LANGUAGES) - # The default mapstore client compiles the translations json files in the /static/mapstore directory # gn-translations are the custom translations for the client and ms-translations are the translations from the core framework MAPSTORE_TRANSLATIONS_PATH = os.environ.get( From 6a2641535521fa9f9104033d853e8de86e5c79d8 Mon Sep 17 00:00:00 2001 From: gpetrak Date: Mon, 6 Jul 2026 10:55:11 +0300 Subject: [PATCH 2/2] cover the case of duplicated languages (cherry picked from commit 6858982d9cef264a1b5ddad889bd926aea3dce0d) --- geonode/people/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geonode/people/utils.py b/geonode/people/utils.py index c16636ed760..449b4ca5bec 100644 --- a/geonode/people/utils.py +++ b/geonode/people/utils.py @@ -253,4 +253,4 @@ def get_profile_language_choices(): Build the list of DB-based (2-char) language choices from the currently configured settings.LANGUAGES """ - return tuple((code.split("-")[0].lower(), label) for code, label in settings.LANGUAGES) + return tuple({code.split("-")[0].lower(): label for code, label in settings.LANGUAGES}.items())