diff --git a/wagtail/admin/auth.py b/wagtail/admin/auth.py index ffc8d35d7a..a549d7f661 100644 --- a/wagtail/admin/auth.py +++ b/wagtail/admin/auth.py @@ -35,7 +35,7 @@ def users_with_page_permission(page, permission_type, include_superusers=True): def permission_denied(request): """Return a standard 'permission denied' response""" - if request.is_ajax(): + if request.headers.get('x-requested-with') == 'XMLHttpRequest': raise PermissionDenied from wagtail.admin import messages @@ -141,7 +141,7 @@ def user_has_any_page_permission(user): def reject_request(request): - if request.is_ajax(): + if request.headers.get('x-requested-with') == 'XMLHttpRequest': raise PermissionDenied # import redirect_to_login here to avoid circular imports on model files that import @@ -193,12 +193,12 @@ def require_admin_access(view_func): return view_func(request, *args, **kwargs) except PermissionDenied: - if request.is_ajax(): + if request.headers.get('x-requested-with') == 'XMLHttpRequest': raise return permission_denied(request) - if not request.is_ajax(): + 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) diff --git a/wagtail/admin/views/pages/search.py b/wagtail/admin/views/pages/search.py index 9d8d05f986..eb6e02c2ac 100644 --- a/wagtail/admin/views/pages/search.py +++ b/wagtail/admin/views/pages/search.py @@ -93,7 +93,7 @@ def search(request): paginator = Paginator(pages, per_page=20) pages = paginator.get_page(request.GET.get('p')) - if request.is_ajax(): + if request.headers.get('x-requested-with') == 'XMLHttpRequest': return TemplateResponse(request, "wagtailadmin/pages/search_results.html", { 'pages': pages, 'all_pages': all_pages, diff --git a/wagtail/admin/views/pages/workflow.py b/wagtail/admin/views/pages/workflow.py index 0223cdcde8..6c8faff11e 100644 --- a/wagtail/admin/views/pages/workflow.py +++ b/wagtail/admin/views/pages/workflow.py @@ -88,13 +88,13 @@ class WorkflowAction(BaseWorkflowFormView): form = self.form_class(request.POST) if form.is_valid(): redirect_to = self.task.on_action(self.task_state, request.user, self.action_name, **form.cleaned_data) or self.redirect_to - elif self.action_modal and request.is_ajax(): + elif self.action_modal and request.headers.get('x-requested-with') == 'XMLHttpRequest': # show form errors return self.render_modal_form(request, form) else: redirect_to = self.task.on_action(self.task_state, request.user, self.action_name) or self.redirect_to - if request.is_ajax(): + if request.headers.get('x-requested-with') == 'XMLHttpRequest': return render_modal_workflow(request, '', None, {}, json_data={'step': 'success', 'redirect': redirect_to}) return redirect(redirect_to) @@ -113,7 +113,7 @@ class CollectWorkflowActionData(BaseWorkflowFormView): form = self.form_class(request.POST) if form.is_valid(): return render_modal_workflow(request, '', None, {}, json_data={'step': 'success', 'cleaned_data': form.cleaned_data}) - elif self.action_modal and request.is_ajax(): + elif self.action_modal and request.headers.get('x-requested-with') == 'XMLHttpRequest': # show form errors return self.render_modal_form(request, form) diff --git a/wagtail/contrib/redirects/views.py b/wagtail/contrib/redirects/views.py index 0c765fa1f4..8502bfb130 100644 --- a/wagtail/contrib/redirects/views.py +++ b/wagtail/contrib/redirects/views.py @@ -54,7 +54,7 @@ def index(request): redirects = paginator.get_page(request.GET.get('p')) # Render template - if request.is_ajax(): + if request.headers.get('x-requested-with') == 'XMLHttpRequest': return TemplateResponse(request, "wagtailredirects/results.html", { 'ordering': ordering, 'redirects': redirects, diff --git a/wagtail/contrib/search_promotions/views.py b/wagtail/contrib/search_promotions/views.py index 48be21a0c4..664a5ba53a 100644 --- a/wagtail/contrib/search_promotions/views.py +++ b/wagtail/contrib/search_promotions/views.py @@ -48,7 +48,7 @@ def index(request): paginator = Paginator(queries, per_page=20) queries = paginator.get_page(request.GET.get('p')) - if request.is_ajax(): + if request.headers.get('x-requested-with') == 'XMLHttpRequest': return TemplateResponse(request, "wagtailsearchpromotions/results.html", { 'is_searching': is_searching, 'ordering': ordering, diff --git a/wagtail/core/models/__init__.py b/wagtail/core/models/__init__.py index 62fbce294e..d9ce1d07a0 100644 --- a/wagtail/core/models/__init__.py +++ b/wagtail/core/models/__init__.py @@ -1102,7 +1102,7 @@ class Page(AbstractPage, index.Indexed, ClusterableModel, metaclass=PageBase): return context def get_template(self, request, *args, **kwargs): - if request.is_ajax(): + if request.headers.get('x-requested-with') == 'XMLHttpRequest': return self.ajax_template or self.template else: return self.template diff --git a/wagtail/users/views/groups.py b/wagtail/users/views/groups.py index d28b1914ff..414184082b 100644 --- a/wagtail/users/views/groups.py +++ b/wagtail/users/views/groups.py @@ -61,7 +61,7 @@ class IndexView(mixins.SearchableListMixin, generic.IndexView): ordering = ['name'] def get_template_names(self): - if self.request.is_ajax(): + if self.request.headers.get('x-requested-with') == 'XMLHttpRequest': return ['wagtailusers/groups/results.html'] else: return ['wagtailusers/groups/index.html'] diff --git a/wagtail/users/views/users.py b/wagtail/users/views/users.py index bde0411f1d..37bb1bf51d 100644 --- a/wagtail/users/views/users.py +++ b/wagtail/users/views/users.py @@ -101,7 +101,7 @@ def index(request, *args): paginator = Paginator(users.select_related('wagtail_userprofile'), per_page=20) users = paginator.get_page(request.GET.get('p')) - if request.is_ajax(): + if request.headers.get('x-requested-with') == 'XMLHttpRequest': return TemplateResponse(request, "wagtailusers/users/results.html", { 'users': users, 'is_searching': is_searching,