backoffice: add message after form/card is overwritten (#35642)

This commit is contained in:
Frédéric Péters 2019-08-31 20:09:05 +02:00
parent 26f5321cad
commit dae1829c8c
3 changed files with 13 additions and 4 deletions

View File

@ -1911,6 +1911,8 @@ def test_form_overwrite(pub):
resp.forms[0]['file'] = Upload('formdef.wcs', formdef_xml)
resp = resp.forms[0].submit()
assert FormDef.get(formdef_id).fields[0].label == '1st modified field'
resp = resp.follow()
assert 'The form has been successfully overwritten.' in resp.body
# check with added/removed field
formdef = FormDef()

View File

@ -363,6 +363,9 @@ class FormDefPage(Directory):
overwrite_message = N_(
'You can replace this form by uploading a file '
'or by pointing to a form URL.')
overwrite_success_message = N_(
'The form has been successfully overwritten. '
'Do note it kept its existing address and role and workflow parameters.')
def __init__(self, component):
try:
@ -1006,8 +1009,7 @@ class FormDefPage(Directory):
# it's been through the summary page.
if form.get_widget('force').parse():
# doing it!
self.overwrite_by_formdef(new_formdef)
return redirect('.')
return self.overwrite_by_formdef(new_formdef)
# 1. map field id and types
current_fields = {}
@ -1030,8 +1032,7 @@ class FormDefPage(Directory):
return self.overwrite_warning_summary(new_formdef,
removed_fields, different_type_fields)
self.overwrite_by_formdef(new_formdef)
return redirect('.')
return self.overwrite_by_formdef(new_formdef)
def overwrite_by_formdef(self, new_formdef):
# keep current formdef id, url_name, internal identifier and sql table name
@ -1042,12 +1043,15 @@ class FormDefPage(Directory):
# keep currently assigned category and workflow
new_formdef.category_id = self.formdef.category_id
new_formdef.workflow_id = self.formdef.workflow_id
new_formdef.workflow_options = self.formdef.workflow_options
# keep currently assigned roles
new_formdef.workflow_roles = self.formdef.workflow_roles
new_formdef.backoffice_submission_roles = self.formdef.backoffice_submission_roles
new_formdef.roles = self.formdef.roles
self.formdef = new_formdef
self.formdef.store()
get_session().message = ('info', _(self.overwrite_success_message))
return redirect('.')
def overwrite_warning_summary(self, new_formdef, removed_fields, different_type_fields):
self.html_top(title = _('Overwrite'))

View File

@ -48,6 +48,9 @@ class CardDefPage(FormDefPage):
overwrite_message = N_(
'You can replace this card by uploading a file '
'or by pointing to a form URL.')
overwrite_success_message = N_(
'The card has been successfully overwritten. '
'Do note it kept its existing address and role and workflow parameters.')
def html_top(self, title):
return html_top('cards', title)