return user to page they came from on language change
This commit is contained in:
parent
4d8cc8b989
commit
d49dd06f74
2 changed files with 10 additions and 2 deletions
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
<form action="{{ request.path }}" method="post">
|
<form action="{{ request.path }}" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input name="next" type="hidden" value="{% url 'site.index' %}" />
|
<input name="next" type="hidden" value="{{ next_url }}" />
|
||||||
{% get_current_language as CURRENT_LANGUAGE %}
|
{% get_current_language as CURRENT_LANGUAGE %}
|
||||||
{% get_available_languages as LANGUAGES %}
|
{% get_available_languages as LANGUAGES %}
|
||||||
<select name="language">
|
<select name="language">
|
||||||
|
|
|
@ -20,6 +20,7 @@ from django.shortcuts import get_object_or_404, redirect, render
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.html import format_html
|
from django.utils.html import format_html
|
||||||
|
from django.utils.http import url_has_allowed_host_and_scheme
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.utils.translation import ngettext_lazy
|
from django.utils.translation import ngettext_lazy
|
||||||
from django.views.decorators.cache import cache_control, never_cache
|
from django.views.decorators.cache import cache_control, never_cache
|
||||||
|
@ -475,12 +476,19 @@ if settings.METRICS:
|
||||||
|
|
||||||
|
|
||||||
def choose_language(request):
|
def choose_language(request):
|
||||||
|
next_url = request.GET.get("next", request.META.get("HTTP_REFERER"))
|
||||||
|
if not url_has_allowed_host_and_scheme(
|
||||||
|
url=next_url,
|
||||||
|
allowed_hosts={request.get_host()},
|
||||||
|
require_https=request.is_secure(),
|
||||||
|
):
|
||||||
|
next_url = reverse('site.index')
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
lang_code = request.POST.get(LANGUAGE_QUERY_PARAMETER)
|
lang_code = request.POST.get(LANGUAGE_QUERY_PARAMETER)
|
||||||
if language_change_counter:
|
if language_change_counter:
|
||||||
language_change_counter.labels(lang_code).inc()
|
language_change_counter.labels(lang_code).inc()
|
||||||
return set_language(request)
|
return set_language(request)
|
||||||
return render(request, 'site/language.html', {})
|
return render(request, 'site/language.html', {'next_url': next_url})
|
||||||
|
|
||||||
|
|
||||||
@never_cache
|
@never_cache
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue