diff options
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"] | 
