diff --git a/app/comp/res_but.py b/app/comp/res_but.py index 7e1d481af..b9efebabf 100644 --- a/app/comp/res_but.py +++ b/app/comp/res_but.py @@ -273,7 +273,7 @@ class ResultatsSemestreBUT(NotesTableCompat): Se base sur le parcours dans ce semestre, et le référentiel de compétences. Note: il n'est pas nécessairement inscrit à toutes ces UEs. Ensemble vide si pas de référentiel. - + Si l'étudiant n'est pas inscrit dans un parcours, toutes les UEs du semestre. La requête est longue, les ue_ids par parcour sont donc cachés. """ parcour_id = self.etuds_parcour_id[etudid] @@ -283,16 +283,19 @@ class ResultatsSemestreBUT(NotesTableCompat): ref_comp = self.formsemestre.formation.referentiel_competence if ref_comp is None: return set() - parcour: ApcParcours = ApcParcours.query.get(parcour_id) - annee = (self.formsemestre.semestre_id + 1) // 2 - niveaux = ApcNiveau.niveaux_annee_de_parcours(parcour, annee, ref_comp) - # Les UEs du formsemestre associées à ces niveaux: - ues_parcour = self.formsemestre.formation.query_ues_parcour(parcour) - ues_ids = set() - for niveau in niveaux: - ue = ues_parcour.filter(UniteEns.niveau_competence == niveau).first() - if ue: - ues_ids.add(ue.id) + if parcour_id is None: + ues_ids = {ue.id for ue in self.ues} + else: + parcour: ApcParcours = ApcParcours.query.get(parcour_id) + annee = (self.formsemestre.semestre_id + 1) // 2 + niveaux = ApcNiveau.niveaux_annee_de_parcours(parcour, annee, ref_comp) + # Les UEs du formsemestre associées à ces niveaux: + ues_parcour = self.formsemestre.formation.query_ues_parcour(parcour) + ues_ids = set() + for niveau in niveaux: + ue = ues_parcour.filter(UniteEns.niveau_competence == niveau).first() + if ue: + ues_ids.add(ue.id) # memoize self.ues_ids_by_parcour[parcour_id] = ues_ids