Projet

Général

Profil

0001-mdel-construct-a-foreign-addres-from-french-addres-f.patch

Benjamin Dauvergne, 26 septembre 2019 21:09

Télécharger (5,94 ko)

Voir les différences:

Subject: [PATCH] mdel: construct a foreign addres from french addres fields
 (#33826)

- use etage and batiment fields
- correctly put the postal code before the city name
- check the address is correct in the tests
 passerelle/apps/mdel/models.py          | 32 ++++++++++++++++---------
 tests/data/mdel/formdata_aec_naiss.json |  9 +++----
 tests/test_mdel.py                      |  2 +-
 3 files changed, 27 insertions(+), 16 deletions(-)
passerelle/apps/mdel/models.py
267 267
            formdata['demandeur_adresse_voie'] = '%s %s' % (formdata.get('demandeur_adresse_num', ''),
268 268
                                                            formdata.get('demandeur_adresse_voie'))
269 269
            # Set foreign address if country is not France
270
            adresse_keys = ['etage', 'batiment', 'voie', 'code_postal', 'ville']
271
            adresse_keys = ['demandeur_adresse_%s' % key for key in adresse_keys]
270 272
            demandeur_adresse_pays_raw = formdata.get('demandeur_adresse_pays_raw')
271 273
            demandeur_adresse_etrangere = formdata.get('demandeur_adresse_etrangere')
272
            if demandeur_adresse_pays_raw and demandeur_adresse_pays_raw != 'FRA':
273
                formdata['demandeur_adresse_etrangere_pays_raw'] = formdata.pop('demandeur_adresse_pays_raw')
274
            demandeur_adresse_etrangere_pays_raw = formdata.get('demandeur_adresse_etrangere_pays_raw')
275
            if (demandeur_adresse_etrangere_pays_raw
276
                    or (demandeur_adresse_pays_raw and demandeur_adresse_pays_raw != 'FRA')):
277
                formdata.pop('demandeur_adresse_pays_raw')
278
                if not demandeur_adresse_etrangere_pays_raw:
279
                    formdata['demandeur_adresse_etrangere_pays_raw'] = demandeur_adresse_pays_raw
274 280
                if demandeur_adresse_etrangere:
275 281
                    # dismiss french address if the foreign one is filled
276
                    formdata.pop('demandeur_adresse_voie', None)
277
                    formdata.pop('demandeur_adresse_ville', None)
278
                    formdata.pop('demandeur_adresse_code_postal', None)
282
                    for key in adresse_keys:
283
                        if key in formdata:
284
                            del formdata[key]
279 285
                else:
280
                    adresse_etrangere = formdata.pop('demandeur_adresse_voie', '')
281
                    if formdata.get('demandeur_adresse_ville'):
282
                        adresse_etrangere += ', %s' % formdata['demandeur_adresse_ville']
283
                    if formdata.get('demandeur_adresse_code_postal'):
284
                        adresse_etrangere += ', %s' % formdata['demandeur_adresse_code_postal']
285
                    formdata['demandeur_adresse_etrangere'] = adresse_etrangere
286
                    # build foreign address from french address fields
287
                    adresse_etrangere = []
288
                    for key in adresse_keys:
289
                        value = formdata.pop(key, '')
290
                        if value:
291
                            if key != 'demandeur_adresse_ville':
292
                                adresse_etrangere.append(value)
293
                            else:
294
                                adresse_etrangere[-1] += ' %s' % value
295
                    formdata['demandeur_adresse_etrangere'] = ', '.join(adresse_etrangere)
286 296

  
287 297
            # Set aec_nature if aec_type_raw == DECES
288 298
            if formdata.get('aec_type_raw') == 'DECES' and not formdata.get('aec_nature_raw'):
tests/data/mdel/formdata_aec_naiss.json
25 25
    "fields": {
26 26
        "aec_nature": "Copie int\u00e9grale",
27 27
        "aec_nature_raw": "COPIE-INTEGRALE",
28
        "demandeur_adresse_code_postal": "54000",
28
        "demandeur_adresse_etage": "3ème",
29
        "demandeur_adresse_batiment": "Bâtiment B",
30
        "demandeur_adresse_code_postal": "3800",
29 31
        "demandeur_adresse_num": "37",
30 32
        "demandeur_adresse_pays_raw": "Suisse",
31
        "demandeur_adresse_ville": "Nancy",
32
        "demandeur_adresse_voie": "Rue de l'Aigle Blanc",
33
        "demandeur_adresse_ville": "Bern",
34
        "demandeur_adresse_voie": "rue de Paris",
33 35
        "demandeur_civilite": "Madame",
34 36
        "demandeur_civilite_raw": "Madame",
35 37
        "demandeur_email": "chelsea@whatever.com",
36 38
        "demandeur_nom": "Whatever",
37 39
        "demandeur_prenom": "Chelsea",
38 40
        "demandeur_telephone": "0122334455",
39
        "demandeur_adresse_etrangere": "1, rue de Paris, 3800 Bern, Suisse",
40 41
        "motif_demande": "Certificat de nationalit\u00e9 fran\u00e7aise",
41 42
        "motif_demande_raw": "CertificatDeNationaliteFrancaise",
42 43
        "nombre_exemplaires": "2",
tests/test_mdel.py
161 161
        assert root.find('DemandeActe/Demandeur/Telephone').text == '0122334455'
162 162
        assert root.find('DemandeActe/Demandeur/QualiteDemandeur/Code').text == 'Fils'
163 163
        assert root.find('DemandeActe/Demandeur/AdresseEtrangere/Pays').text == 'Suisse'
164
        assert root.find('DemandeActe/Demandeur/AdresseEtrangere/Adresse').text == '1, rue de Paris, 3800 Bern, Suisse'
164
        assert root.find('DemandeActe/Demandeur/AdresseEtrangere/Adresse').text == '3ème, Bâtiment B, 37 rue de Paris, 3800 Bern'
165 165

  
166 166
        assert not root.find('DemandeActe/Demandeur/AdresseFrancaise/CodePostal')
167 167
        assert not root.find('DemandeActe/Demandeur/AdresseFrancaise/Ville')
168
-