def decorated_view(request, *args, **kwargs): user = request.user if user.is_anonymous: return reject_request(request) if user.has_perms(['wagtailadmin.access_admin']): preferred_language = None if hasattr(user, 'wagtail_userprofile'): preferred_language = user.wagtail_userprofile.get_preferred_language( ) l18n.set_language(preferred_language) time_zone = user.wagtail_userprofile.get_current_time_zone() activate_tz(time_zone) if preferred_language: with override(preferred_language): return view_func(request, *args, **kwargs) else: 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)
def decorated_view(request, *args, **kwargs): user = request.user if user.is_anonymous: return reject_request(request) if user.has_perms(['wagtailadmin.access_admin']): try: preferred_language = None if hasattr(user, 'wagtail_userprofile'): preferred_language = user.wagtail_userprofile.get_preferred_language( ) l18n.set_language(preferred_language) time_zone = user.wagtail_userprofile.get_current_time_zone( ) activate_tz(time_zone) with LogContext(user=user): if preferred_language: with override(preferred_language): response = view_func(request, *args, **kwargs) if hasattr(response, "render"): # If the response has a render() method, Django treats it # like a TemplateResponse, so we should do the same # In this case, we need to guarantee that when the TemplateResponse # is rendered, it is done within the override context manager # or the user preferred_language will not be used # (this could be replaced with simply rendering the TemplateResponse # for simplicity but this does remove some of its middleware modification # potential) render = response.render def overridden_render(response): with override(preferred_language): return render() response.render = types.MethodType( overridden_render, response) # decorate the response render method with the override context manager return response else: return view_func(request, *args, **kwargs) except PermissionDenied: if request.headers.get('x-requested-with') == 'XMLHttpRequest': raise return permission_denied(request) if not request.headers.get('x-requested-with') == 'XMLHttpRequest': messages.error(request, _('You do not have permission to access the admin')) return reject_request(request)
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)