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..05a89507f 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", @@ -242,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.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.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.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 - ), # 12. Date de signature + ), # 16. Date de signature ( convention.lot.logements.first().loyer_par_metre_carre if convention.lot.logements.first() else "" - ), # 13. Montant du loyer au m2 - stringify_date(convention.programme.date_achevement_compile), # 14. Livraison + ), # 17. Montant du loyer au m2 + stringify_date(convention.programme.date_achevement_compile), # 18. Livraison stringify_date( convention.date_fin_conventionnement - ), # 15. 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 6547573a5..917666ff5 100644 --- a/conventions/tests/services/test_utils.py +++ b/conventions/tests/services/test_utils.py @@ -26,32 +26,35 @@ 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 header = get_convention_export_excel_header(request) - assert header[7] == "Bailleur" - assert len(header) == 15 + assert len(header) == 19 @pytest.mark.django_db @@ -78,11 +81,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", @@ -93,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): 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