Update language on login and edit preference

This commit is contained in:
Mouse Reeve 2021-10-06 13:01:29 -07:00
parent c0af69045c
commit 26de524247
4 changed files with 17 additions and 5 deletions

View file

@ -30,6 +30,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
LOCALE_PATHS = [
os.path.join(BASE_DIR, "locale"),
]
LANGUAGE_COOKIE_NAME = env.str("LANGUAGE_COOKIE_NAME", "django_language")
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"

View file

@ -7,8 +7,9 @@ from dateutil.parser import ParserError
from requests import HTTPError
from django.http import Http404
from django.utils import translation
from bookwyrm import activitypub, models
from bookwyrm import activitypub, models, settings
from bookwyrm.connectors import ConnectorException, get_data
from bookwyrm.status import create_generated_note
from bookwyrm.utils import regex
@ -144,3 +145,11 @@ def load_date_in_user_tz_as_utc(date_str: str, user: models.User) -> datetime:
return date.replace(tzinfo=user_tz).astimezone(dateutil.tz.UTC)
except ParserError:
return None
def set_language(user, response):
"""Updates a user's language"""
if user.preferred_language:
translation.activate(user.preferred_language)
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, user.preferred_language)
return response

View file

@ -11,6 +11,7 @@ from django.views.decorators.debug import sensitive_variables, sensitive_post_pa
from bookwyrm import forms, models
from bookwyrm.settings import DOMAIN
from bookwyrm.views.helpers import set_language
# pylint: disable=no-self-use
@ -55,8 +56,8 @@ class Login(View):
login(request, user)
user.update_active_date()
if request.POST.get("first_login"):
return redirect("get-started-profile")
return redirect(request.GET.get("next", "/"))
return set_language(user, redirect("get-started-profile"))
return set_language(user, redirect(request.GET.get("next", "/")))
# maybe the user is pending email confirmation
if models.User.objects.filter(

View file

@ -11,6 +11,7 @@ from django.utils.decorators import method_decorator
from django.views import View
from bookwyrm import forms
from bookwyrm.views.helpers import set_language
# pylint: disable=no-self-use
@ -33,9 +34,9 @@ class EditUser(View):
data = {"form": form, "user": request.user}
return TemplateResponse(request, "preferences/edit_user.html", data)
save_user_form(form)
user = save_user_form(form)
return redirect("user-feed", request.user.localname)
return set_language(user, redirect("user-feed", request.user.localname))
def save_user_form(form):