toodego: rs jeunes (#56418)

This commit is contained in:
Emmanuel Cazenave 2021-08-31 10:40:11 +02:00
parent e874c9a818
commit fa2e82792b
1 changed files with 71 additions and 0 deletions

71
toodego-adresse/run.py Normal file
View File

@ -0,0 +1,71 @@
"""
https://dev.entrouvert.org/issues/56418
Usage :
sudo -u wcs wcs-manage runscript -d demarches.toodego.com run.py
"""
from wcs.carddef import CardDef
from wcs.formdef import FormDef
FORM_SLUG = 'demande-de-rs-jeunes'
CARD_SLUG = 'debug-integration-adresse-rsj'
FIELDS_INDEX = {
'adresse': '105',
'numero': '106',
'voie': '107',
'code_postal': '108',
'commune': '109',
'complement': '110',
'insertis': '16'
}
def get_adresse_cache():
res = {}
cardef = CardDef.get_by_urlname(CARD_SLUG)
for carddata in cardef.data_class().select():
data = carddata.get_as_dict()
id_insertis = data['var_id_insertis']
adresse_verifiee_structured = data['var_adresse_verifiee_structured']
res[id_insertis] = adresse_verifiee_structured
return res
def main():
count = 0
adresse_cache = get_adresse_cache()
formdef = FormDef.get_by_urlname(FORM_SLUG)
fields_index = {}
for field in formdef.fields:
fields_index[field.id] = field
for formdata in formdef.data_class().select():
if formdata.status == 'draft':
continue
if formdata.data[FIELDS_INDEX['adresse']] is None:
count += 1
print(formdata.get_backoffice_url())
# do the job
id_insertis = formdata.data[FIELDS_INDEX['insertis']]
if not adresse_cache.get(id_insertis):
raise ValueError()
adresse_data = adresse_cache.get(id_insertis)
formdata.data[FIELDS_INDEX['adresse']] = adresse_data['id']
formdata.data["%s_display" % FIELDS_INDEX['adresse']] = adresse_data['display_name']
formdata.data["%s_structured" % FIELDS_INDEX['adresse']] = adresse_data
if 'house_number' in adresse_data['address']:
formdata.data[FIELDS_INDEX['numero']] = adresse_data['address']['house_number']
formdata.data[FIELDS_INDEX['voie']] = adresse_data['address']['road']
formdata.data[FIELDS_INDEX['code_postal']] = adresse_data['address']['postcode']
formdata.data[FIELDS_INDEX['commune']] = adresse_data['address']['city']
formdata.store()
print(count)
main()