diff --git a/ietf/community/views.py b/ietf/community/views.py index b0646424a..054bed302 100644 --- a/ietf/community/views.py +++ b/ietf/community/views.py @@ -22,6 +22,7 @@ from ietf.community.utils import docs_tracked_by_community_list, docs_matching_c from ietf.community.utils import states_of_significant_change, reset_name_contains_index_for_rule from ietf.doc.models import DocEvent, Document from ietf.doc.utils_search import prepare_document_table +from ietf.utils.http import is_ajax from ietf.utils.response import permission_denied def view_list(request, username=None): @@ -142,7 +143,7 @@ def track_document(request, name, username=None, acronym=None): if not doc in clist.added_docs.all(): clist.added_docs.add(doc) - if request.is_ajax(): + if is_ajax(request): return HttpResponse(json.dumps({ 'success': True }), content_type='application/json') else: return HttpResponseRedirect(clist.get_absolute_url()) @@ -162,7 +163,7 @@ def untrack_document(request, name, username=None, acronym=None): if clist.pk is not None: clist.added_docs.remove(doc) - if request.is_ajax(): + if is_ajax(request): return HttpResponse(json.dumps({ 'success': True }), content_type='application/json') else: return HttpResponseRedirect(clist.get_absolute_url()) diff --git a/ietf/doc/views_review.py b/ietf/doc/views_review.py index a13e9eb08..2d09c928b 100644 --- a/ietf/doc/views_review.py +++ b/ietf/doc/views_review.py @@ -53,6 +53,7 @@ from ietf.utils.textupload import get_cleaned_text_file_content from ietf.utils.mail import send_mail_message from ietf.mailtrigger.utils import gather_address_lists from ietf.utils.fields import MultiEmailField +from ietf.utils.http import is_ajax from ietf.utils.response import permission_denied from ietf.utils.timezone import date_today, DEADLINE_TZINFO @@ -1090,7 +1091,7 @@ def _generate_ajax_or_redirect_response(request, doc): redirect_url = request.GET.get('next') url_is_safe = is_safe_url(url=redirect_url, allowed_hosts=request.get_host(), require_https=request.is_secure()) - if request.is_ajax(): + if is_ajax(request): return HttpResponse(json.dumps({'success': True}), content_type='application/json') elif url_is_safe: return HttpResponseRedirect(redirect_url) diff --git a/ietf/utils/http.py b/ietf/utils/http.py new file mode 100644 index 000000000..6e6409e31 --- /dev/null +++ b/ietf/utils/http.py @@ -0,0 +1,10 @@ +# Copyright The IETF Trust 2023, All Rights Reserved +# -*- coding: utf-8 -*- + +def is_ajax(request): + """Checks whether a request was an AJAX call + + See https://docs.djangoproject.com/en/3.1/releases/3.1/#id2 - this implements the + exact reproduction of the deprecated method suggested there. + """ + return request.headers.get("x-requested-with") == "XMLHttpRequest"