Cancel url for GAS views

This commit is contained in:
Ales (Shagi) Zabala Alava 2022-02-01 09:49:16 +01:00
parent c79dbc7cfa
commit 1d300c0b71
2 changed files with 10 additions and 3 deletions

View File

@ -20,7 +20,7 @@
<ul class="actions"> <ul class="actions">
{% block form_actions %} {% block form_actions %}
{% if not is_popup %} {% if not is_popup %}
<li><a href="{{ view.get_success_url }}">{% trans "Cancel" %}</a></li> <li><a href="{{ view.get_cancel_url }}">{% trans "Cancel" %}</a></li>
{% endif %} {% endif %}
<li><button type="submit">{% trans "Save" %}</button> <li><button type="submit">{% trans "Save" %}</button>

View File

@ -6,7 +6,6 @@ from django.core.exceptions import ImproperlyConfigured
from django.db import router from django.db import router
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseBadRequest from django.http import HttpResponse, HttpResponseRedirect, HttpResponseBadRequest
from django.urls import reverse from django.urls import reverse
from django.utils.encoding import force_text
from django.utils.html import escape, escapejs from django.utils.html import escape, escapejs
from django.utils.text import capfirst from django.utils.text import capfirst
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@ -107,10 +106,18 @@ class GASMixin:
def get_success_message(self): def get_success_message(self):
return self.success_message return self.success_message
def get_cancel_url(self):
if self.cancel_url:
# Forcing possible reverse_lazy evaluation
url = str(self.cancel_url)
return url
else:
return self.get_success_url()
def get_continue_url(self): def get_continue_url(self):
if self.continue_url: if self.continue_url:
# Forcing possible reverse_lazy evaluation # Forcing possible reverse_lazy evaluation
url = force_text(self.continue_url) url = str(self.continue_url)
return url return url
else: else:
raise ImproperlyConfigured("No URL to redirect to. Provide a continue_url.") raise ImproperlyConfigured("No URL to redirect to. Provide a continue_url.")