diff --git a/app/but/cursus_but.py b/app/but/cursus_but.py index b9a09f0b4..455355450 100644 --- a/app/but/cursus_but.py +++ b/app/but/cursus_but.py @@ -55,17 +55,23 @@ class SituationEtudCursusBUT(sco_cursus_dut.SituationEtudCursusClassic): def parcours_validated(self): "True si le parcours (ici diplôme BUT) est validé" - # Si année 3 validée, ok - return any( - sco_codes.code_annee_validant(v.code) - for v in ApcValidationAnnee.query.filter_by( - etudid=self.etud.id, - ordre=3, - referentiel_competence_id=self.cur_sem.formation.referentiel_competence_id, - ) + return but_parcours_validated( + self.etud.id, self.cur_sem.formation.referentiel_competence_id ) +def but_parcours_validated(etudid: int, referentiel_competence_id: int) -> bool: + """Détermine si le parcours BUT est validé: + ne regarde que si une validation BUT3 est enregistrée + """ + return any( + sco_codes.code_annee_validant(v.code) + for v in ApcValidationAnnee.query.filter_by( + etudid=etudid, ordre=3, referentiel_competence_id=referentiel_competence_id + ) + ) + + class EtudCursusBUT: """L'état de l'étudiant dans son cursus BUT Liste des niveaux validés/à valider diff --git a/app/tables/jury_recap.py b/app/tables/jury_recap.py index 3b890db9e..96933a210 100644 --- a/app/tables/jury_recap.py +++ b/app/tables/jury_recap.py @@ -84,6 +84,7 @@ class TableJury(TableRecap): autorisations = res.get_autorisations_inscription() if res.is_apc: validations_annee = res.get_validations_annee() + for row in self.rows: etud = row.etud if not res.is_apc: @@ -103,18 +104,31 @@ class TableJury(TableRecap): self.foot_title_row.cells["jury_code_sem"].target_attrs[ "title" ] = """Code jury sur le semestre""" - # Autorisations inscription - row.add_cell( - "autorisations_inscription", - "Passage", - ( - ", ".join("S" + str(i) for i in sorted(autorisations[etud.id])) - if etud.id in autorisations - else "" - ), - group="jury_code_sem", - classes=["recorded_code"], - ) + # Autorisations inscription ou diplôme BUT S6 + if res.is_apc and res.formsemestre.semestre_id == 6: + # on ne vérifie le diplôme que dans ce cas pour ne pas ralentir + if cursus_but.but_parcours_validated( + etud.id, res.formsemestre.formation.referentiel_competence_id + ): + row.add_cell( + "autorisations_inscription", + "Passage", + "Diplôme obtenu", + group="jury_code_sem", + classes=["recorded_code"], + ) + else: + row.add_cell( + "autorisations_inscription", + "Passage", + ( + ", ".join("S" + str(i) for i in sorted(autorisations[etud.id])) + if etud.id in autorisations + else "" + ), + group="jury_code_sem", + classes=["recorded_code"], + ) if res.is_apc: # BUT validation_annee = validations_annee.get(etud.id, None) row.add_cell(