admin: allow copy of webservice responses between tests (#88752) #1392

Merged
vdeniaud merged 1 commits from wip/88752-testdef-permettre-le-copier-vers into main 2024-04-15 10:23:02 +02:00
3 changed files with 57 additions and 1 deletions

View File

@ -1457,6 +1457,21 @@ def test_tests_webservice_response(pub):
assert 'must start with http://' in resp.text
testdef2 = TestDef.create_from_formdata(formdef, formdata)
testdef.name = 'Second test'
testdef2.store()
resp = app.get('/backoffice/forms/1/tests/%s/webservice-responses/' % testdef2.id)
assert 'Test response' not in resp.text
resp = resp.click('Import from other test')
resp.form['testdef_id'] = testdef.id
resp = resp.form.submit().follow()
assert 'Test response' in resp.text
assert len(testdef.get_webservice_responses()) == 1
assert len(testdef2.get_webservice_responses()) == 1
def test_tests_test_users_management(pub):
create_superuser(pub)

View File

@ -876,7 +876,7 @@ class WebserviceResponsePage(Directory):
class WebserviceResponseDirectory(Directory):
_q_exports = ['', 'new']
_q_exports = ['', 'new', ('import', 'p_import')]
def __init__(self, testdef):
self.testdef = testdef
@ -926,6 +926,46 @@ class WebserviceResponseDirectory(Directory):
return redirect(self.testdef.get_admin_url() + 'webservice-responses/%s/' % webservice_response.id)
def p_import(self):
form = Form(enctype='multipart/form-data')
testdef_options = [
(x.id, x, x.id)
for x in TestDef.select_for_objectdef(self.testdef.formdef)
if x.id != self.testdef.id
]
form.add(
SingleSelectWidget,
'testdef_id',
required=False,
options=testdef_options,
**{'data-autocomplete': 'true'},
)
form.add_submit('submit', _('Import'))
form.add_submit('cancel', _('Cancel'))
if form.get_submit() == 'cancel':
return redirect('.')
if not form.is_submitted() or form.has_errors():
get_response().breadcrumb.append(('import', _('Import')))
get_response().set_title(_('Import webservice responses'))
r = TemplateIO(html=True)
r += htmltext('<h2>%s</h2>') % _('Import webservice responses')
r += form.render()
return r.getvalue()
testdef_id = form.get_widget('testdef_id').parse()
testdef = TestDef.get(testdef_id)
for response in testdef.get_webservice_responses():
response.id = None
response.testdef_id = self.testdef.id
response.store()
return redirect('.')
class TestUserPage(Directory):
_q_exports = ['', 'delete']

View File

@ -6,6 +6,7 @@
{% block sidebar-content %}
<h3>{% trans "Actions" %}</h3>
<a class="button button-paragraph" href="new" rel="popup">{% trans "New" %}</a>
<a class="button button-paragraph" href="import" rel="popup">{% trans "Import from other test" %}</a>
{% endblock %}
{% block body %}