From f333975ec58d6db22dfe47972ae8a47f6a3c8d0d Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Thu, 28 Sep 2023 17:26:10 +0200 Subject: [PATCH] =?UTF-8?q?Tableau=20suivi=20cohortes:=20prend=20en=20comp?= =?UTF-8?q?te=20la=20d=C3=A9cision=20annuelle=20et=20non=20semestrielle=20?= =?UTF-8?q?en=20BUT.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scodoc/sco_report.py | 98 ++++++++++++++++++++++------------------ sco_version.py | 2 +- 2 files changed, 54 insertions(+), 46 deletions(-) diff --git a/app/scodoc/sco_report.py b/app/scodoc/sco_report.py index a558bce12..203865eb7 100644 --- a/app/scodoc/sco_report.py +++ b/app/scodoc/sco_report.py @@ -524,11 +524,11 @@ def table_suivi_cohorte( # 3-- Regroupe les semestres par date de debut P = [] # liste de periodsem - class periodsem(object): + class PeriodSem: pass # semestre de depart: - porigin = periodsem() + porigin = PeriodSem() d, m, y = [int(x) for x in sem["date_debut"].split("/")] porigin.datedebut = datetime.datetime(y, m, d) porigin.sems = [sem] @@ -543,7 +543,7 @@ def table_suivi_cohorte( merged = True break if not merged: - p = periodsem() + p = PeriodSem() p.datedebut = s["date_debut_dt"] p.sems = [s] P.append(p) @@ -743,7 +743,7 @@ def formsemestre_suivi_cohorte( civilite=None, statut="", only_primo=False, -): +) -> str: """Affiche suivi cohortes par numero de semestre""" annee_bac = str(annee_bac or "") annee_admission = str(annee_admission or "") @@ -794,14 +794,6 @@ def formsemestre_suivi_cohorte( '

Afficher les résultats en pourcentages

' % burl ) - help = ( - pplink - + """ -

Nombre d'étudiants dans chaque semestre. Les dates indiquées sont les dates approximatives de début des semestres (les semestres commençant à des dates proches sont groupés). Le nombre de diplômés est celui à la fin du semestre correspondant. Lorsqu'il y a moins de %s étudiants dans une case, vous pouvez afficher leurs noms en passant le curseur sur le chiffre.

-

Les menus permettent de n'étudier que certaines catégories d'étudiants (titulaires d'un type de bac, garçons ou filles). La case "restreindre aux primo-entrants" permet de ne considérer que les étudiants qui n'ont jamais été inscrits dans ScoDoc avant le semestre considéré.

- """ - % (MAX_ETUD_IN_DESCR,) - ) H = [ html_sco_header.sco_header(page_title=tab.page_title), @@ -824,7 +816,20 @@ def formsemestre_suivi_cohorte( percent=percent, ), t, - help, + f"""{pplink} +

Nombre d'étudiants dans chaque semestre. + Les dates indiquées sont les dates approximatives de début des semestres + (les semestres commençant à des dates proches sont groupés). Le nombre de diplômés + est celui à la fin du semestre correspondant. + Lorsqu'il y a moins de {MAX_ETUD_IN_DESCR} étudiants dans une case, vous pouvez + afficher leurs noms en passant le curseur sur le chiffre. +

+

Les menus permettent de n'étudier que certaines catégories + d'étudiants (titulaires d'un type de bac, garçons ou filles). + La case "restreindre aux primo-entrants" permet de ne considérer que les étudiants + qui n'ont jamais été inscrits dans ScoDoc avant le semestre considéré. +

+ """, expl, html_sco_header.sco_footer(), ] @@ -870,35 +875,33 @@ def _gen_form_selectetuds( else: selected = 'selected="selected"' F = [ - """
+ f"""

Bac: ") if bacspecialite: selected = "" else: selected = 'selected="selected"' F.append( - """  Bac/Specialité: + """ - % selected ) for b in bacspecialites: if bacspecialite == b: selected = 'selected="selected"' else: selected = "" - F.append('' % (b, selected, b)) + F.append(f'') F.append("") # F.append( @@ -910,46 +913,44 @@ def _gen_form_selectetuds( ) # F.append( - """  Genre: + """ - % selected ) for b in civilites: if civilite == b: selected = 'selected="selected"' else: selected = "" - F.append('' % (b, selected, b)) + F.append(f'') F.append("") F.append( - """  Statut: + """ - % selected ) for b in statuts: if statut == b: selected = 'selected="selected"' else: selected = "" - F.append('' % (b, selected, b)) + F.append(f'') F.append("") - if only_primo: - checked = 'checked="1"' - else: - checked = "" F.append( - '
Restreindre aux primo-entrants' - % checked + f"""
+ Restreindre aux primo-entrants + + + +

+
+ """ ) - F.append( - '' % formsemestre_id - ) - F.append('' % percent) - F.append("

") + return "\n".join(F) @@ -964,7 +965,7 @@ def _gen_select_annee(field, values, value) -> str: return menu_html + "" -def _descr_etud_set(etudids): +def _descr_etud_set(etudids) -> str: "textual html description of a set of etudids" etuds = [] for etudid in etudids: @@ -980,15 +981,22 @@ def _count_dem_reo(formsemestre_id, etudids): "count nb of demissions and reorientation in this etud set" formsemestre = FormSemestre.get_formsemestre(formsemestre_id) nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre) - + validations_annuelles = nt.get_validations_annee() if nt.is_apc else {} dems = set() reos = set() for etudid in etudids: if nt.get_etud_etat(etudid) == "D": dems.add(etudid) - dec = nt.get_etud_decision_sem(etudid) - if dec and dec["code"] in codes_cursus.CODES_SEM_REO: - reos.add(etudid) + if nt.is_apc: + # BUT: utilise les validations annuelles + validation = validations_annuelles.get(etudid) + if validation and validation.code in codes_cursus.CODES_SEM_REO: + reos.add(etudid) + else: + # Autres formations: validations de semestres + dec = nt.get_etud_decision_sem(etudid) + if dec and dec["code"] in codes_cursus.CODES_SEM_REO: + reos.add(etudid) return dems, reos diff --git a/sco_version.py b/sco_version.py index 7ab85f240..68196cdec 100644 --- a/sco_version.py +++ b/sco_version.py @@ -1,7 +1,7 @@ # -*- mode: python -*- # -*- coding: utf-8 -*- -SCOVERSION = "9.6.37" +SCOVERSION = "9.6.38" SCONAME = "ScoDoc"