From e7fe66a93e75f4f036ddeae8abf4e33b71aec42b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jochen=20Wersd=C3=B6rfer?= Date: Tue, 28 Sep 2021 12:34:16 +0200 Subject: [PATCH] replaced removed .is_ajax method with request.headers.get('x-requested-with') == 'XMLHttpRequest'. - https://docs.djangoproject.com/en/3.2/releases/3.1/#id2 > The HttpRequest.is_ajax() method is deprecated as it relied on a jQuery-specific way of signifying AJAX calls, while current usage tends to use the JavaScript Fetch API. Depending on your use case, you can either write your own AJAX detection method, or use the new HttpRequest.accepts() method if your code depends on the client Accept HTTP header. --- wagtail/admin/auth.py | 8 ++++---- wagtail/admin/views/pages/search.py | 2 +- wagtail/admin/views/pages/workflow.py | 6 +++--- wagtail/contrib/redirects/views.py | 2 +- wagtail/contrib/search_promotions/views.py | 2 +- wagtail/core/models/__init__.py | 2 +- wagtail/users/views/groups.py | 2 +- wagtail/users/views/users.py | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) 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,