mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-15 02:33:13 +00:00
https://bitbucket.org/tkhyn/l18n/issues/4/setuppy-raises-unicodedecodeerror-trying prevents the l18n library from being installed on certain setups with non-Unicode locales: https://groups.google.com/d/msg/wagtail/X5d8CL3DxUs/httaLso4DAAJ As a temporary measure until a fixed version of l18n is released, bundle the library into wagtail.utils.l18n.
41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
from django.contrib.auth.views import redirect_to_login as auth_redirect_to_login
|
|
from django.core.exceptions import PermissionDenied
|
|
from django.urls import reverse
|
|
from django.utils.timezone import activate as activate_tz
|
|
from django.utils.translation import activate as activate_lang
|
|
from django.utils.translation import ugettext as _
|
|
|
|
from wagtail.admin import messages
|
|
from wagtail.utils import l18n
|
|
|
|
|
|
def reject_request(request):
|
|
if request.is_ajax():
|
|
raise PermissionDenied
|
|
|
|
return auth_redirect_to_login(
|
|
request.get_full_path(), login_url=reverse('wagtailadmin_login'))
|
|
|
|
|
|
def require_admin_access(view_func):
|
|
def decorated_view(request, *args, **kwargs):
|
|
user = request.user
|
|
|
|
if user.is_anonymous:
|
|
return reject_request(request)
|
|
|
|
if user.has_perms(['wagtailadmin.access_admin']):
|
|
if hasattr(user, 'wagtail_userprofile'):
|
|
language = user.wagtail_userprofile.get_preferred_language()
|
|
l18n.set_language(language)
|
|
activate_lang(language)
|
|
time_zone = user.wagtail_userprofile.get_current_time_zone()
|
|
activate_tz(time_zone)
|
|
return view_func(request, *args, **kwargs)
|
|
|
|
if not request.is_ajax():
|
|
messages.error(request, _('You do not have permission to access the admin'))
|
|
|
|
return reject_request(request)
|
|
|
|
return decorated_view
|