Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions conventions/models/convention.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()]
Expand Down
34 changes: 19 additions & 15 deletions conventions/services/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

c'est mieux d'afficher les deux : siret et siren, car certains conventions ne contiennent que l'un des deux.

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
]


Expand Down
19 changes: 13 additions & 6 deletions conventions/tests/services/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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",
Expand All @@ -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):
Expand Down
2 changes: 2 additions & 0 deletions siap/siap_client/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down