admin: allow copy of webservice responses between tests (#88752) #1392
|
@ -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)
|
||||
|
|
|
@ -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']
|
||||
|
|
|
@ -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 %}
|
||||
|
|
Loading…
Reference in New Issue