Browse Source

[Django4 Warning] RemovedInDjango40Warning: django.utils.http.is_safe_url() is deprecated in favor of url_has_allowed_host_and_scheme()

ayush.goyal 4 years ago
parent
commit
d055d364d8
1 changed files with 4 additions and 2 deletions
  1. 4 2
      desktop/core/src/desktop/middleware.py

+ 4 - 2
desktop/core/src/desktop/middleware.py

@@ -43,7 +43,7 @@ from django.core import exceptions
 from django.http import HttpResponseNotAllowed, HttpResponseForbidden
 from django.http import HttpResponseNotAllowed, HttpResponseForbidden
 from django.urls import resolve
 from django.urls import resolve
 from django.http import HttpResponseRedirect, HttpResponse
 from django.http import HttpResponseRedirect, HttpResponse
-from django.utils.http import urlquote, is_safe_url
+from django.utils.http import urlquote
 from django.utils.deprecation import MiddlewareMixin
 from django.utils.deprecation import MiddlewareMixin
 
 
 from hadoop import cluster
 from hadoop import cluster
@@ -65,8 +65,10 @@ from desktop.log.access import access_log, log_page_hit, access_warn
 
 
 if sys.version_info[0] > 2:
 if sys.version_info[0] > 2:
   from django.utils.translation import gettext as _
   from django.utils.translation import gettext as _
+  from django.utils.http import url_has_allowed_host_and_scheme
 else:
 else:
   from django.utils.translation import ugettext as _
   from django.utils.translation import ugettext as _
+  from django.utils.http import is_safe_url as url_has_allowed_host_and_scheme
 
 
 
 
 LOG = logging.getLogger(__name__)
 LOG = logging.getLogger(__name__)
@@ -837,7 +839,7 @@ class EnsureSafeRedirectURLMiddleware(MiddlewareMixin):
       if any(regexp.match(location) for regexp in redirection_patterns):
       if any(regexp.match(location) for regexp in redirection_patterns):
         return response
         return response
 
 
-      if is_safe_url(location, allowed_hosts={request.get_host()}):
+      if url_has_allowed_host_and_scheme(location, allowed_hosts={request.get_host()}):
         return response
         return response
 
 
       if request.path in ['/oidc/authenticate/', '/oidc/callback/', '/oidc/logout/', '/hue/oidc_failed/']:
       if request.path in ['/oidc/authenticate/', '/oidc/callback/', '/oidc/logout/', '/hue/oidc_failed/']: