backoffice: warn on slug change on card model/form import (#57034) #972
|
@ -1543,7 +1543,10 @@ def test_form_import(pub):
|
|||
resp = app.get('/backoffice/forms/')
|
||||
resp = resp.click(href='import')
|
||||
resp.forms[0]['file'] = Upload('formdef.wcs', formdef_xml)
|
||||
resp = resp.forms[0].submit()
|
||||
resp = resp.forms[0].submit().follow()
|
||||
assert 'This form has been successfully imported.' in resp.text
|
||||
assert 'The form identifier (form-title) was already used by another form.' in resp.text
|
||||
assert 'A new one has been generated (form-title-1).' in resp.text
|
||||
assert FormDef.count() == 2
|
||||
assert FormDef.get(1).url_name == 'form-title'
|
||||
assert FormDef.get(2).url_name == 'form-title-1'
|
||||
|
|
|
@ -1802,6 +1802,10 @@ class FormsDirectory(AccessControlled, Directory):
|
|||
'you should nevertheless check everything is ok. '
|
||||
'Do note it is disabled by default.'
|
||||
)
|
||||
import_slug_change = _(
|
||||
'The form identifier (%(slug)s) was already used by another form. '
|
||||
'A new one has been generated (%(newslug)s).'
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
@ -1995,6 +1999,17 @@ class FormsDirectory(AccessControlled, Directory):
|
|||
form.set_error('file', msg)
|
||||
raise ValueError()
|
||||
|
||||
if hasattr(formdef, '_import_orig_slug'):
|
||||
get_session().message = (
|
||||
'warning',
|
||||
'%s %s'
|
||||
% (
|
||||
get_session().message[1],
|
||||
self.import_slug_change
|
||||
% {'slug': formdef._import_orig_slug, 'newslug': formdef.url_name},
|
||||
),
|
||||
)
|
||||
|
||||
self.imported_formdef = formdef
|
||||
formdef.disabled = True
|
||||
formdef.store()
|
||||
|
|
|
@ -184,6 +184,10 @@ class CardsDirectory(FormsDirectory):
|
|||
'Imported card model contained errors and has been automatically fixed, '
|
||||
'you should nevertheless check everything is ok. '
|
||||
)
|
||||
import_slug_change = _(
|
||||
'The card model identifier (%(slug)s) was already used by another card model. '
|
||||
'A new one has been generated (%(newslug)s).'
|
||||
)
|
||||
|
||||
def get_extra_index_context_data(self):
|
||||
context = super().get_extra_index_context_data()
|
||||
|
|
|
@ -1392,6 +1392,7 @@ class FormDef(StorableObject):
|
|||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
formdef._import_orig_slug = formdef.url_name
|
||||
formdef.url_name = formdef.get_new_url_name()
|
||||
|
||||
# check if all field id are unique
|
||||
|
@ -1864,6 +1865,8 @@ class FormDef(StorableObject):
|
|||
del odict['fields']
|
||||
if '_custom_views' in odict:
|
||||
del odict['_custom_views']
|
||||
if '_import_orig_slug' in odict:
|
||||
del odict['_import_orig_slug']
|
||||
return odict
|
||||
|
||||
def __setstate__(self, dict):
|
||||
|
|
Loading…
Reference in New Issue