Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)