From 24541ec29cb5df23f4b01f3a17dc7e0f1c1a09f9 Mon Sep 17 00:00:00 2001 From: Virginia Dooley Date: Fri, 12 Aug 2022 17:46:31 +0100 Subject: [PATCH] is_safe_url deprecated in django 4.0 --- dc_signup_form/views.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/dc_signup_form/views.py b/dc_signup_form/views.py index 429a1cf..f585e82 100644 --- a/dc_signup_form/views.py +++ b/dc_signup_form/views.py @@ -1,6 +1,5 @@ from django.contrib import messages from django.urls import reverse, NoReverseMatch -from django.utils.http import is_safe_url from django.views.generic import FormView from .backends import ( LocalDbBackend, @@ -9,6 +8,13 @@ ) +def get_http(request, host): + try: + from django.utils.http import is_safe_url + return is_safe_url(request, host) + except ImportError: + from django.utils.http import url_has_allowed_host_and_scheme + return url_has_allowed_host_and_scheme(request, host) class SignupFormView(FormView): mailing_lists = [ 'main_list', 'election_reminders' @@ -42,9 +48,9 @@ def get_success_url(self): election_reminders_signup_view = '' try: - source_url_safe = is_safe_url(source_url, allowed_hosts=None) + source_url_safe = get_http(source_url, allowed_hosts=None) except TypeError: - source_url_safe = is_safe_url(source_url) + source_url_safe = get_http(source_url) if source_url_safe and\ source_url != mailing_list_signup_view and\ source_url != election_reminders_signup_view: