|
|
@ -7,12 +7,10 @@ from markdown.extensions.toc import TocExtension
|
|
|
|
from django.http import HttpResponseNotFound
|
|
|
|
from django.http import HttpResponseNotFound
|
|
|
|
from django.shortcuts import render
|
|
|
|
from django.shortcuts import render
|
|
|
|
from django.conf import settings
|
|
|
|
from django.conf import settings
|
|
|
|
from django.utils.translation import ugettext as _, get_language
|
|
|
|
from django.utils.translation import gettext as _, get_language
|
|
|
|
from django import http
|
|
|
|
from django import http
|
|
|
|
from django.utils.http import is_safe_url
|
|
|
|
from django.utils.http import url_has_allowed_host_and_scheme
|
|
|
|
from django.utils.translation import (
|
|
|
|
from django.utils.translation import check_for_language
|
|
|
|
LANGUAGE_SESSION_KEY, check_for_language,
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
from django.template.loader import TemplateDoesNotExist, get_template, select_template
|
|
|
|
from django.template.loader import TemplateDoesNotExist, get_template, select_template
|
|
|
|
from django.template import Template
|
|
|
|
from django.template import Template
|
|
|
|
from django.template.response import TemplateResponse
|
|
|
|
from django.template.response import TemplateResponse
|
|
|
@ -61,17 +59,24 @@ def set_lang(request):
|
|
|
|
""" django.views.i18n.set_language() with GET """
|
|
|
|
""" django.views.i18n.set_language() with GET """
|
|
|
|
|
|
|
|
|
|
|
|
next = request.GET.get('next', request.GET.get('next'))
|
|
|
|
next = request.GET.get('next', request.GET.get('next'))
|
|
|
|
if not is_safe_url(url=next, allowed_hosts={request.get_host()}):
|
|
|
|
if not url_has_allowed_host_and_scheme(url=next, allowed_hosts={request.get_host()}):
|
|
|
|
next = request.META.get('HTTP_REFERER')
|
|
|
|
next = request.META.get('HTTP_REFERER')
|
|
|
|
if not is_safe_url(url=next, allowed_hosts={request.get_host()}):
|
|
|
|
if not url_has_allowed_host_and_scheme(url=next, allowed_hosts={request.get_host()}):
|
|
|
|
next = '/'
|
|
|
|
next = '/'
|
|
|
|
response = http.HttpResponseRedirect(next)
|
|
|
|
response = http.HttpResponseRedirect(next)
|
|
|
|
lang_code = request.GET.get('lang', None)
|
|
|
|
lang_code = request.GET.get('lang', None)
|
|
|
|
if lang_code and check_for_language(lang_code):
|
|
|
|
if lang_code and check_for_language(lang_code):
|
|
|
|
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code,
|
|
|
|
|
|
|
|
max_age=settings.LANGUAGE_COOKIE_AGE,
|
|
|
|
response.set_cookie(
|
|
|
|
path=settings.LANGUAGE_COOKIE_PATH,
|
|
|
|
settings.LANGUAGE_COOKIE_NAME,
|
|
|
|
domain=settings.LANGUAGE_COOKIE_DOMAIN)
|
|
|
|
lang_code,
|
|
|
|
|
|
|
|
max_age=settings.LANGUAGE_COOKIE_AGE,
|
|
|
|
|
|
|
|
path=settings.LANGUAGE_COOKIE_PATH,
|
|
|
|
|
|
|
|
domain=settings.LANGUAGE_COOKIE_DOMAIN,
|
|
|
|
|
|
|
|
secure=settings.LANGUAGE_COOKIE_SECURE,
|
|
|
|
|
|
|
|
httponly=settings.LANGUAGE_COOKIE_HTTPONLY,
|
|
|
|
|
|
|
|
samesite=settings.LANGUAGE_COOKIE_SAMESITE,
|
|
|
|
|
|
|
|
)
|
|
|
|
return response
|
|
|
|
return response
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|