From d04433276bf585a849882f6be00e7a5b5cd020a7 Mon Sep 17 00:00:00 2001 From: Tom Teichler <tom.teichler@teckids.org> Date: Wed, 11 Nov 2020 08:01:22 +0100 Subject: [PATCH] Allow site local configuration of available languages. Closes #261. --- aleksis/core/preferences.py | 10 ++++++++++ .../core/templates/core/partials/language_form.html | 4 ++-- aleksis/core/templatetags/data_helpers.py | 9 +++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/aleksis/core/preferences.py b/aleksis/core/preferences.py index 890801b67..93d1cda41 100644 --- a/aleksis/core/preferences.py +++ b/aleksis/core/preferences.py @@ -22,6 +22,7 @@ notification = Section("notification") footer = Section("footer") account = Section("account") auth = Section("auth", verbose_name=_("Authentication")) +internationalization = Section("internationalization", verbose_name=_("Internationalization")) @site_preferences_registry.register @@ -196,3 +197,12 @@ class AuthenticationBackends(MultipleChoicePreference): def get_choices(self): return [(b, b) for b in settings.CUSTOM_AUTHENTICATION_BACKENDS] + +@site_preferences_registry.register +class AvailableLanguages(MultipleChoicePreference): + section = internationalization + name = "languages" + default = None + verbose_name = _("Available languages") + field_attribute = {"initial": []} + choices = settings.LANGUAGES diff --git a/aleksis/core/templates/core/partials/language_form.html b/aleksis/core/templates/core/partials/language_form.html index 36ffa81a8..15ad9ccf4 100644 --- a/aleksis/core/templates/core/partials/language_form.html +++ b/aleksis/core/templates/core/partials/language_form.html @@ -1,6 +1,6 @@ {# -*- engine:django -*- #} -{% load i18n %} +{% load i18n data_helpers %} <form action="{% url 'set_language' %}" method="post" class="language-form"> @@ -8,7 +8,7 @@ <input name="next" type="hidden" value="{{ request.get_full_path }}"> {% get_current_language as LANGUAGE_CODE %} - {% get_available_languages as LANGUAGES %} + {% get_enabled_languages as LANGUAGES %} {% get_language_info_list for LANGUAGES as languages %} {# Select #} diff --git a/aleksis/core/templatetags/data_helpers.py b/aleksis/core/templatetags/data_helpers.py index ab2309f26..a97ee61c0 100644 --- a/aleksis/core/templatetags/data_helpers.py +++ b/aleksis/core/templatetags/data_helpers.py @@ -5,6 +5,8 @@ from django import template from django.contrib.contenttypes.models import ContentType from django.db.models import Model +from aleksis.core.util.core_helpers import get_site_preferences + register = template.Library() @@ -51,3 +53,10 @@ def parse_json(value: Optional[str] = None) -> Union[dict, None]: if not value: return None return json.loads(value) + + +@register.simple_tag +def get_enabled_languages() -> Any: + """Template tag to get all available languages configured in settings.""" + + return get_site_preferences()["internationalization__languages"] -- GitLab