From 298a6aa025af2a768234557002f2ac398b229777 Mon Sep 17 00:00:00 2001
From: Serghei Mihai <smihai@entrouvert.com>
Date: Tue, 2 Jul 2019 10:34:36 +0200
Subject: [PATCH] mdel: do not send french address if the foreign one is filled
 (#33535)

---
 passerelle/contrib/mdel/models.py       | 10 +++++++---
 tests/data/mdel/formdata_aec_deces.json |  1 +
 tests/test_mdel.py                      |  7 +++++++
 3 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/passerelle/contrib/mdel/models.py b/passerelle/contrib/mdel/models.py
index 15e58ff1..9650823b 100644
--- a/passerelle/contrib/mdel/models.py
+++ b/passerelle/contrib/mdel/models.py
@@ -270,7 +270,13 @@ class Demand(models.Model):
             demandeur_adresse_pays_raw = formdata.get('demandeur_adresse_pays_raw')
             demandeur_adresse_etrangere = formdata.get('demandeur_adresse_etrangere')
             if demandeur_adresse_pays_raw and demandeur_adresse_pays_raw != 'FRA':
-                if not demandeur_adresse_etrangere:
+                formdata['demandeur_adresse_etrangere_pays_raw'] = formdata.pop('demandeur_adresse_pays_raw')
+                if demandeur_adresse_etrangere:
+                    # dismiss french address if the foreign one is filled
+                    formdata.pop('demandeur_adresse_voie', None)
+                    formdata.pop('demandeur_adresse_ville', None)
+                    formdata.pop('demandeur_adresse_code_postal', None)
+                else:
                     adresse_etrangere = formdata.pop('demandeur_adresse_voie', '')
                     if formdata.get('demandeur_adresse_ville'):
                         adresse_etrangere += ', %s' % formdata['demandeur_adresse_ville']
@@ -278,8 +284,6 @@ class Demand(models.Model):
                         adresse_etrangere += ', %s' % formdata['demandeur_adresse_code_postal']
                     formdata['demandeur_adresse_etrangere'] = adresse_etrangere
 
-                formdata['demandeur_adresse_etrangere_pays_raw'] = formdata['demandeur_adresse_pays_raw']
-
             # Set aec_nature if aec_type_raw == DECES
             if formdata.get('aec_type_raw') == 'DECES' and not formdata.get('aec_nature_raw'):
                 formdata['aec_nature'] = u'Copie integrale'
diff --git a/tests/data/mdel/formdata_aec_deces.json b/tests/data/mdel/formdata_aec_deces.json
index c41fe72b..0acd7045 100644
--- a/tests/data/mdel/formdata_aec_deces.json
+++ b/tests/data/mdel/formdata_aec_deces.json
@@ -29,6 +29,7 @@
         "demandeur_adresse_pays_raw": "FRA",
         "demandeur_adresse_ville": "Nancy",
         "demandeur_adresse_voie": "Rue de l'Aigle Blanc",
+        "demandeur_adresse_etrangere": "37, Rue de l'Aigle Blanc, 54000 Nancy",
         "demandeur_civilite": "Madame",
         "demandeur_civilite_raw": "Madame",
         "demandeur_email": "chelsea@whatever.com",
diff --git a/tests/test_mdel.py b/tests/test_mdel.py
index ed8d15fe..0e006016 100644
--- a/tests/test_mdel.py
+++ b/tests/test_mdel.py
@@ -147,6 +147,10 @@ def test_create_aec_demand_type(app, setup, aec_payload):
         assert root.find('DemandeActe/Demandeur/AdresseEtrangere/Pays').text == 'Suisse'
         assert root.find('DemandeActe/Demandeur/AdresseEtrangere/Adresse').text == '1, rue de Paris, 3800 Bern, Suisse'
 
+        assert not root.find('DemandeActe/Demandeur/AdresseFrancaise/CodePostal')
+        assert not root.find('DemandeActe/Demandeur/AdresseFrancaise/Ville')
+        assert not root.find('DemandeActe/Demandeur/AdresseFrancaise/Voie')
+
         # Concerned
         assert root.find('DemandeActe/Titulaire/Civilite').text == 'MADAME'
         assert root.find('DemandeActe/Titulaire/Nationalite').text == 'FRA'
@@ -241,6 +245,9 @@ def test_create_aec_demand_type(app, setup, aec_payload):
         assert root.find('DemandeActe/Demandeur/AdresseFrancaise/Ville').text == 'Nancy'
         assert root.find('DemandeActe/Demandeur/AdresseFrancaise/Voie').text == "37 Rue de l'Aigle Blanc"
 
+        assert not root.find('DemandeActe/Demandeur/AdresseEtrangere/Pays')
+        assert not root.find('DemandeActe/Demandeur/AdresseEtrangere/Adresse')
+
         # Concerned
         assert root.find('DemandeActe/Titulaire/Civilite').text == 'MONSIEUR'
         assert root.find('DemandeActe/Titulaire/NomNaissance').text == 'Yamamoto'
-- 
2.20.1

