diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-03-26 15:07:19 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-10-15 19:32:59 +0200 |
commit | ae5bd7720b27ebf3790c50d1b1e6c95edbc089cf (patch) | |
tree | 531a86368283408f4fe40864619d4d42371f96bd /ishtar_common | |
parent | e89868b074912e4dfcb79dd16af1f78e4782033e (diff) | |
download | Ishtar-ae5bd7720b27ebf3790c50d1b1e6c95edbc089cf.tar.bz2 Ishtar-ae5bd7720b27ebf3790c50d1b1e6c95edbc089cf.zip |
♻️ django 3.2 deprecation: replace is_ajax by custom method
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/context_processors.py | 5 | ||||
-rw-r--r-- | ishtar_common/utils.py | 8 | ||||
-rw-r--r-- | ishtar_common/views.py | 6 |
3 files changed, 15 insertions, 4 deletions
diff --git a/ishtar_common/context_processors.py b/ishtar_common/context_processors.py index 5442b08fe..af0c1aff4 100644 --- a/ishtar_common/context_processors.py +++ b/ishtar_common/context_processors.py @@ -27,9 +27,10 @@ from django.contrib.sites.models import Site from django.urls import reverse from django.utils.translation import gettext_lazy as _, get_language -from ishtar_common.version import __version__ from ishtar_common.models import get_current_profile from ishtar_common.models_rest import ApiExternalSource, ApiKeyMatch +from ishtar_common.utils import is_xmlhttprequest +from ishtar_common.version import __version__ from bootstrap_datepicker.widgets import DatePicker from .menus import Menu @@ -103,7 +104,7 @@ def get_base_context(request): dct["SITE_PROFILE"] = get_current_profile() - is_main_page = not request.is_ajax() and not getattr(request, "is_js", False) + is_main_page = not is_xmlhttprequest(request) and not getattr(request, "is_js", False) # messages dct["MESSAGES"] = [] if ( diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index bd20e4919..c503c42b9 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -917,6 +917,14 @@ def is_downloadable(curl): return True +def is_xmlhttprequest(request): + """ + Replace "is_ajax". + Be careful: do not work with Fetch API. + """ + return request.headers.get('x-requested-with') == 'XMLHttpRequest' + + def get_file_from_link(file_link): """ return filename and temp_file object from a web link diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 50c16419c..e37136bcd 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -93,6 +93,7 @@ from ishtar_common.utils import ( put_session_message, get_model_by_slug, human_date, + is_xmlhttprequest ) from ishtar_common.widgets import JQueryAutoComplete from ishtar_common import tasks @@ -771,7 +772,7 @@ def unpin(request, item_type, cascade=False): def update_current_item(request, item_type=None, pk=None): if not item_type or not pk: - if not request.is_ajax() and not request.method == "POST": + if not is_xmlhttprequest(request) and not request.method == "POST": raise Http404 item_type = request.POST["item"] if "value" in request.POST and "item" in request.POST: @@ -842,7 +843,8 @@ def pin_search(request, item_type): item_type = "administrativeact" key = "pin-search-" + item_type if not item_type or not ( - request.is_ajax() and request.method == "POST" and "value" in request.POST + is_xmlhttprequest(request) and request.method == "POST" + and "value" in request.POST ): raise Http404 request.session[key] = request.POST["value"] |