backoffice: redirect to card page on cancel (#55359)

This commit is contained in:
Frédéric Péters 2021-07-04 22:14:18 +02:00
parent e84887a930
commit f88df5fb43
3 changed files with 14 additions and 7 deletions

View File

@ -128,6 +128,10 @@ def test_carddata_management(pub):
resp = resp.click('foo')
assert resp.text.count('<tr') == 2 # header + row of data
resp = resp.click('Add')
resp = resp.form.submit('cancel')
assert resp.location.endswith('/backoffice/data/foo/')
def test_carddata_management_categories(pub):
user = create_user(pub)

View File

@ -303,6 +303,9 @@ class CardFillPage(FormFillPage):
if self.formdef.user_support == 'optional':
self.has_user_support = True
def get_default_return_url(self):
return '%s/data/%s/' % (get_publisher().get_backoffice_url(), self.formdef.url_name)
def redirect_after_submitted(self, form, filled):
if get_request().form.get('_popup'):
popup_response_data = json.dumps(
@ -316,10 +319,7 @@ class CardFillPage(FormFillPage):
context={'popup_response_data': popup_response_data},
is_django_native=True,
)
result = super().redirect_after_submitted(form, filled)
if get_response().get_header('location').endswith('/backoffice/submission/'):
return redirect('..')
return result
return super().redirect_after_submitted(form, filled)
def create_form(self, *args, **kwargs):
form = super().create_form(*args, **kwargs)

View File

@ -152,6 +152,9 @@ class FormFillPage(PublicFormFillPage):
response = self.get_lateral_block()
return response
def get_default_return_url(self):
return '%s/submission/' % get_publisher().get_backoffice_url()
def get_transient_formdata(self, magictoken=Ellipsis):
formdata = super().get_transient_formdata(magictoken=magictoken)
if self.selected_user_id:
@ -325,7 +328,7 @@ class FormFillPage(PublicFormFillPage):
filled = self.get_current_draft() or self.formdef.data_class()()
if filled.id and filled.status != 'draft':
get_session().message = ('error', _('This form has already been submitted.'))
return redirect(get_publisher().get_backoffice_url() + '/submission/')
return redirect(self.get_default_return_url())
filled.just_created()
filled.data = self.formdef.get_data(form)
magictoken = get_request().form['magictoken']
@ -357,14 +360,14 @@ class FormFillPage(PublicFormFillPage):
if filled.submission_context and filled.submission_context.get('return_url'):
url = filled.submission_context['return_url']
else:
url = get_publisher().get_backoffice_url() + '/submission/'
url = self.get_default_return_url()
else:
url = filled.get_url(backoffice=True)
return redirect(url)
def cancelled(self):
url = get_publisher().get_backoffice_url() + '/submission/'
url = self.get_default_return_url()
formdata = self.get_current_draft() or self.formdef.data_class()()
if formdata.submission_context and formdata.submission_context.get('return_url'):
url = formdata.submission_context.get('return_url')