Skip to content

Commit

Permalink
Fix pytest
Browse files Browse the repository at this point in the history
  • Loading branch information
syldb committed Jan 22, 2025
1 parent 3745c2d commit 1de0ab9
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 37 deletions.
14 changes: 3 additions & 11 deletions conventions/forms/convention_form_logements.py
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,7 @@ class BaseLogementFormSet(BaseFormSet):
programme_id: int = None
lot_id: int = None
nb_logements: int = None
total_nb_logements: int = None
optional_errors: list = []
ignore_optional_errors = False

Expand All @@ -377,17 +378,8 @@ def clean(self):
if self.ignore_optional_errors:
return
self.optional_errors = []
self.manage_non_empty_validation()
self.manage_nb_logement_consistency()

def manage_non_empty_validation(self):
"""
Validation: la liste des logements ne peut pas être vide
"""
if len(self.forms) == 0:
error = ValidationError("La liste des logements ne peut pas être vide")
self.optional_errors.append(error)

def manage_designation_validation(self):
"""
Validation: les designations de logement doivent être uniques par convention
Expand Down Expand Up @@ -474,10 +466,10 @@ def manage_nb_logement_consistency(self):
Validation: le nombre de logements déclarés pour cette convention à l'étape Opération
doit correspondre au nombre de logements de la liste à l'étape Logements
"""
if self.nb_logements != self.total_form_count():
if self.nb_logements != self.total_nb_logements:
error = ValidationError(
f"Le nombre de logement à conventionner ({self.nb_logements}) "
+ f"ne correspond pas au nombre de logements déclaré ({self.total_form_count()})"
+ f"ne correspond pas au nombre de logements déclaré ({self.total_nb_logements})"
)
self.optional_errors.append(error)

Expand Down
6 changes: 5 additions & 1 deletion conventions/services/logements.py
Original file line number Diff line number Diff line change
Expand Up @@ -425,13 +425,15 @@ def _logements_atomic_update(self):
"corrigee_sans_loyer-TOTAL_FORMS": nb_logements_corrigee_sans_loyer,
"corrigee_sans_loyer-INITIAL_FORMS": nb_logements_corrigee_sans_loyer,
}
total_nb_logements = nb_logements + nb_logements_sans_loyer + nb_logements_corrigee + nb_logements_corrigee_sans_loyer
self.formset = LogementFormSet(initformset, prefix="avec_loyer")
self.formset.programme_id = self.convention.programme_id
self.formset.lot_id = self.convention.lot.id
self.formset.nb_logements = int(self.request.POST.get("nb_logements") or 0)
self.formset.ignore_optional_errors = self.request.POST.get(
"ignore_optional_errors", False
)
self.formset.total_nb_logements = total_nb_logements
self.formset_sans_loyer = LogementSansLoyerFormSet(
initformset_sans_loyer, prefix="sans_loyer"
)
Expand All @@ -443,6 +445,7 @@ def _logements_atomic_update(self):
self.formset_sans_loyer.ignore_optional_errors = self.request.POST.get(
"ignore_optional_errors", False
)
self.formset_sans_loyer.total_nb_logements = total_nb_logements
self.formset_corrigee = LogementCorrigeeFormSet(
initformset_corrigee, prefix="corrigee_avec_loyer"
)
Expand All @@ -454,7 +457,7 @@ def _logements_atomic_update(self):
self.formset_corrigee.ignore_optional_errors = self.request.POST.get(
"ignore_optional_errors", False
)

self.formset_corrigee.total_nb_logements = total_nb_logements
self.formset_corrigee_sans_loyer = LogementCorrigeeSansLoyerFormSet(
initformset_corrigee_sans_loyer, prefix="corrigee_sans_loyer"
)
Expand All @@ -466,6 +469,7 @@ def _logements_atomic_update(self):
self.formset_corrigee_sans_loyer.ignore_optional_errors = self.request.POST.get(
"ignore_optional_errors", False
)
self.formset_corrigee_sans_loyer.total_nb_logements = total_nb_logements

formset_is_valid = self.formset.is_valid()
formset_sans_loyer_is_valid = self.formset_sans_loyer.is_valid()
Expand Down
54 changes: 30 additions & 24 deletions conventions/tests/fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,30 +75,36 @@
}

logement_success_payload = {
"form-TOTAL_FORMS": "2",
"form-INITIAL_FORMS": "2",
"form-0-uuid": "",
"form-0-designation": "B1",
"form-0-typologie": "T1",
"form-0-surface_habitable": "12.12",
"form-0-surface_annexes": "45.57",
"form-0-surface_annexes_retenue": "0.00",
"form-0-surface_utile": "30.00",
"form-0-loyer_par_metre_carre": "4.5",
"form-0-coeficient": "1.0000",
"form-0-loyer": "135.00",
"form-0-import_order": "0",
"form-1-uuid": "",
"form-1-designation": "B2",
"form-1-typologie": "T1",
"form-1-surface_habitable": "30.00",
"form-1-surface_annexes": "0.00",
"form-1-surface_annexes_retenue": "0.00",
"form-1-surface_utile": "30.00",
"form-1-loyer_par_metre_carre": "4.5",
"form-1-coeficient": "1.0000",
"form-1-loyer": "135.00",
"form-1-import_order": "1",
"avec_loyer-TOTAL_FORMS": "2",
"avec_loyer-INITIAL_FORMS": "2",
"avec_loyer-0-uuid": "",
"avec_loyer-0-designation": "B1",
"avec_loyer-0-typologie": "T1",
"avec_loyer-0-surface_habitable": "12.12",
"avec_loyer-0-surface_annexes": "45.57",
"avec_loyer-0-surface_annexes_retenue": "0.00",
"avec_loyer-0-surface_utile": "30.00",
"avec_loyer-0-loyer_par_metre_carre": "4.5",
"avec_loyer-0-coeficient": "1.0000",
"avec_loyer-0-loyer": "135.00",
"avec_loyer-0-import_order": "0",
"avec_loyer-1-uuid": "",
"avec_loyer-1-designation": "B2",
"avec_loyer-1-typologie": "T1",
"avec_loyer-1-surface_habitable": "30.00",
"avec_loyer-1-surface_annexes": "0.00",
"avec_loyer-1-surface_annexes_retenue": "0.00",
"avec_loyer-1-surface_utile": "30.00",
"avec_loyer-1-loyer_par_metre_carre": "4.5",
"avec_loyer-1-coeficient": "1.0000",
"avec_loyer-1-loyer": "135.00",
"avec_loyer-1-import_order": "1",
"sans_loyer-TOTAL_FORMS": "0",
"sans_loyer-INITIAL_FORMS": "0",
"corrigee_avec_loyer-TOTAL_FORMS": "0",
"corrigee_avec_loyer-INITIAL_FORMS": "0",
"corrigee_sans_loyer-TOTAL_FORMS": "0",
"corrigee_sans_loyer-INITIAL_FORMS": "0",
"loyer_derogatoire": "10",
"surface_locaux_collectifs_residentiels": "25",
"lgts_mixite_sociale_negocies": "2",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
class Migration(migrations.Migration):

dependencies = [
("programmes", "0117_alter_lot_financement"),
("programmes", "0120_lot_unique_convention_financement_and_more"),
]

operations = [
Expand Down
1 change: 1 addition & 0 deletions templates/conventions/common/form_logements.html
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ <h4>Logements associés à la convention</h4>
</div>
</div>
{% if convention.is_avenant %}
<!-- C'est dommage d'ignorer les optional errors ici, mais sinon ça pose problème lorsqu'on décoche une section avec des logements et qu'on trigger une optionnal error : il faudrait garder l'info que la case est décochée (gestion de l'état) -->
<input type="hidden" id="id_ignore_optional_errors" name="ignore_optional_errors" value="1"/>
<div class="fr-toggle fr-mb-2w">
<input type="checkbox" {% if formset_sans_loyer.total_form_count > 0 %}checked="checked"{% endif %} class="fr-toggle__input" aria-describedby="toggle-4633-messages" id="toggle-utile-sans-loyer">
Expand Down

0 comments on commit 1de0ab9

Please sign in to comment.