From e5e1de35f6ef844e3dc7d44317efbecd41f9970a Mon Sep 17 00:00:00 2001 From: "adrien.abescat" Date: Tue, 23 Dec 2025 16:47:33 +0100 Subject: [PATCH 1/4] ajout de colonnes dans export excel tableau conventions --- conventions/models/convention.py | 12 ++++++++++++ conventions/services/utils.py | 24 ++++++++++++++---------- siap/siap_client/client.py | 2 ++ 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/conventions/models/convention.py b/conventions/models/convention.py index 90fce4c68..6dfc6e27a 100644 --- a/conventions/models/convention.py +++ b/conventions/models/convention.py @@ -421,6 +421,18 @@ def get_financement_display(self): [str(lot.get_financement_display()) for lot in self.lots.all()] ) + @property + def get_adresse_display(self): + if None in (self.adresse, self.programme.code_postal, self.programme.ville): + return "" + return ( + self.adresse + + ", " + + self.programme.code_postal + + " " + + self.programme.ville + ) + @property def get_financements(self): return [lot.financement for lot in self.lots.all()] diff --git a/conventions/services/utils.py b/conventions/services/utils.py index 9a4107a59..01bfc92c9 100644 --- a/conventions/services/utils.py +++ b/conventions/services/utils.py @@ -221,11 +221,15 @@ def get_convention_export_excel_header(request): "Statut de la convention", "Commune", "Code postal", + "Code INSEE", "Nom de l'opération", - "Instructeur" if request.user.is_instructeur else "Bailleur", + "Instructeur", "Type de financement", "Nombre de logements", "Nature de l'opération", + "Adresse", + "Raison sociale du bailleur", + "SIRET du Bailleur", "Date de signature", "Montant du loyer au m2", "Livraison", @@ -247,27 +251,27 @@ def get_convention_export_excel_row(request, convention): convention.statut, # 4. statut de la convention convention.programme.ville, # 5. Commune convention.programme.code_postal, # 6. Code postal + convention.programme.code_insee_commune, # 6. Code INSEE de la commune convention.programme.nom, # 7. Nom de l'opération - ( - convention.programme.administration.nom - if request.user.is_instructeur - else convention.programme.bailleur.nom - ), # 8. Instructeur or Bailleur + convention.programme.administration.nom, # 8. Instructeur convention.lot.get_financement_display(), # 9. Type de financement convention.lot.nb_logements, # 10. Nombre de logements - convention.programme.nature_logement, # 11. Nature de l'opération dans programme + convention.programme.nature_logement, # 11. Nature de l'opération dans le programme + convention.get_adresse_display, # 12. Adresse + convention.programme.bailleur.nom, # 13. Raison sociale du bailleur + convention.programme.bailleur.siret, # 13. SIRET du Bailleur stringify_date( convention.televersement_convention_signee_le - ), # 12. Date de signature + ), # 14. Date de signature ( convention.lot.logements.first().loyer_par_metre_carre if convention.lot.logements.first() else "" - ), # 13. Montant du loyer au m2 + ), # 15. Montant du loyer au m2 stringify_date(convention.programme.date_achevement_compile), # 14. Livraison stringify_date( convention.date_fin_conventionnement - ), # 15. Date de fin de conventionnement + ), # 16. Date de fin de conventionnement ] diff --git a/siap/siap_client/client.py b/siap/siap_client/client.py index 814a3bc62..a08cb457f 100644 --- a/siap/siap_client/client.py +++ b/siap/siap_client/client.py @@ -323,6 +323,8 @@ def get_fusion( habilitation_id=habilitation_id, ) + # Cette route n'est à n'utiliser qu'à des fins de debug car + # le chargement de toutes les alertes consomme énormément de ressources @validate_response(error_message="user can't access alertes") def list_alertes( self, user_login: str, habilitation_id: int = 0 From e7d57126d1c9c82581214a2e220809af433fa41d Mon Sep 17 00:00:00 2001 From: "adrien.abescat" Date: Tue, 23 Dec 2025 16:51:07 +0100 Subject: [PATCH 2/4] correction mumeration --- conventions/services/utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/conventions/services/utils.py b/conventions/services/utils.py index 01bfc92c9..07076deed 100644 --- a/conventions/services/utils.py +++ b/conventions/services/utils.py @@ -259,19 +259,19 @@ def get_convention_export_excel_row(request, convention): convention.programme.nature_logement, # 11. Nature de l'opération dans le programme convention.get_adresse_display, # 12. Adresse convention.programme.bailleur.nom, # 13. Raison sociale du bailleur - convention.programme.bailleur.siret, # 13. SIRET du Bailleur + convention.programme.bailleur.siret, # 14. SIRET du Bailleur stringify_date( convention.televersement_convention_signee_le - ), # 14. Date de signature + ), # 15. Date de signature ( convention.lot.logements.first().loyer_par_metre_carre if convention.lot.logements.first() else "" - ), # 15. Montant du loyer au m2 + ), # 16. Montant du loyer au m2 stringify_date(convention.programme.date_achevement_compile), # 14. Livraison stringify_date( convention.date_fin_conventionnement - ), # 16. Date de fin de conventionnement + ), # 17. Date de fin de conventionnement ] From b020d44946055c64ddc4e102bd65e23f4ddddc6c Mon Sep 17 00:00:00 2001 From: "adrien.abescat" Date: Mon, 29 Dec 2025 11:09:18 +0100 Subject: [PATCH 3/4] correction tests --- conventions/services/utils.py | 6 +++--- conventions/tests/services/test_utils.py | 12 ++++++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/conventions/services/utils.py b/conventions/services/utils.py index 07076deed..e89b26d9a 100644 --- a/conventions/services/utils.py +++ b/conventions/services/utils.py @@ -257,7 +257,7 @@ def get_convention_export_excel_row(request, convention): convention.lot.get_financement_display(), # 9. Type de financement convention.lot.nb_logements, # 10. Nombre de logements convention.programme.nature_logement, # 11. Nature de l'opération dans le programme - convention.get_adresse_display, # 12. Adresse + convention.get_adresse_display(), # 12. Adresse convention.programme.bailleur.nom, # 13. Raison sociale du bailleur convention.programme.bailleur.siret, # 14. SIRET du Bailleur stringify_date( @@ -268,10 +268,10 @@ def get_convention_export_excel_row(request, convention): if convention.lot.logements.first() else "" ), # 16. Montant du loyer au m2 - stringify_date(convention.programme.date_achevement_compile), # 14. Livraison + stringify_date(convention.programme.date_achevement_compile), # 17. Livraison stringify_date( convention.date_fin_conventionnement - ), # 17. Date de fin de conventionnement + ), # 18. Date de fin de conventionnement ] diff --git a/conventions/tests/services/test_utils.py b/conventions/tests/services/test_utils.py index 6547573a5..5a2494afc 100644 --- a/conventions/tests/services/test_utils.py +++ b/conventions/tests/services/test_utils.py @@ -26,25 +26,29 @@ def test_get_convention_export_excel_header(): header = get_convention_export_excel_header(request) - expected_header_instructeur = [ + expected_header = [ "Numéro d'opération SIAP", "Numéro de convention", "Numéro d'avenant", "Statut de la convention", "Commune", "Code postal", + "Code INSEE", "Nom de l'opération", "Instructeur", "Type de financement", "Nombre de logements", "Nature de l'opération", + "Adresse", + "Raison sociale du bailleur", + "SIRET du Bailleur", "Date de signature", "Montant du loyer au m2", "Livraison", "Date de fin de conventionnement", ] - assert header == expected_header_instructeur + assert header == expected_header user.is_instructeur = False request.user = user @@ -78,11 +82,15 @@ def test_get_convention_export_excel_row(): convention.statut, convention.programme.ville, convention.programme.code_postal, + convention.programme.code_insee_commune, convention.programme.nom, convention.programme.administration.nom, convention.lot.get_financement_display(), convention.lot.nb_logements, convention.programme.nature_logement, + convention.get_adresse_display(), + convention.programme.bailleur.nom, + convention.programme.bailleur.siret, "-", logement.loyer_par_metre_carre, "11/04/2024", From 4570b9f566d9b9a0d431403a02bc925e46eb7db3 Mon Sep 17 00:00:00 2001 From: "adrien.abescat" Date: Mon, 29 Dec 2025 11:50:59 +0100 Subject: [PATCH 4/4] correction tests --- conventions/services/utils.py | 28 ++++++++++++------------ conventions/tests/services/test_utils.py | 9 ++++---- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/conventions/services/utils.py b/conventions/services/utils.py index e89b26d9a..05a89507f 100644 --- a/conventions/services/utils.py +++ b/conventions/services/utils.py @@ -246,32 +246,32 @@ def get_convention_export_excel_row(request, convention): convention.numero if convention.numero and not convention.parent else (convention.parent.numero if convention.parent else "") - ), # 1. Numéro de convention + ), # 2. Numéro de convention convention.numero if convention.parent else "", # 3. Numéro d'avenant convention.statut, # 4. statut de la convention convention.programme.ville, # 5. Commune convention.programme.code_postal, # 6. Code postal - convention.programme.code_insee_commune, # 6. Code INSEE de la commune - convention.programme.nom, # 7. Nom de l'opération - convention.programme.administration.nom, # 8. Instructeur - convention.lot.get_financement_display(), # 9. Type de financement - convention.lot.nb_logements, # 10. Nombre de logements - convention.programme.nature_logement, # 11. Nature de l'opération dans le programme - convention.get_adresse_display(), # 12. Adresse - convention.programme.bailleur.nom, # 13. Raison sociale du bailleur - convention.programme.bailleur.siret, # 14. SIRET du Bailleur + convention.programme.code_insee_commune, # 7. Code INSEE de la commune + convention.programme.nom, # 8. Nom de l'opération + convention.programme.administration.nom, # 9. Instructeur + convention.lot.get_financement_display(), # 10. Type de financement + convention.lot.nb_logements, # 11. Nombre de logements + convention.programme.nature_logement, # 12. Nature de l'opération dans le programme + convention.get_adresse_display, # 13. Adresse + convention.programme.bailleur.nom, # 14. Raison sociale du bailleur + convention.programme.bailleur.siret, # 15. SIRET du Bailleur stringify_date( convention.televersement_convention_signee_le - ), # 15. Date de signature + ), # 16. Date de signature ( convention.lot.logements.first().loyer_par_metre_carre if convention.lot.logements.first() else "" - ), # 16. Montant du loyer au m2 - stringify_date(convention.programme.date_achevement_compile), # 17. Livraison + ), # 17. Montant du loyer au m2 + stringify_date(convention.programme.date_achevement_compile), # 18. Livraison stringify_date( convention.date_fin_conventionnement - ), # 18. Date de fin de conventionnement + ), # 19. Date de fin de conventionnement ] diff --git a/conventions/tests/services/test_utils.py b/conventions/tests/services/test_utils.py index 5a2494afc..917666ff5 100644 --- a/conventions/tests/services/test_utils.py +++ b/conventions/tests/services/test_utils.py @@ -54,8 +54,7 @@ def test_get_convention_export_excel_header(): request.user = user header = get_convention_export_excel_header(request) - assert header[7] == "Bailleur" - assert len(header) == 15 + assert len(header) == 19 @pytest.mark.django_db @@ -88,7 +87,7 @@ def test_get_convention_export_excel_row(): convention.lot.get_financement_display(), convention.lot.nb_logements, convention.programme.nature_logement, - convention.get_adresse_display(), + convention.get_adresse_display, convention.programme.bailleur.nom, convention.programme.bailleur.siret, "-", @@ -101,9 +100,9 @@ def test_get_convention_export_excel_row(): request.user = user row = get_convention_export_excel_row(request, convention) - assert len(row) == 15 + assert len(row) == 19 - assert row[7] == convention.programme.bailleur.nom + assert row[13] == convention.programme.bailleur.nom class UtilsTest(ParametrizedTestCase, SimpleTestCase):