From 51f53b3b122a4b473df60a0dc58fb451a1582cf9 Mon Sep 17 00:00:00 2001 From: Agate Berriot Date: Wed, 31 Aug 2022 15:54:14 +0200 Subject: [PATCH 1/2] django4: replaced deprecated request.is_ajax() call (#68585) --- combo/apps/dashboard/views.py | 3 ++- combo/apps/lingo/views.py | 4 ++-- combo/manager/views.py | 4 ++-- combo/public/views.py | 4 ++-- combo/utils/__init__.py | 2 +- combo/utils/misc.py | 4 ++++ 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/combo/apps/dashboard/views.py b/combo/apps/dashboard/views.py index f7337d5f..945be24e 100644 --- a/combo/apps/dashboard/views.py +++ b/combo/apps/dashboard/views.py @@ -37,6 +37,7 @@ from rest_framework.response import Response from combo.data.models import CellBase, ConfigJsonCell from combo.public.views import render_cell +from combo.utils import is_ajax from .models import DashboardCell, Tile from .templatetags.dashboard import get_cell_data @@ -45,7 +46,7 @@ from .templatetags.dashboard import get_cell_data def dashboard_success(request, dashboard, cell_data): dashboard_url = dashboard.page.get_online_url() - if request.is_ajax(): + if is_ajax(request): return HttpResponse( json.dumps({'err': 0, 'url': request.build_absolute_uri(dashboard_url), 'cell_data': cell_data}), content_type='application/json', diff --git a/combo/apps/lingo/views.py b/combo/apps/lingo/views.py index b6b9a524..90b138d5 100644 --- a/combo/apps/lingo/views.py +++ b/combo/apps/lingo/views.py @@ -49,7 +49,7 @@ from django.views.generic import DetailView, ListView, TemplateView, View from combo.data.models import Page from combo.profile.utils import get_user_from_name_id from combo.public.views import publish_page -from combo.utils import DecryptionError, aes_hex_decrypt, check_request_signature +from combo.utils import DecryptionError, aes_hex_decrypt, check_request_signature, is_ajax from .models import ( EXPIRED, @@ -844,7 +844,7 @@ class ItemView(TemplateView): return {'item': None, 'err_desc': _('No item was found.')} def get_template_names(self): - if self.request.is_ajax: + if is_ajax(self.request): return ['lingo/combo/item.html'] return ['lingo/combo/invoice_fullpage.html'] diff --git a/combo/manager/views.py b/combo/manager/views.py index 11cb2ba4..c0a4400c 100644 --- a/combo/manager/views.py +++ b/combo/manager/views.py @@ -66,7 +66,7 @@ from combo.data.utils import ( import_site_tar, ) from combo.urls_utils import staff_required -from combo.utils.misc import is_portal_agent +from combo.utils.misc import is_ajax, is_portal_agent from .forms import ( CellDuplicateForm, @@ -1043,7 +1043,7 @@ class PageListCellEditLinkView(ManagedPageMixin, UpdateView): return self.model().get_form_class_for_link_list_cell() def form_valid(self, form): - if self.request.is_ajax(): + if is_ajax(self.request): self.object = form.save() response = self.form_invalid(form) # avoid redirection else: diff --git a/combo/public/views.py b/combo/public/views.py index 691d134f..d5e7669a 100644 --- a/combo/public/views.py +++ b/combo/public/views.py @@ -141,7 +141,7 @@ def ajax_page_cell(request, page_pk, cell_reference): action_response = cell.post(request) except PostException as e: exception = e - if not request.is_ajax(): + if not utils.is_ajax(request): messages.error(request, force_str(e) if force_str(e) != 'None' else _('Error sending data.')) if action_response: @@ -152,7 +152,7 @@ def ajax_page_cell(request, page_pk, cell_reference): response['Content-Disposition'] = action_response.headers['Content-Disposition'] return response - if not request.is_ajax(): + if not utils.is_ajax(request): return HttpResponseRedirect(cell.page.get_online_url()) response = render_cell(request, cell) diff --git a/combo/utils/__init__.py b/combo/utils/__init__.py index 65fe6766..12eacba5 100644 --- a/combo/utils/__init__.py +++ b/combo/utils/__init__.py @@ -17,7 +17,7 @@ # import specific symbols for compatibility from .cache import cache_during_request from .crypto import DecryptionError, aes_hex_decrypt, aes_hex_encrypt -from .misc import ellipsize, flatten_context +from .misc import ellipsize, flatten_context, is_ajax from .requests_wrapper import NothingInCacheException, requests from .signature import check_query, check_request_signature, sign_url from .urls import TemplateError, get_templated_url, is_templated_url diff --git a/combo/utils/misc.py b/combo/utils/misc.py index 8ae1a0bd..17694e6a 100644 --- a/combo/utils/misc.py +++ b/combo/utils/misc.py @@ -64,3 +64,7 @@ def is_portal_agent(): if service.get('is-portal-agent') and not service.get('secret'): return True return False + + +def is_ajax(request): + return request.headers.get('x-requested-with') == 'XMLHttpRequest' -- 2.37.2