misc-bdauvergne/cd13/migrate-reponse-type/dump-cd13.py

52 lines
1.9 KiB
Python

import json
import sys
output_filename = sys.argv[1]
print('output to', output_filename)
thematique_slug = '13ave-thematiques'
dispositif_slug = '13ave-dispositifs'
reponse_type_slug = '13ave-dga-p-reponses-types'
from wcs.carddef import CardDef
data = {}
Thematique = CardDef.get_by_urlname(thematique_slug).data_class()
Dispositif = CardDef.get_by_urlname(dispositif_slug).data_class()
ReponseType = CardDef.get_by_urlname(reponse_type_slug).data_class()
data['thematique'] = [{
'digest': thematique.digest,
'name': thematique.data[thematique.formdef.fields[0].id]
} for thematique in Thematique.select()]
dispositifs = Dispositif.select()
for dispositif in dispositifs:
# reconstruct 2_display
field_id = str(dispositif.formdef.fields[1].id)
dispositif.data[field_id + '_display'] = dispositif.formdef.fields[1].store_display_value(dispositif.data, field_id)
dispositif.set_auto_fields()
data['dispositif'] = [{
'digest': dispositif.digest,
'name': dispositif.data[dispositif.formdef.fields[0].id],
'thematique': dispositif.data[dispositif.formdef.fields[1].id + '_display'],
} for dispositif in dispositifs]
data['reponse_type'] = []
for reponse_type in ReponseType.select():
# reconstruct 2_display
field_id = str(reponse_type.formdef.fields[1].id)
reponse_type.data[field_id + '_display'] = reponse_type.formdef.fields[1].store_display_value(reponse_type.data, field_id)
data['reponse_type'].append({
'digest': reponse_type.digest + str(reponse_type.data[reponse_type.formdef.fields[1].id + '_display']),
'title': reponse_type.data[reponse_type.formdef.fields[0].id],
'dispositif': reponse_type.data[reponse_type.formdef.fields[1].id + '_display'],
'message': reponse_type.data[reponse_type.formdef.fields[2].id],
})
with open(output_filename, 'w') as fd:
json.dump(data, fd, indent=2)