sp_fr: serialize FormDefRef as str in exports (#47220)

This commit is contained in:
Benjamin Dauvergne 2020-10-01 11:46:09 +02:00
parent 786d3f20a4
commit 17e733f2cc
2 changed files with 7 additions and 8 deletions

View File

@ -644,7 +644,7 @@ class Mapping(models.Model):
def export_json(self):
return {
'procedure': self.procedure,
'formdef': self.formdef,
'formdef': str(self.formdef),
'rules': self.rules,
}

View File

@ -20,7 +20,7 @@ import mock
from passerelle.apps.sp_fr.models import Resource
from passerelle.utils.sftp import SFTP
import passerelle.utils.wcs
from passerelle.utils.wcs import get_wcs_choices, FormDefRef
import utils
@ -56,8 +56,6 @@ def spfr(settings, wcs_host, db, sftpserver):
def test_resource(spfr):
from passerelle.utils.wcs import get_wcs_choices
assert [x[1] for x in get_wcs_choices()] == ['---------', u'D\xe9marches - Demande']
@ -70,11 +68,12 @@ def test_sftp_access(spfr, sftpserver):
def test_import_export(spfr):
mapping = spfr.mappings.create(procedure='DOC', formdef='wcs:formdef1', rules={'a': 'b'})
serialization = spfr.export_json()
spfr.delete()
with mock.patch.object(passerelle.utils.wcs.FormDefRef, 'formdef') as mock_formdef:
# mock FormDefRef.formdef property to prevent w.c.s. API calls
with mock.patch.object(FormDefRef, 'formdef') as mock_formdef:
mock_formdef.__get__ = mock.Mock(return_value=None)
mapping = spfr.mappings.create(procedure='DOC', formdef=FormDefRef('wcs:formdef1'), rules={'a': 'b'})
serialization = spfr.export_json()
spfr.delete()
new_spfr = spfr.__class__.import_json(serialization)
assert (dict(spfr.__dict__, _state=None, id=None, logger=None)
== dict(new_spfr.__dict__, id=None, logger=None, _state=None))