feat: Support timezone and language query params

Support setting the timezone as well as the language via query params:
The timezone parameter previously only worked on certain pages.
While we're at it, let's also add the language as a param.
Refactor code for timezone and language functions.
Remove unused AURTZ cookie.

Signed-off-by: moson <moson@archlinux.org>
This commit is contained in:
moson 2023-10-19 18:41:06 +02:00
parent 933654fcbb
commit 5d302ae00c
No known key found for this signature in database
GPG key ID: 4A4760AB4EE15296
5 changed files with 89 additions and 33 deletions

View file

@ -1,5 +1,5 @@
""" Test our l10n module. """
from aurweb import filters, l10n
from aurweb import config, filters, l10n
from aurweb.testing.requests import Request
@ -10,13 +10,55 @@ def test_translator():
def test_get_request_language():
"""First, tests default_lang, then tests a modified AURLANG cookie."""
"""Test getting the language setting from a request."""
# Default language
default_lang = config.get("options", "default_lang")
request = Request()
assert l10n.get_request_language(request) == "en"
assert l10n.get_request_language(request) == default_lang
# Language setting from cookie: de
request.cookies["AURLANG"] = "de"
assert l10n.get_request_language(request) == "de"
# Language setting from cookie: nonsense
# Should fallback to default lang
request.cookies["AURLANG"] = "nonsense"
assert l10n.get_request_language(request) == default_lang
# Language setting from query param: de
request.cookies = {}
request.query_params = {"language": "de"}
assert l10n.get_request_language(request) == "de"
# Language setting from query param: nonsense
# Should fallback to default lang
request.query_params = {"language": "nonsense"}
assert l10n.get_request_language(request) == default_lang
# Language setting from query param: de and cookie
# Query param should have precedence
request.query_params = {"language": "de"}
request.cookies["AURLANG"] = "fr"
assert l10n.get_request_language(request) == "de"
# Language setting from authenticated user
request.cookies = {}
request.query_params = {}
request.user.authenticated = True
request.user.LangPreference = "de"
assert l10n.get_request_language(request) == "de"
# Language setting from authenticated user with query param
# Query param should have precedence
request.query_params = {"language": "fr"}
assert l10n.get_request_language(request) == "fr"
# Language setting from authenticated user with cookie
# DB setting should have precedence
request.query_params = {}
request.cookies["AURLANG"] = "fr"
assert l10n.get_request_language(request) == "de"
def test_get_raw_translator_for_request():
"""Make sure that get_raw_translator_for_request is giving us