testdef: do not store inside import method (#88755)

This commit is contained in:
Valentin Deniaud 2024-03-28 10:46:35 +01:00
parent f5419a2fa7
commit c883b48e28
4 changed files with 11 additions and 7 deletions

View File

@ -78,6 +78,7 @@ def test_testdef_export_to_xml(pub):
WebserviceResponse.wipe()
testdef2 = TestDef.import_from_xml(io.BytesIO(testdef_xml), formdef)
testdef2.store()
assert testdef2.name == 'test'
assert testdef2.object_type == 'formdefs'
assert testdef2.object_id == str(formdef.id)

View File

@ -434,6 +434,7 @@ class TestsDirectory(Directory):
form.set_error('file', _('Invalid File'))
raise e
testdef.store()
get_session().message = ('info', _('Test "%s" has been successfully imported.') % testdef.name)
return redirect('.')

View File

@ -1768,7 +1768,8 @@ class FormDef(StorableObject):
from .testdef import TestDef
for testdef in self.xml_testdefs:
TestDef.import_from_xml_tree(testdef, self)
obj = TestDef.import_from_xml_tree(testdef, self)
obj.store()
def get_detailed_email_form(self, formdata, url):
r = ''

View File

@ -169,6 +169,13 @@ class TestDef(sql.TestDef):
self.workflow_tests.testdef = self
self.workflow_tests.store()
if hasattr(self, '_webservice_responses'):
# first store after import, attach webservice responses
for response in self._webservice_responses:
response.testdef_id = self.id
response.store()
del self._webservice_responses
@classmethod
def remove_object(cls, id):
super().remove_object(id)
@ -563,12 +570,6 @@ class TestDef(sql.TestDef):
if hasattr(testdef_xml, field):
setattr(testdef, field, getattr(testdef_xml, field))
testdef.store()
for response in testdef._webservice_responses:
response.testdef_id = testdef.id
response.store()
return testdef